<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Redis_Sentinel%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84</id>
	<title>Redis Sentinel高可用架构 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Redis_Sentinel%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Redis_Sentinel%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84&amp;action=history"/>
	<updated>2026-04-23T11:10:21Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Redis_Sentinel%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84&amp;diff=926&amp;oldid=prev</id>
		<title>Evan：​/* 参考 */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Redis_Sentinel%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84&amp;diff=926&amp;oldid=prev"/>
		<updated>2021-10-14T11:39:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;参考&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==信息==&lt;br /&gt;
 192.168.30.94&lt;br /&gt;
 192.168.30.95&lt;br /&gt;
 192.168.30.96&lt;br /&gt;
&lt;br /&gt;
==第一步 主从搭建==&lt;br /&gt;
[[Redis主从复制]]&lt;br /&gt;
&lt;br /&gt;
==第二步 sentinel==&lt;br /&gt;
&lt;br /&gt;
=== 配置sentinel===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Redis1上的redis-sentinel配置文件&lt;br /&gt;
&lt;br /&gt;
mkdir -p /data/redis/data&lt;br /&gt;
chown -R redis:redis /data/redis/data&lt;br /&gt;
mkdir -p /data/logs/redis/&lt;br /&gt;
chown -R redis:redis /data/logs/redis/&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt;/etc/redis/sentinel.conf&amp;lt;&amp;lt;EOF &lt;br /&gt;
port 26379&lt;br /&gt;
daemonize yes&lt;br /&gt;
logfile /data/logs/redis/redis-sentinel.log &lt;br /&gt;
dir &amp;quot;/data/redis/data&amp;quot;&lt;br /&gt;
#dir &amp;quot;/tmp&amp;quot;&lt;br /&gt;
sentinel monitor mymaster 192.168.30.94 6379 2&lt;br /&gt;
sentinel down-after-milliseconds mymaster 30000     &lt;br /&gt;
sentinel parallel-syncs mymaster 1     &lt;br /&gt;
sentinel failover-timeout mymaster 180000  &lt;br /&gt;
sentinel auth-pass mymaster 1234&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
cp -r /etc/redis/ /etc/redisbak/&lt;br /&gt;
&lt;br /&gt;
#Redis2和Redis3上的redis-sentinel配置文件与Redis1上的redis-sentinel配置文件内容相同。&lt;br /&gt;
&lt;br /&gt;
#有$1  不能用cat &lt;br /&gt;
# redis-sentinel  /etc/redis/sentinel.conf &amp;amp;&lt;br /&gt;
&lt;br /&gt;
echo &amp;#039;#!/bin/bash&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides:          redis sentinel&lt;br /&gt;
# Required-Start:    $all&lt;br /&gt;
# Required-Stop:    $all&lt;br /&gt;
# Default-Start:    2 3 4 5&lt;br /&gt;
# Default-Stop:      0 1 6&lt;br /&gt;
# Short-Description: Starts redis sentinel&lt;br /&gt;
# Description:      Starts redis sentinel using start-stop-daemon&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
# Source function library&lt;br /&gt;
. /etc/rc.d/init.d/functions&lt;br /&gt;
&lt;br /&gt;
NAME=redis-sentinel&lt;br /&gt;
BIN=/usr/local/bin/redis-sentinel&lt;br /&gt;
SENTINEL_PID=/data/redis/redis-sentinel.pid&lt;br /&gt;
#SENTINEL_PID=/data/logs/redis/redis-sentinel.pid&lt;br /&gt;
CMD=$1&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        echo &amp;quot;Starting $NAME ...&amp;quot;&lt;br /&gt;
        exec 2&amp;gt;&amp;amp;1 $BIN /etc/redis/sentinel.conf  &amp;amp;&lt;br /&gt;
        echo $! &amp;gt; &amp;quot;${SENTINEL_PID}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
         &lt;br /&gt;
        #PID=`cat $SENTINEL_PID`&lt;br /&gt;
        echo &amp;quot;Stopping $NAME ($PID) ...&amp;quot;&lt;br /&gt;
        pkill $NAME&lt;br /&gt;
        #killproc $NAME -QUIT&lt;br /&gt;
        #kill $PID&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
