redis搭建哨兵模式实现一主两从三哨兵
一、Redis 哨兵模式:
哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移
1、哨兵模式原理:
哨兵:是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的Master 并将所有Slave 连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。
2、哨兵模式的作用:
监控:哨兵会不断地检查主节点和从节点是否运作正常。
自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
通知提醒:哨兵可以将故障转移的结果发送给客户端
3、哨兵的结构:
哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点就是特殊的redis节点,不存储数据
数据节点:主节点和从节点都是数据节点
注意:
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的Redis工作节点是否正常。
4、故障转移机制:
由哨兵节点定期监控主节点是否出现了故障,每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。 如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的),当超过半数哨兵节点认为该主节点下线了,这样就客观下线了。 此时哨兵节点会通过Raft算法〈选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。
故障转移过程如下:
● 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;
● 若原主节点恢复也变成从节点,并指向新的主节点;
● 通知客户端主节点已经更换。
主节点的选举条件:
过滤掉不健康的(已下线的),没有回复哨兵ping响应的从节点
选择配置文件中从节点优先级最高的(replication-priority,默认值为100)
选择复制偏移量最大的,也就是复制最完整的从节点。
二、案例环境
服务器 | |||
---|---|---|---|
master | Centos7.9 | 192.168.10.128 | redis-5.0.9.tar.gz |
slave1 | Centos7.9 | 192.168.10.129 | redis-5.0.9.tar.gz |
salve2 | Centos7.9 | 192.168.10.130 | redis-5.0.9.tar.gz |
1.关闭防火墙安全内核机制,所有节点全部执行
2.所有节点分别搭建网络yum源 ,需要联网
3.分别修改主机名
4.所有节点修改hosts文件
三、实验部署
主从部署
1.所有节点安装redis
#安装编译工具 yum -y install gcc gcc-c++ make cd /usr/src wget -P /usr/src http://download.redis.io/releases/redis-5.0.9.tar.gz tar -zxvf redis-5.0.9.tar.gz cd redis-5.0.9/ make && make PREFIX=/usr/local/redis install ln -s /usr/local/redis/bin/* /usr/local/bin/ cd /usr/src/redis-5.0.9/utils/ ./install_server.sh #出现Please select the redis port for this instance: [6379]一直回车直达出现Please select the redis executable path [] 手动输入/usr/local/redis/bin/redis-server netstat -lnupt | grep redis cd /usr/lib/systemd/system/ cat >>redis.service<< EOF [Unit] Description=redis-server After=network.target [Service] Type=forking # ExecStart需要按照实际情况修改成自己的地址 ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf PrivateTmp=true [Install] WantedBy=multi-user.target EOF systemctl daemon-reload /etc/init.d/redis_6379 stop ps -ef|grep redis systemctl start redis systemctl status redis
2.修改Master节点的配置文件
[root@master ~]# cp /etc/redis/6379.conf{,.bak} [root@master ~]# vim /etc/redis/6379.conf bind 0.0.0.0 #70行,注释掉bind项,或修改为0.0.0.0,默认监听所有网卡 daemonize yes #137行,开启守护进程 logfile /var/log/redis_6379.log #172行,指定日志文件目录 dir /var/lib/redis/6379 #264行,指定工作目录 requirepass 123456 #7508行,指定redis登录密码,可不设置 appendonly yes #700行,开启AOF持久化功能 #重启redis [root@master ~]#systemctl start redis
3.修改slave1和slave2两个从节点
[root@slave1 ~]# cp /etc/redis/6379.conf{,.bak} [root@slave1 ~]# vim /etc/redis/6379.conf 70 bind 0.0.0.0 #将监听端口改为任意端口 137 daemonize yes #开启守护进程 172 logfile /var/log/redis_6379.log #指定日志文件目录 264 dir /var/lib/redis/6379 #指定工作目录 287 replicaof 192.168.111.10 6379 #指定主节点的ip 和端口 700 appendonly yes #开启 AOF持久化 #重启slave1节点和slave2节点redis服务 [root@slave1 ~]# systemctl restart reids [root@slave2 ~]# systemctl restart reids
4.验证主从效果
在Master节点上看日志
在master上动态查看日志:
在master上验证从节点
四、哨兵部署
您可能感兴趣的文章
- 09-22Redis的Bitmap(位图)详解和命令演示
- 09-22详解如何在Windows上配置和使用Redis持久化功能
- 09-22Redis过期时间的设计与实现代码
- 09-22Redis压缩列表的设计与实现
- 09-22Spring Boot 3.0x的Redis 分布式锁的概念和原理
- 09-22Redis increment 函数处理并发序列号案例
- 09-22深入理解redis删除策略和淘汰策略
- 09-22redis搭建哨兵模式实现一主两从三哨兵
阅读排行
推荐教程
- 09-22详解如何在Windows上配置和使用Redis持久化功能
- 09-22Redis过期时间的设计与实现代码
- 09-22Spring Boot 3.0x的Redis 分布式锁的概念和原理
- 09-22Redis increment 函数处理并发序列号案例
- 09-22redis搭建哨兵模式实现一主两从三哨兵
- 09-22深入理解redis删除策略和淘汰策略
- 09-22Redis的Bitmap(位图)详解和命令演示
- 09-22Redis压缩列表的设计与实现