JAVA技术文章

redis的sentinel哨兵3节点failover主从复制

2017-12-07  本文已影响20人  rejoice001

1、

安装3个linux节点

参照单机版的安装: http://blog.csdn.net/jiongyi1/article/details/78114709

分别是centos1,centos2,centos3

并且在3台机器配置/etc/hosts文件:

192.168.56.2 centos1

192.168.56.3 centos2

192.168.56.4 centos3

2、

配置读写分离

假设centos1是master,

那么只需要在centos2和centos3的6379.conf配置:

slaveof masterip masterport

开启6379端口

参考:centos7永久开放端口

firewall-cmd --zone=public --add-port=6379/tcp --permanent

Then remember to reload the firewall for changes to take effect.

firewall-cmd --reload

3、

配置3个sentinel,实现failover

创建目录

mkdir /etc/sentinel #sentinel.conf配置文件存储目录

mkdir -p /var/sentinel/5000 #sentinel存储数据目录

mkdir -p /var/log/redis #日志存放目录

复制sentinel.conf

cp sentinel.conf /etc/sentinel/5000.conf

编辑5000.conf

port 5000 #默认是26379

bind centos1 #配置真实ip也可以,另外2台为centos2、centos3

daemonize yes

后台运行

logfile /var/log/redis/sentinel_5000.log #日志文件

dir /var/sentinel/5000 #数据存储目录

sentinel monitor mymaster centos1 6379 2 #centos1 为redis(非sentinel)的master

sentinel down-after-milliseconds mymaster 30000 #sentinel 与redis master失联超时时间,超过即sdown(主观)

sentinel failover-timeout mymaster 60000 #slave 升级为master的超时时间,具体含义见文档(我也不清楚,包括1、slave 向新的master同步数据,2、所有slave更新master信息、3、取消slave变为 master(slave还没完全执行完slaveof no one))

sentinel parallel-syncs mymaster 1 # 执行failover(salve to master)时,同时最多有多少个slave向新的master同步数据,数量越多,failover时间越长

开启5000端口

firewall-cmd --zone=public --add-port=5000/tcp --permanent

Then remember to reload the firewall for changes to take effect.

firewall-cmd --reload

经过以上就配置完成了

3、

启动哨兵进程

在centos1,centos2,centos3三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出

下面2种方式都可

redis-sentinel /etc/sentinel/5000.conf

redis-server /etc/sentinel/5000.conf --sentinel

日志里会显示出来,每个哨兵都能去监控到对应的redis master,并能够自动发现对应的slave

哨兵之间,互相会自动进行发现,用的就是之前说的pub/sub,消息发布和订阅channel消息系统和机制

4、检查哨兵状态

redis-cli -h centos1 -p 5000

sentinel master mymaster

SENTINEL slaves mymaster

SENTINEL sentinels mymaster

SENTINEL get-master-addr-by-name mymaster

上一篇下一篇

猜你喜欢

热点阅读