• redis主从+哨兵+集群模式搭建详解


    一、redis主从安装

    1. 下载redis

    Download | Redis

    我这里选择的是redis-6.2.7版本

    这里三台机器,都需要安装redis

    node1 192.168.157.128

    node2 192.168.157.129

    node3 192.168.157.130

    2. 安装redis

    1. # 解压redis
    2. tar -zxvf redis-6.2.7.tar.gz
    3. # 编译安装
    4. cd redis-6.2.7
    5. make

    3. 修改配置

    node1 主 node2 node3从

    node1 redis.conf

    1. bind 192.168.157.128
    2. port 6379
    3. daemonize yes
    4. logfile ./logs/redis_6379.log
    5. pidfile ./pid/redis_6379.pid
    6. requirepass 123456
    7. masterauth 123456

    node2

    1. bind 192.168.157.129
    2. port 6379
    3. daemonize yes
    4. logfile ./logs/redis_6379.log
    5. pidfile ./pid/redis_6379.pid
    6. replicaof 192.168.157.128 6379
    7. requirepass 123456
    8. masterauth 123456

    node3

    1. bind 192.168.157.130
    2. port 6379
    3. daemonize yes
    4. logfile ./logs/redis_6379.log
    5. pidfile ./pid/redis_6379.pid
    6. replicaof 192.168.157.128 6379
    7. requirepass 123456
    8. masterauth 123456

    4. 相关解释

    bind 为当前主机的地址

    port 为redis启动的端口

    daemonize 是否为后台启动,默认为no

    logfile 日志路径

    pidfile pid路径

    replicaof 主节点ip  port

    requirepass redis的密码

    masterauth 主节点密码

    5. 启动redis

    1. # 在redis.conf文件目录下
    2. ./src/redis-server redis.conf

    查看日志文件输出,可以看到129和130已经同步完成。

    6. 测试

    在node1的redis中存数据,查看node2,node3中是否存在。

    使用redis-cli 连接redis 

    1. # h 主机地址 p 端口号 a 密码
    2. redis-cli -h 192.168.157.128 -p 6379 -a 123456
    3. # 也可以进入之后使用auth 123456 来认证
    4. redis-cli -h 192.168.157.128 -p 6379
    5. auth 123456

    从节点输入命令 info replication 查看

     主节点node1中设置set name jack

    从节点可以get name

     从节点只能读不能写

     7. 注意

    • 主节点可以写,从节点不能写,只能读。主节点中的所有数据都会保存到从节点中去。
    • 主节点断开连接,从节点依旧连接到主节点的,但是没有写操作,这个时候,主节点如果回来了,从节点依旧可以直接获取到主节点写的信息!
    • 如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主节点!只要变为从节点,立马就会从主节点中获取值!

    8. 主从复制原理

    • Slave 启动成功连接到 master 后会发送一个sync同步命令。
    • Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
    • 全量复制: slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
    • 增量复制: Master 继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行! 主节点的数据一定可以在从节点中看到。
       

    二、 Redis 哨兵模式

    1. 配置sentinel.conf文件

    1. port 26379
    2. protected-mode no
    3. daemonize yes
    4. logfile ./logs/sentinel.log
    5. sentinel monitor redis-master 192.168.157.128 6379 2
    6. sentinel auth-pass redis-master 123456
    7. sentinel down-after-milliseconds redis-master 3000
    8. sentinel failover-timeout redis-master 180000

    port 哨兵模式的端口号

    protected-mode 保护模式,外部是否可以访问,这是设置为no,外部可以访问

    daemonize 设置后台启动

    logfile 日志文件

    sentinel monitor 执行服务器ip和端口,并且指定当有2台哨兵认为主节点挂了,则对主节点进行容灾切换

    sentinel auth-pass 主节点对应的密码

    sentinel down-after-milliseconds 主节点多久每反应则认为挂了

    sentinel failover-timeout 故障转移超时时间(毫秒)

    2. 分别启动三台服务器上的哨兵

    1. # 在sentinel.conf目录下,启动哨兵
    2. ./src/redis-sentinel sentinel.conf

    3. 查看sentinel.log日志

    可以看到启动成功,并且成功监听 master

    4. 查看sentinel信息

     5. Redis 容灾切换模拟

    将node1 redis服务停掉

    可以看到redis-master的状态先变成down,然后重新选择一个master,192.168.157.130成为新的主节点

     重新启动192.168.157.128节点的redis,查看sentinel.log信息,可以看到此时128节点的redis变成了slave 从节点了。

     三、redis集群模式

    这里选择每台机器启动两个redis服务,端口分别为7001和7002

    1. 准备redis工作目录

    1. #创建redis01 redis02目录
    2. mkdir redis01 redis02
    3. #将redis复制到redis01和redis02
    4. cp -R redis-6.2.7/ redis01/
    5. cp -R redis-6.2.7/ redis02/
    6. #删除rdb文件
    7. rm -rf redis01/dump.rdb
    8. rm -rf redis02/dump.rdb

    2. 修改配置

    redis.conf

    1. bind 192.168.157.129
    2. port 7001
    3. daemonize yes
    4. logfile "./logs/redis_7001.log"
    5. pidfile "./pid/redis_7001.pid"
    6. requirepass "123456"
    7. masterauth "123456"
    8. dir "/opt/apps/redis01/data"
    9. cluster-enabled yes
    10. cluster-node-timeout 10100
    11. appendonly yes

    主要增加了cluster-enabled yes 这个配置,表示开启集群

    3. 启动每个redis

    ./src/redis-server redis.conf

    4. 创建redis集群

    在任意一台机器上执行创建集群命令

    1. ./src/redis-cli --cluster create \
    2. 192.168.157.128:7001 192.168.157.128:7002 \
    3. 192.168.157.129:7001 192.168.157.129:7002 \
    4. 192.168.157.130:7001 192.168.157.130:7002 \
    5. --cluster-replicas 1 -a 123456

    --cluster-replicas 1 表示一主一从

    -a 是密码

    创建完成的打印信息 

    5. 查看集群信息

    1. #连接 -c 以集群模式连接
    2. ./src/redis-cli -h 192.168.157.128 -c -p 7001 -a 123456
    3. #查看节点信息
    4. cluster nodes

     存数据和取数据都会告诉你在哪个槽哪个服务上

    当我们手动停掉一个master时,会重新选一个master,而那个停掉的master重新启动后成为slave节点。

     至此集群搭建完成。

  • 相关阅读:
    Linux小程序---进度条
    编译原理13:SLR(1)分析表、LR(1)分析表
    布隆过滤器
    Centos7 SSH登陆慢的解决办法
    企业经营异常查询API:保障供应链的可靠性与稳定性
    [附源码]计算机毕业设计JAVAjsp茶园认养管理平台
    Google悄悄发布了名为NotebookLM的AI教育产品
    用4年8个月熬出头!成功入职阿里巴巴,涨薪14K(Java)
    在微信小程序中怎么做投票活动
    The First项目报告:Stargate Finance重塑跨链金融的未来
  • 原文地址:https://blog.csdn.net/axibazZ/article/details/127057006