Redis Sentinel(哨兵)部署

本文介绍了如何部署Redis Sentinel,包括编译Redis、修改配置文件、启动服务,并详细讲解了Sentinel的角色和故障排查,特别是解决多个Sentinel节点间通信问题的方法。确保在master-slave和sentinels之间打开必要的TCP端口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis版本3.2.3

roleipport
redis slave192.168.0.1946379
redis master192.168.0.1956379
sentinel 1192.168.0.19426379
sentinel 2192.168.0.19526379

一、编译

wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar -zxf redis-3.2.3.tar.gz
cd redis-3.2.3/
make
make PREFIX=/usr/local/redis install
cp redis.conf /usr/local/redis/etc/
cp sentinel.conf /usr/local/redis/etc/
mkdir /etc/redis
ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli
ln -s /usr/local/redis/bin/redis-server /usr/local/bin/redis-server
ln -s /usr/local/redis/bin/redis-sentinel /usr/local/bin/redis-sentinel
ln -s /usr/local/redis/etc/redis.conf /etc/redis/6379.conf
ln -s /usr/local/redis/etc/sentinel.conf /etc/redis/sentinel.conf
cp utils/redis_init_script /etc/init.d/redis

二、修改配置文件

修改启动项
vim /etc/init.d/redis
在第二行添加:
# chkconfig: 2345 80 90
master
修改配置文件:vim /etc/redis/6379.conf

daemonize yes
logfile "/home/redis/log/redis_6379.log"
dir "/home/redis/data"
bind 192.168.0.194
slave
修改配置文件:vim /etc/redis/6379.conf

daemonize yes
logfile "/home/redis/log/redis_6379.log"
dir "/home/redis/data"
bind 192.168.0.195
slaveof 192.168.0.195 6379
sentinel1
修改配置文件:vim /etc/redis/sentinel.conf

port 26379
bind 192.168.0.194
daemonize yes
logfile "/home/redis/log/sentinel_26379.log"
dir "/home/redis/sentinel/"
sentinel monitor mymaster 192.168.0.195 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 30000
sentinel2
修改配置文件:vim /etc/redis/sentinel.conf

port 26379
bind 192.168.0.195
daemonize yes
logfile "/home/redis/log/sentinel_26379.log"
dir "/home/redis/sentinel/"
sentinel monitor mymaster 192.168.0.195 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 30000

三、启动服务

启动
master:
service redis start
chkconfig --add redis
chkconfig redis on

salve:
service redis start
chkconfig --add redis
chkconfig redis on

sentinel1:
redis-sentinel sentinel.conf

sentinel2:
redis-sentinel sentinel.conf
redis-cli 检测
master:

127.0.0.1:6379> INFO Replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.0.194,port=6379,state=online,offset=72238,lag=1
master_repl_offset:72238
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:72237

192.168.0.194:6379> INFO Replication
# Replication
role:slave
master_host:192.168.0.195
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:78743
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
sentinel 检测
[root@localhost redis]# redis-cli -p 26379 -h 192.168.0.194 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.195:6379,slaves=1,sentinels=2

[root@localhost redis]# redis-cli -p 26379 -h 192.168.0.195 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.195:6379,slaves=1,sentinels=2

四、角色介绍

master-slave
先简单介绍一下redis replication的特点。
1.一个master可以有多个slave
2.Slave也可以有自己的slave,即级联
3.Master不受任何slave同步影响,但slave端在第一次执行同步时会阻塞读
4.多个slave可以分担读压力
5.可以用replication代替快照进程(saving),利用replication的实时同步来灾备数据

redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据。特殊的,一个 从机同样可以设置为一个 redis server 的主机,这样一来 master-slave 的分布看起来就是一个有向无环图 DAG,如此形成 redis server 集群,无论是主机还是从机都是 redis server,都可以提供服务)。

在配置后,主机可负责读写服务,从机只负责读。redis 提高这种配置方式,为的是让其支持数据的弱一致性,即最终一致性。在业务中,选择强一致性还是若已执行,应该取决于具体的业务需求,像微博,完全可以使用弱一致性模型
sentinel
Redis Sentinel是Redis官方提供的集群管理工具,主要有四大功能: 
监控----能持续监控Redis的主从实例是否正常工作; 
通知----当被监控的Redis实例出问题时,能通过API通知系统管理员或其他程序; 
自动故障恢复----如果主实例无法正常工作,Sentinel将启动故障恢复机制把一个从实例提升为主实例,其他的从实例将会被重新配置到新的主实例,且应用程序会得到一个更换新地址的通知。 
提供配置----哨兵对于客户端来说扮演获取master的角色,如果master down,客户端通过sentienl尽快获取最新选举出来的master

Redis Sentinel是一个分布式系统,可以部署多个Sentinel实例来监控同一组Redis实例,它们通过Gossip协议来确定一个主实例宕机,通过Agreement协议来执行故障恢复和配置变更,一般在生产环境中部署多个实例来提高系统可用性,只要有一个Sentinel实例运行正常,就能保证被监控的Redis实例运行正常(类似Zookeeper,通过多个Zookeeper来提高系统可用性)

五、trouble shooting

多个sentinel启动后 不能相互通信

10805:X 16 Aug 14:22:20.709 # +sdown slave 192.168.0.194:6379 192.168.0.194 6379 @ mymaster 192.168.0.195 6379
sentinel.conf、redis.conf注意bind ip

master/slave,sentinels之间确保tcp端口6379、26379开放

六、相关文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值