restart() {&lt;br /&gt;
        echo &amp;quot;Restarting $NAME ...&amp;quot;&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$CMD&amp;quot; in&lt;br /&gt;
        start)&lt;br /&gt;
                start&lt;br /&gt;
                ;;&lt;br /&gt;
        stop)&lt;br /&gt;
                stop&lt;br /&gt;
                ;;&lt;br /&gt;
        restart)&lt;br /&gt;
                restart&lt;br /&gt;
                ;;&lt;br /&gt;
        *)&lt;br /&gt;
                echo &amp;quot;Usage $0 {start|stop|restart}&amp;quot; &lt;br /&gt;
esac&amp;#039; &amp;gt;/etc/init.d/sentinel&lt;br /&gt;
&lt;br /&gt;
chmod +x /etc/init.d/sentinel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://gist.github.com/mathieue/4707757 sentinel启动脚本]&lt;br /&gt;
&lt;br /&gt;
===测试sentinel===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
可见有两个slave 3个 sentinel 节点 &lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.94 -a 12345  -p 26379   info sentinel &lt;br /&gt;
# Sentinel&lt;br /&gt;
sentinel_masters:1&lt;br /&gt;
sentinel_tilt:0&lt;br /&gt;
sentinel_running_scripts:0&lt;br /&gt;
sentinel_scripts_queue_length:0&lt;br /&gt;
master0:name=mymaster,status=ok,address=192.168.30.94:6379,slaves=2,sentinels=3&lt;br /&gt;
&lt;br /&gt;
95 96 也如上&lt;br /&gt;
&lt;br /&gt;
高可用测试  &lt;br /&gt;
关掉 master 94 redis &lt;br /&gt;
&lt;br /&gt;
这时候 96 为master  &lt;br /&gt;
 在96 set 一下  在 96 也可以 get 成功 &lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.96 -a dkmhw3xdghlrd  -p 6379    set BB bb&lt;br /&gt;
OK&lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.96 -a dkmhw3xdghlrd  -p 6379    get BB &lt;br /&gt;
&amp;quot;bb&amp;quot;&lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.95 -a dkmhw3xdghlrd  -p 6379    get BB &lt;br /&gt;
&amp;quot;bb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.96 -a dkmhw3xdghlrd  -p 6379    set BBB bbb&lt;br /&gt;
OK&lt;br /&gt;
&lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.96 -a dkmhw3xdghlrd  -p 6379    get BBB &lt;br /&gt;
&amp;quot;bbb&amp;quot;&lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.95 -a dkmhw3xdghlrd  -p 6379    get BBB &lt;br /&gt;
&amp;quot;bbb&amp;quot;&lt;br /&gt;
evan@evanpc:~$ redis-cli  -h 192.168.30.94 -a dkmhw3xdghlrd  -p 6379    get BBB &lt;br /&gt;
(nil)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==常用命令API ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
redis-cli  -a dkmhw3xdghlrd  -p 6379 INFO  Replication&lt;br /&gt;
&lt;br /&gt;
redis-cli  -h 192.168.30.89 -a 12345  -p 6379  info Sentinel&lt;br /&gt;
&lt;br /&gt;
注意 这个命令有错 &lt;br /&gt;
redis-cli  -h 192.168.30.89   -a 12345 -p 6379  INFO | grep slave&lt;br /&gt;
&lt;br /&gt;
redis-cli  -h 192.168.30.89   -a 12345  -p 26379 &lt;br /&gt;
&lt;br /&gt;
redis-cli  -h 192.168.30.94 -a 12345  -p 26379  sentinel get-master-addr-by-name  mymaster &lt;br /&gt;
&lt;br /&gt;
killall redis-sentinel redis-server&lt;br /&gt;
&lt;br /&gt;
redis-server /etc/redis/6379.conf  &amp;amp;&amp;amp;  redis-sentinel  /etc/redis/sentinel.conf &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;sentinel masters&lt;br /&gt;
&amp;gt;sentinel master mymaster&lt;br /&gt;
&lt;br /&gt;
HA功能就是这个实现的 &lt;br /&gt;
 26379&amp;gt;  sentinel get-master-addr-by-name mymaster&lt;br /&gt;
1) &amp;quot;192.168.30.94&amp;quot;&lt;br /&gt;
2) &amp;quot;6379&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sentinel clent ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.30.62&lt;br /&gt;
 &lt;br /&gt;
