redis哨兵集群环境搭建

一、哨兵的介绍

哨兵(sentinal)是redis集群架构中非常重要的一个组件,主要功能如下:

  1. 集群监控,负责监控redis master和slave进程是否正常工作
  2. 消息通知,如果某个redis实例故障,哨兵负责发送消息通知给管理员
  3. 故障转移,如果master node 挂掉了,会自动转移slave node
  4. 配置中心,如果故障转移发生了,通知client客户端新的master地址

哨兵的核心知识:

  1. 哨兵集群至少三个实例

    假设两个哨兵的集群下,Configuration: quorum = 1 (配置需要1个哨兵认为master宕机),主备切换还需一个条件majority (大多数哨兵是运行的),如果两个哨兵主机所在的机器宕机了,则剩下一个哨兵实例,则不满足大多数哨兵是运行的这个条件

  2. 哨兵+redis主从架构,是保证不了数据零丢失, 只能保证redis集群的高可用

二、哨兵集群环境搭建

# mkdir /etc/sentinel
# mkdir -p /var/sentinel/5000
# mkdir -p /var/log/sentinal/5000
# cp /usr/local/redis-3.2.8/sentinel.conf /etc/sentinel
# mv /etc/sentinel/sentinel.conf /etc/sentinel/5000.conf # vi /etc/sentinel/5000.conf
## 修改
port 5000
bind 192.168.27.11 ## 当前机器的ip地址
dir /var/sentinel/5000
sentinel monitor mymaster 192.168.27.11 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
logfile /var/log/sentinel/5000/sentinel.log ## 启动哨兵进程
# redis-sentinel /etc/sentinel/5000.conf
# redis-server /etc/sentinel/5000.conf --sentinel ## 检查哨兵状态
# redis-cli -h 192.168.27.11 -p 5000
> sentinel master mymaster
> sentinel slaves mymaster
> sentinel sentinels mymaster
> sentinel get-master-addr-by-name mymaster

三、高可用容灾演练测试

强制停掉主节点的redis

# ps -ef|grep redis
# kill -9 进程号
# rm -rf /var/run/redis_6379.pid ## 查看哨兵监控日志
# cat /var/log/sentinel/5000/sentinel.log ## 查看当前的master节点
# redis-cli -h 192.168.27.11 -p 5000
> sentinel get-master-addr-by-name mymaster
上一篇:js变量和数据类型


下一篇:PHP+Redis秒杀其实很简单