redis 哨兵_redis 哨兵

一、哨兵架构图

634ac041ff5e8ea873ea5e7c398cc398.png

二、哨兵作用

1.解决主从复制需要⼈为⼲预的问题

2.提供了⾃动的⾼可⽤⽅案

三、哨兵部署前提

端口规划

redis节点 6379

哨兵节点 26379

三台redis单节点主从关系

如果redis有密码认证,则需要如下变更

fc097c033b184925703e03895cb3d885.png

四、哨兵部署

1、生成配置目录

mkdir -p /data/redis_26379
mkdir -p /opt/redis_26379/{conf,pid,logs}

2、生成配置文件

cat >/opt/redis_26379/conf/redis_26379.conf << EOF
bind $(ifconfig eth0|awk 'NR==2{print $2}')     #哨兵监听地址
port 26379
daemonize yes
logfile /opt/redis_26379/logs/redis_26379.log
dir /data/redis_26379                   
sentinel monitor myredis 10.0.0.51 6379 2   
#哨兵      监听       组名称      主节点  端口   “2”表示只要有两个选票证明节点有问题,
                                                                            进行切换主库
sentinel down-after-milliseconds myredis 3000   #主库宕机3秒就进行切库
sentinel parallel-syncs myredis 1  #向主节点发给复制操作的从节点个数,1表示轮训发起复制
sentinel failover-timeout myredis 18000     #故障转移超时时间
sentinel auth-pass myredis 123456      #主节点密码信息
EOF

3、授权配置文件

chown -R redis:redis  /data/redis*
chown -R redis:redis  /opt/redis*

4、生成system管理文件

cat >/usr/lib/systemd/system/redis-sentinel.service<<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/redis-sentinel /opt/redis_26379/conf/redis_26379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli -h $(ifconfig eth0|awk 'NR==2{print $2}') -p 26379 shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
EOF

5、启动哨兵

systemctl daemon-reload 
systemctl start redis-sentinel

6、登录哨兵

redis-cli -h $(ifconfig eth0|awk 'NR==2{print $2}') -p 26379

7、验证主机节点

redis-cli -h 10.0.0.51 -p 26379 SENTINEL get-master-addr-by-name myredis

myredis   #组名称

五、哨兵注意事项

1.哨兵发起故障转移的条件是master节点失去联系,从节点挂掉不会发起故障转移

2.哨兵会⾃⼰维护配置⽂件,不需要⼿动修改

3.如果主从的结构发⽣变化,哨兵之间会⾃动同步最新的消息并且⾃动更新配置⽂件

4.哨兵启动完成之后,不要再⾃⼰去设置主从关系

六、哨兵的常⽤命令

(一)、验证主节点

redis-cli -a 123 -h 10.0.0.151 -p 26379 SENTINEL get-master-addr-by-name myredis

(二)、查看主节点详细信息

redis-cli -a 123 -h 10.0.0.151 -p 26379 SENTINEL master myredis

(三)、查看从节点详细信息

redis-cli -a 123 -h 10.0.0.151 -p 26379 SENTINEL slaves myredis

(四)、查看可用节点

redis-cli -a 123 -h 10.0.0.151 -p 26379 SENTINEL ckquorum myredis

(五)、查看各redis节点权重

redis-cli -h 10.0.0.51 -p 6379 -a 123456 CONFIG GET slave-priority

(六)设置redis节点权重

redis-cli -h 10.0.0.51 -p 6379 -a 123456 CONFIG SET slave-priority 0

(七)、手动触发故障转移

redis-cli -h 10.0.0.51 -p 26379 -a 123456sentinel failover myredis

七、高可用实现流程

1、在从节点列表中选出⼀个节点作为新的主节点,选择⽅法如下:

a)过滤:“不健康”(主观下线、断线)、5秒内没有回复过Sentinel节点ping响应、

与主节点失联,超过down-after-milliseconds*10秒。

b)选择slave-priority(从节点优先级)最⾼的从节点列表,如果存在则返回,不存在则继续。

c)选择复制偏移量最⼤的从节点(复制的最完整),如果存在则返回,不存在则继续。

d)选择runid最⼩的从节点

2、在新主节点上执⾏slaveof no one

3、在从节点执⾏slave of 新主节点

4、⾃动更新哨兵配置

5、⾃动更新从节点配置

八、哨兵缺点

1、主库写压力太大

2、资源利用率不高

3、连接过程繁琐,效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值