Redis简单主从加哨兵搭建

Redis哨兵机制原理
1.概述
Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来 接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故 障迁移, 以及选择哪个从服务器作为新的主服务器。

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance) 该系统执行以下三个任务:

监控(Monitoring): Sentinel 会不断地定期检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automaticfailover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中 一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客 户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主 服务器代替失效服务器。

  • 主库:192.168.10.101 端口 6379
  • 从库1 : 192.168.10.102 端口 6379
  • 从库2 : 192.168.10.103 端口 6379

安装redis5.0.9

yum -y install gcc-c++
wget http://download.redis.io/releases/redis-5.0.9.tar.gz
tar -zxf redis-5.0.9.tar.gz
cd redis-5.0.9
make
make install
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'vm.overcommit_memory = 1'  >>  /etc/sysctl.conf
echo 511  > /proc/sys/net/core/somaxconn
sysctl vm.overcommit_memory=1

主redis服务修改配置文件

cd /root/redis-5.0.9/
vim redis.conf 
#bind  127.0.0.1            #把此行注释掉
protected-mode no          #修改yes 为no
daemonize yes							#修改NO为yes

#启动服务
redis-server /root/redis-5.0.9/redis.conf      

从服务器1 和2 配置文件保持一致

cd /root/redis-5.0.9/

vim redis.conf 
#bind  127.0.0.1            #把此行注释掉
protected-mode no          #修改yes 为no
daemonize yes							#修改NO为yes
replicaof 192.168.10.101 6379

#启动服务
redis-server /root/redis-5.0.9/redis.conf 

验证主库写入数据

[root@localhost redis-5.0.9]# redis-cli 
127.0.0.1:6379> set aaa 123 
OK
127.0.0.1:6379> get aaa
"123"

两台从库检查数据

[root@localhost redis-5.0.9]# redis-cli 
127.0.0.1:6379> keys *
1) "aaa"
127.0.0.1:6379> get aaa
"123"

Redis哨兵搭建

三台服务相同操作

关闭redis三台服务器的redis服务

[root@localhost ]# redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> shutdown

[root@localhost ~]# cd redis-5.0.9

[root@localhost redis-5.0.9]# vim sentinel.conf

#后台进程启动
daemonize yes
#日志路径
logfile "/var/log/sentinel.log"
# 定义Redis主的别名, IP, 端口,这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为

sentinel monitor mymaster 192.168.10.102 6379 2    #修改Ip 地址为Redis主的IP地址和端口

# 如果mymaster 30秒内没有响应,则认为其主观失效

sentinel down-after-milliseconds mymaster 30000

# 如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最保守的设置为1,同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。

sentinel parallel-syncs mymaster 1

# 该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒

sentinel failover-timeout mymaster 180000

# 不允许使用SENTINEL SET设置notification-script和client-reconfig-script。

sentinel deny-scripts-reconfig yes


启动redis服务

[root@localhost redis-5.0.9]# redis-server redis.conf 

启动哨兵

[root@localhost redis-5.0.9]# redis-server sentinel.conf  --sentinel
[root@localhost redis-5.0.9]# tail /var/log/sentinel.log

53098:X 25 Sep 2020 15:33:05.124 # Sentinel ID is 8404dbcfdcf2a123b9df86091e8d188a7098da6e
53098:X 25 Sep 2020 15:33:05.124 # +monitor master mymaster 192.168.10.101 6379 quorum 2
53098:X 25 Sep 2020 15:33:05.125 * +slave slave 192.168.10.102:6379 192.168.10.102 6379 @ mymaster 192.168.10.101 6379
53098:X 25 Sep 2020 15:33:05.127 * +slave slave 192.168.10.103:6379 192.168.10.103 6379 @ mymaster 192.168.10.101 6379
53098:X 25 Sep 2020 15:33:10.542 * +sentinel sentinel 27bdefc66a0f22ace01d775b135ae0943bee23e3 192.168.10.102 26379 @ mymaster 192.168.10.101 6379
53098:X 25 Sep 2020 15:33:13.198 * +sentinel sentinel df3fe11a58bd36dcd045e9660bb0610bce0b3cfd 192.168.10.103 26379 @ mymaster 192.168.10.101 6379

测试哨兵机制关闭主Redis上的服务

测试需要等待30秒进行查看因为在哨兵的配置中定义的为30秒

# 如果mymaster 30秒内没有响应,则认为其主观失效

sentinel down-after-milliseconds mymaster 30000
[root@localhost redis-5.0.9]# redis-cli 
127.0.0.1:6379> shutdown

53098:X 25 Sep 2020 15:34:26.687 * +slave-reconf-done slave 192.168.10.103:6379 192.168.10.103 6379 @ mymaster 192.168.10.101 6379
53098:X 25 Sep 2020 15:34:26.749 # +failover-end master mymaster 192.168.10.101 6379
53098:X 25 Sep 2020 15:34:26.749 # +switch-master mymaster 192.168.10.101 6379 192.168.10.102 6379
53098:X 25 Sep 2020 15:34:26.749 * +slave slave 192.168.10.103:6379 192.168.10.103 6379 @ mymaster 192.168.10.102 6379
53098:X 25 Sep 2020 15:34:26.749 * +slave slave 192.168.10.101:6379 192.168.10.101 6379 @ mymaster 192.168.10.102 6379
53098:X 25 Sep 2020 15:34:56.792 # +sdown slave 192.168.10.101:6379 192.168.10.101 6379 @ mymaster 192.168.10.102 6379
53098:X 25 Sep 2020 15:35:17.948 # -sdown slave 192.168.10.101:6379 192.168.10.101 6379 @ mymaster 192.168.10.102 6379

可以看到 主节点停止之后,其他的节点都指向102进行同步。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值