【Redis主从架构】搭建经典的3节点哨兵集群
1. 哨兵配置文件
位于redis解压根目录下:sentinel.conf
最小配置
每一个哨兵都可以去监控多个master-slaves的主从架构
因为生产环境一般会部署多个master-slaves的redis主从集群
相同的一套哨兵集群,可以去监控不同的多个redis主从集群。
你可以给每个redis主从集群分配一个逻辑的名称:
sentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
1.1 sentinel monitor mymaster 192.168.0.102 6379 2
指定一个master的监控,给监控的master指定一个名称,指定监控的IP地址和端口号,2表示qronum。
quorum详解:
至少需要quorum个哨兵一致同意,master进程挂掉了,获取slave进程挂掉了,获取要启动一个故障转移操作。
quorum是用来识别故障的,真正执行故障转移的时候,还要在哨兵集群执行选举,选举一个哨兵进程出来进行故障转移操作。
假如有5个哨兵,quorum设置了2,那么5个哨兵中的2个都认为master挂掉了,master才会认为是odown了。就会从2个哨兵中的选举一个哨兵,来执行故障转移。如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会别允许执行。
1.2 sentinel down-after-milliseconds
超过多少毫秒跟一个redis实例端口了连接,哨兵就可能认为redis实例挂掉了。
1.3 sentinel failover-timeout
执行故障转移的timeout的超时时长,如果限定时长内没有完成故障转移,就会认为执行故障转移失败,就从剩下的哨兵选择一个哨兵从新执行故障转移。
1.4 sentinel parallel-syncs
新的master切换之后,允许同时有多少个slave被切换到去连接新的master,重新做同步,数字越低,花费的事件就越高。
假如你的redis是1个master,4个slave
然后你的master宕机了,4个salve中有一个切换成了master,剩下3个slave就要挂到新的master上去。
这个时候,如果parallel-syncs是1,那么3个slave,会一个接一个挂到新的master上面去,一个挂完后,而且从新的master sync完数据之后,再挂接下一个。
如果parallel-syncs是3,那么一次性就会把所有的slave挂接到新的master上去。
2. 安装一主二从的redis主从架构
eshop-cache01,eshop-cache02,eshop-cache03上安装redis,并启动。
# 安装tclwget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd /usr/local/tcl8.6.1/unix/
./configure
make && make install
# 安装redis
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test
make install
3. 搭建经典三个节点的哨兵集群
哨兵默认是用26279端口,默认不能跟其他集群在指定端口联通,只能在本地访问
mkdir /etc/sentinal
mkdir -p /var/sentinal/5000/log
# 编辑etc/sentinel/5000.conf
cp sentinal.conf 5000.conf
vi 5000.conf
配置sentinal
# redis绑定端口port 5000
# redis绑定ip
bind 192.168.31.187
# redis绑定缓存存储目录
dir /var/sentinal/5000
# 哨兵绑定端口,ip,设置quorum
sentinel monitor mymaster 192.168.0.102 6379 2
# 哨兵连接 master 超时时间
sentinel down-after-milliseconds mymaster 30000
# 哨兵设置 哨兵故障转移超时时间
sentinel failover-timeout mymaster 60000
# 哨兵设置 运行同时挂载到新master的slave数量
sentinel parallel-syncs mymaster 1
3.1 启动哨兵进程
eshop-cache01,eshop-cache02,eshop-cache03三个节点启动sentinal,并查看日志。
启动sentinal命令
redis-sentinel /etc/sentinal/5000.confredis-server /etc/sentinal/5000.conf --sentinal
日志会显示出来,每个哨兵去监控对应的redis master,并且能够自动发现对应的slave。
哨兵之间,互相也会自动进行发现,用的就是pub/sub消息发布和订阅信息系统和机制
3.2 检查哨兵转态
SENTINEL get-master-addr-by-name mymaster
进入哨兵命令行
redis-cli -h 192.168.31.187 -p 5000
查看sentinel是否搭建成功
info sentinel
从图片中可以看到:redis的master节点有两个从节点,sentinel有三个节点。
查看所有master的信息
sentinel master mymaster
查看所有slave的信息
SENTINEL slaves mymaster
查看所有的哨兵信息
SENTINEL sentinels mymaster
根据master名称获取master地址信息
SENTINEL get-master-addr-by-name mymaster
本文使用 mdnice 排版
以上是 【Redis主从架构】搭建经典的3节点哨兵集群 的全部内容, 来源链接: utcz.com/a/29995.html