redis哨兵模式下的高可用集群

redis哨兵模式下的高可用集群 

  1. redis哨兵模式说明 

 

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 

redis+sentinel实现redis高可用。sentinel监控redis节点状态、完成故障转移,如果主节点挂了,将随机选取一个从节点作为主节点,当原主节点恢复正常时,就会变成从节点;因为客户端无法获取redis节点变化、所以客户端需要通过sentinel节点来获取redis的连接 

需三台服务器,ip分别为192.168.64.132、192.168.64.135192.168..64.134,一开始配置的时候先将192.168.64.132作为主节点 

我这里设置为一主两从,master 地址为 192.168.64.132 
两个 slave 地址分别为192.168.64.135  192.168.64.134 

注:部署时ip视具体情况而定,三台服务器之间能够相互访问 

2、软件安装 

$ sudo apt update 

 

$ sudo apt install -y redis-server redis-tools redis-sentinel 

 

3、配置数据节点文件 

  • 三台服务器上同时操作:在用户家目录下(/home/hongpu)新建redis_sentinel目录,将默认的redis配置文件/etc/redis/redis.conf拷贝过来,重命名为redis-16379.conf 

$ sudo cp /etc/redis/redis.conf  /home/hongpu/redis_sentinel/redis-16379.conf 

 

  • 找到主节点(192.168.64.132)配置文件redis-16379.conf里的如下行并做相应修改: sudo vim redis-16379.conf 

daemonize yes 

port 16379 

bind 0.0.0.0 

pidfile  /var/run/redis/redis-16379.pid 

logfile  /var/log/redis/redis-16379.log 

dbfilename  dump-16379.rdb 

dir  /var/lib/redis 

timeout 0 

databases 16 

masterauth  hongpu8192 

requirepass  hongpu8192 

save”  #取消持久化保存5 

maxmemory 8gb #最大使用内存配置 >=5G 

protected-mode no #关闭保护模式 

 

 

  • 从节点1(192.168.64.134)、从节点2(192.168.64.135)配置文件redis-16379.conf需修改内容如下: 

daemonize yes 

port 16379 

bind 0.0.0.0 

pidfile  /var/run/redis/redis-16379.pid 

logfile  /var/log/redis/redis-16379.log 

dbfilename  dump-16379.rdb 

dir  /var/lib/redis 

timeout 0 

databases 16 

masterauth  hongpu8192 

requirepass  hongpu8192 

slaveof 192.168.64.132 16379 

save “”#取消持久化保存 

maxmemory 8gb #最大使用内存配置 >=5G 

protected-mode no #关闭保护模式 

 

 

4、redi-server启动验证 

  • 使用如下命令按照132,135,134顺序在三台服务器上分别启动redis服务: 

$ sudo redis-server  /home/hongpu/redis_sentinel/redis-16379.conf 

  • 查看redis启动进程: 

 ps -ef|grep redis 

 

  • 确认主从关系: 

$ redis-cli -h 192.168.64.132 -p 16379 -a hongpu8192 info replication 

 

5、redis-sentinel监控部署实现自动故障切换 

  • 三台服务器上同时操作:将默认的sentinel配置文件/etc/redis/sentinel.conf拷贝至用户/home/hongpu/redis_sentinel/下,并重命名为sentinel-16380.conf 

$ sudo cp /etc/redis/sentinel.conf  /home/hongpu/redis_sentinel/sentinel-16380.conf 

  • 三个节点配置文件sentinel-16380.conf需修改的内容完全一样,如下: 

bind 0.0.0.0 

port 16380 

daemonize yes 

sentinel monitor mymaster 192.168.64.132 16379 2 

sentinel auth-pass mymaster hongpu8192 

sentinel down-after-milliseconds mymaster 3000 

sentinel failover-timeout mymaster 180000 

sentinel parallel-syncs mymaster 1 

logfile /var/log/redis/sentinel-16380.log 

dir /var/lib/redis 

 

sentinel monitor mymaster 192.168.64.132 16379 2  必须放在sentinel 其他配置前面,否则报错: 

 

 

 

6、redis-sentinel启动验证 

  • 使用如下命令在三台服务器上分别启动redis-sentinel服务: 

$ sudo redis-sentinel  /home/hongpu/redis_sentinel/sentinel-16380.conf 

  • redis-sentinel确认: 

$  

 

 

7、配置redis-serverredis-sentinel开机自动启动 

编辑三台服务器/etc/rc.local文件 

$ sudo vim /etc/rc.local 

在exit 0这行前添加内容如下: 

/usr/bin/sudo /usr/bin/redis-server /home/hongpu/redis_sentinel/redis-16379.conf 

/usr/bin/sudo /usr/bin/redis-sentinel /home/hongpu/redis_sentinel/sentinel-16380.conf 

 

 

posted @ 2022-02-25 14:56  Mr沈  阅读(69)  评论(0编辑  收藏  举报