欢迎来到科站长!

Redis

当前位置: 主页 > 数据库 > Redis

redis搭建哨兵模式实现一主两从三哨兵

时间:2024-09-22 15:00:40|栏目:Redis|点击:

一、Redis 哨兵模式:

哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移

1、哨兵模式原理:

哨兵:是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的Master 并将所有Slave 连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。

2、哨兵模式的作用:

  • 监控:哨兵会不断地检查主节点和从节点是否运作正常。

  • 自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。

  • 通知提醒:哨兵可以将故障转移的结果发送给客户端

3、哨兵的结构:

  • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点就是特殊的redis节点,不存储数据

  • 数据节点:主节点和从节点都是数据节点

注意:

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的Redis工作节点是否正常。

4、故障转移机制:

由哨兵节点定期监控主节点是否出现了故障,每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。 如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的),当超过半数哨兵节点认为该主节点下线了,这样就客观下线了。 此时哨兵节点会通过Raft算法〈选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。

故障转移过程如下:

● 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;

● 若原主节点恢复也变成从节点,并指向新的主节点;

● 通知客户端主节点已经更换。

主节点的选举条件:

  • 过滤掉不健康的(已下线的),没有回复哨兵ping响应的从节点

  • 选择配置文件中从节点优先级最高的(replication-priority,默认值为100)

  • 选择复制偏移量最大的,也就是复制最完整的从节点。

二、案例环境

服务器


masterCentos7.9192.168.10.128redis-5.0.9.tar.gz
slave1Centos7.9192.168.10.129redis-5.0.9.tar.gz
salve2Centos7.9192.168.10.130redis-5.0.9.tar.gz

1.关闭防火墙安全内核机制,所有节点全部执行

1
2
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2.所有节点分别搭建网络yum源 ,需要联网

1
[root@localhost ~]# yum clean all && yum makecache

3.分别修改主机名

1
2
3
[root@localhost ~]hostnamectl set-hostname master  #192.168.10.128
[root@localhost ~]hostnamectl set-hostname slave1  #192.168.10.129
[root@localhost ~]hostnamectl set-hostname slave2  #192.168.10.130

4.所有节点修改hosts文件

1
2
3
4
5
[root@localhost ~]# cat >>/etc/hosts<< EOF
192.168.10.128 matser:7
192.168.10.129 slave1
192.168.10.130 slave2
EOF

三、实验部署

主从部署

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节点上看日志

1
2
3
4
5
6
7
8
[root@master ~]#tail -f /var/log/redis_6379.log
[root@master ~]#redis-cli         #登录redis
127.0.0.1:6379> info replication   #查看
127.0.0.1:6379> set k1 1         #在主库创建文件在从库查看
OK
127.0.0.1:6379> get k1        存在
"1"
127.0.0.1:6379>

在master上动态查看日志:

在master上验证从节点

四、哨兵部署

1
[root@master ~]# cd /usr/src/redis-5.0.9/


上一篇:暂无

栏    目:Redis

下一篇:深入理解redis删除策略和淘汰策略

本文标题:redis搭建哨兵模式实现一主两从三哨兵

本文地址:https://fushidao.cc/shujuku/776.html

广告投放 | 联系我们 | 版权申明

申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:1205677645 | 邮箱:1205677645@qq.com

Copyright © 2018-2024 科站长 版权所有冀ICP备14023439号