如下有错 是因为没有配置主节点密码&lt;br /&gt;
192.168.30.89:26379&amp;gt; info Sentinel&lt;br /&gt;
# Sentinel&lt;br /&gt;
&lt;br /&gt;
master0:name=mymaster,status=sdown,address=192.168.30.88:6379,slaves=0,sentinels=1&lt;br /&gt;
&lt;br /&gt;
redis-server /etc/redis/6379.conf&lt;br /&gt;
redis-sentinel  /etc/redis/sentinel.conf &amp;amp;&lt;br /&gt;
&lt;br /&gt;
客户端可以将 Sentinel 看作是一个只提供了订阅功能的 Redis 服务器，你不可以使用 PUBLISH 命令向这个服务器发送信息，但你可以用 SUBSCRIBE 命令或者 PSUBSCRIBE 命令， 通过订阅给定的频道来获取相应的事件提醒。 &lt;br /&gt;
一个频道能够接收和这个频道的名字相同的事件。 比如说， 名为 +sdown 的频道就可以接收所有实例进入主观下线（SDOWN）状态的事件。&lt;br /&gt;
&lt;br /&gt;
在redis2.8以上版本已经不需要手动切换了，&lt;br /&gt;
1，当master挂掉后会随机切换一个slave为新的master。&lt;br /&gt;
2，当老的master重新启动后会自动成为slave加入集群。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==优化==&lt;br /&gt;
[https://gist.github.com/mathieue/4707757 sentinel启动脚本 centos6.x]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sentinel 配置文件 也要学课本 优化一下  dir 目录什么的 不能 /tmp &lt;br /&gt;
&lt;br /&gt;
主从也是一样要加 &lt;br /&gt;
&lt;br /&gt;
Redis常见问题&lt;br /&gt;
最大内存问题：要设置好最大内存，以防不停的申请内存，造成系统内存都被用完。&lt;br /&gt;
&lt;br /&gt;
Fork进程问题：&amp;#039;vm.overcommit_memory = 1&amp;#039;这一个选项要加到系统的配置中，防止fork因内存不足而失败。&lt;br /&gt;
&lt;br /&gt;
密码问题：需要设置复杂一些，防止暴力破解。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==问题 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
info replication 是到了89 但是数据不能同步到 88 and 71 &lt;br /&gt;
&lt;br /&gt;
如果sentinel 进程挂了呢 &lt;br /&gt;
&lt;br /&gt;
好像在centos7 上 redis 有时用脚本启动不起来 有时进程会自己挂了呢 &lt;br /&gt;
&lt;br /&gt;
#sentinel实例监听的端口&lt;br /&gt;
port 26379&lt;br /&gt;
#告诉sentinel监控这个名为mymaster的master，它的监听地址是127.0.0.1，并且设置failing sentinel为2，表示当有2台sentinel探测到该实例失败时，该实例进入O_DOWN状态。&lt;br /&gt;
sentinel monitor mymaster 127.0.0.1 6379 2&lt;br /&gt;
&lt;br /&gt;
#redis实例多少毫秒不可达sentinel，sentinel则认为该实例的状态转变为S_DOWN，但是这个状态还不足以启动automatic failover机制。只有足够多的实例认为该实例是S_DOWN状态，这时该实例进入O_DOWN状态，&lt;br /&gt;
sentinel down-after-milliseconds mymaster 30000&lt;br /&gt;
&lt;br /&gt;
#在sentinel检测到O_DOWN后，是否对这台redis启动failover机制&lt;br /&gt;
sentinel can-failover mymaster yes&lt;br /&gt;
&lt;br /&gt;
#在failover时，我们可以设置允许多少slave同时可以连接新的master。该值越低，完成failover的进程花费的时间越多，如果对从数据要求不是很及时，你可能不需要所有的从在同一时间同步到新的主（同步到新主，意味着数据重传），你确定在宕机时只有一个从可达则设置为1（如果这样的话其它的从还能用老的数据来干活&lt;br /&gt;
sentinel parallel-syncs mymaster 1&lt;br /&gt;
&lt;br /&gt;
#设置failover的超时时间是多少毫秒&lt;br /&gt;
sentinel failover-timeout mymaster 900000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参考==&lt;br /&gt;
&lt;br /&gt;
https://github.com/wojiushixiaobai/redis-sentinel  redis-sentinel&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/bigdevilking/p/9595557.html goodRedis哨兵模式（sentinel）部署记录（主从复制、读写分离、主从切换）]&lt;br /&gt;
&lt;br /&gt;
[https://blog.51cto.com/kerry/2341308 redis主从设置以及通过Sentinel（哨兵）实现的高可用]&lt;br /&gt;
&lt;br /&gt;
使用php访问redis的sentinel&lt;br /&gt;
&lt;br /&gt;
[https://github.com/jamescauwelier/PSRedis jamescauwelier/PSRedis]&lt;br /&gt;
&lt;br /&gt;
http://www.huyanping.cn/redis-sentinel%E9%AB%98%E5%8F%AF%E7%94%A8%E6%96%B9%E6%A1%88%E5%AE%9E%E8%B7%B5/ redis-sentinel高可用方案实践&lt;br /&gt;
&lt;br /&gt;
这个应该可以作为备用&lt;br /&gt;
https://github.com/huyanping/redis-sentinel&lt;br /&gt;
&lt;br /&gt;
[https://redis.io/topics/sentinel-clients sentinel-clients]&lt;br /&gt;
&lt;br /&gt;
在此可以查看到的  只是一开始是我google 然后再返回官网看的 这顺序不太对 哈哈 下次改 &lt;br /&gt;
https://redis.io/clients#php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://blog.csdn.net/drizzt0878/article/details/73826088 Redis Sentinel安装部署与常用操作]&lt;br /&gt;
[http://navyaijm.blog.51cto.com/4647068/1745569  vip(not keepalived) sentinel redis高可用架构]&lt;br /&gt;
&lt;br /&gt;
[https://segmentfault.com/q/1010000000663948  用 redis-sentinel 做 redis 集群,如何实现当master挂掉后,不用修改程序中的配置]&lt;br /&gt;
&lt;br /&gt;
[http://blog.csdn.net/yinmingjuncn/article/details/26278385  使用jedis访问redis的sentinel]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnblogs.com/zhoujinyi/p/5570024.html   Redis 复制、Sentinel的搭建和原理说明 有执行脚本]&lt;br /&gt;
&lt;br /&gt;
[http://www.fblinux.com/?p=157 redis主从复制+sentinel集群]&lt;br /&gt;
&lt;br /&gt;
[http://debugo.com/redis-sentinel/ Redis Sentinel配置小记]&lt;br /&gt;
[https://my.oschina.net/dchuang/blog/666827 twemproxy + redis + sentinel 实现redis集群高可用]&lt;br /&gt;
&lt;br /&gt;
[http://m.blog.csdn.net/geniuslinchao/article/details/51646235  Laravel 5的redis哨兵(sentinel)支持]&lt;br /&gt;
&lt;br /&gt;
[http://redisdoc.com/topic/sentinel.html ]&lt;br /&gt;
&lt;br /&gt;
[http://blog.jobbole.com/107941/  Redis 主从配置心得及其高可用方案]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnblogs.com/jaycekon/p/6237562.html 深入浅出Redis-redis哨兵集群]&lt;br /&gt;
&lt;br /&gt;
[http://www.jianshu.com/p/42ee966f96e5 Redis Sentinel（哨兵）部署]&lt;br /&gt;
&lt;br /&gt;
[http://www.shixinke.com/redis/redis-3-cluster-and-php-redis-cluster 使用redis3.0搭建redis集群及php操作redis集群]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/huyanping/redis-sentinel huyanping/redis-sentinel]&lt;br /&gt;
&lt;br /&gt;
[http://blog.csdn.net/boonya/article/details/64122370  Redis通过配置修改密码]&lt;br /&gt;
&lt;br /&gt;
http://redis.cn/&lt;br /&gt;
&lt;br /&gt;
[http://www.voidcn.com/blog/c295477887/article/p-6195412.html  关于redis的主从、哨兵、集群]&lt;br /&gt;
&lt;br /&gt;
[https://my.oschina.net/dchuang/blog/666827 twemproxy + redis + sentinel 实现redis集群高可用]&lt;br /&gt;
&lt;br /&gt;
[http://blog.jiguang.cn/redis-twemproxy-benchmark/ Redis 存储分片之代理服务Twemproxy 测试]&lt;br /&gt;
&lt;br /&gt;
[http://www.yunweipai.com/archives/18728.html Redis高可用架构最佳实践]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnblogs.com/zhoujinyi/p/5585723.html Redis Sentinel 高可用实现说明]&lt;br /&gt;
&lt;br /&gt;
[http://redisbook.com/ Redis 设计与实现]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:ops]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>