Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Redis Sentinel¸ß¿ÉÓüܹ¹
 
 ×÷Õß: xuanzhi201111 ·¢²¼ÓÚ 2016-07-13
  5704  次浏览      27
 

RedisµÄ¸ß¿ÉÓüܹ¹ÏÖÔÚÔ½À´Ô½¶àÁË£¬¿ÉÒÔ¼ûµÃRedisµÄ·¢Õ¹ÊÇÓжàôµÄѸËÙ£¬ÏÖÔÚ²»ÉÙ¹«Ë¾¶¼ÓÃÉÏÁËRedis£¬ËùÒÔRedis¸ß¿ÉÓÃÒ²ÏÔµÃÓÈÆäÖØÒª£¬ÏÖÔÚRedisµÄ¸ß¿ÉÓüܹ¹ÓбÈÈçkeepalived+redis£¬redis cluster£¬twemproxy£¬codis£¬ÏÂÃæÎÒÃÇÖ÷ÒªÕë¶ÔRedis Sentinel¸ß¿ÉÓüܹ¹Õ¹¿ªÑ§Ï°¡£

Redis SentinelÖ÷Òª¹¦ÄÜÓÐÒÔϼ¸µã£º

²»Ê±µØ¼à¿ØredisÊÇ·ñ°´ÕÕÔ¤ÆÚÁ¼ºÃµØÔËÐÐ;

Èç¹û·¢ÏÖij¸öredis½ÚµãÔËÐгöÏÖ×´¿ö£¬Äܹ»Í¨ÖªÁíÍâÒ»¸ö½ø³Ì(ÀýÈçËüµÄ¿Í»§¶Ë);

Äܹ»½øÐÐ×Ô¶¯Çл»¡£µ±Ò»¸ömaster½Úµã²»¿ÉÓÃʱ£¬Äܹ»Ñ¡¾Ù³ömasterµÄ¶à¸öslave(Èç¹ûÓг¬¹ýÒ»¸öslaveµÄ»°)ÖеÄÒ»¸öÀ´×÷ΪеÄmaster,ÆäËüµÄslave½Úµã»á½«ËüËù×·ËæµÄmasterµÄµØÖ·¸ÄΪ±»ÌáÉýΪmasterµÄslaveµÄеØÖ·¡£

SentinelÊÇÒ»¸ö¼àÊÓÆ÷£¬Ëü¿ÉÒÔ¸ù¾Ý±»¼àÊÓʵÀýµÄÉí·ÝºÍ״̬À´ÅжÏÓ¦¸ÃÖ´ÐкÎÖÖ¶¯×÷¡£SentinelÊÇÈçºÎ·¢ÏÖÆäËûSentinelµÄÄØ£¿Sentinel»áͨ¹ýÃüÁîÁ¬½ÓÏò±»¼àÊÓµÄÖ÷´Ó·þÎñÆ÷·¢ËÍHELLOÐÅÏ¢£¬¸ÃÏûÏ¢°üº¬SentinelµÄIP¡¢¶Ë¿ÚºÅ¡¢IDµÈÄÚÈÝ£¬ÒÔ´ËÀ´ÏòÆäËûSentinelÐû¸æ×Ô¼ºµÄ´æÔÚ¡£Óë´Ëͬʱ£¬Sentinel»áͨ¹ý¶©ÔÄÁ¬½Ó½ÓÊÕÆäËûSentinelµÄHELLOÐÅÏ¢£¬ÒÔ´ËÀ´·¢ÏÖ¼àÊÓͬһ¸öÖ÷·þÎñÆ÷µÄÆäËûSentinel¡£

SentinelÖ®¼ä»á»¥Ïà´´½¨ÃüÁîÁ¬½Ó£¬ÓÃÓÚ½øÐÐͨÐÅ¡£ÒòΪÒѾ­ÓÐÖ÷´Ó·þÎñÆ÷×÷·¢ËͺͽÓÊÕHELLOÐÅÏ¢µÄÖн飬ËùÒÔSentinelÖ®¼ä²»»á´´½¨¶©ÔÄÁ¬½Ó£º

ÒÔÏÂÊÇRedis SentinelµÄ¼Ü¹¹Í¼£¬Sentinel½ÚµãÊý×îºÃÊǵ¥Êý£¬ÖÁÓÚΪʲô£¬Çë²Î¿¼ÒÔϵÄ×ÊÁÏ£º

http://segmentfault.com/a/1190000002680804

http://segmentfault.com/a/1190000002685515

ÏÂÃæ½øÐÐRedis SentinelµÄ²¿ÊðºÍ²âÊÔ£¬±¾´ÎʵÑéµÄ°æ±¾ÊÇredis-3.0.7°æ±¾£¬»·¾³ËµÃ÷£º

192.168.10.128  Sentinel_1
192.168.10.129  Sentinel_2
192.168.10.130  Sentinel_3
192.168.10.131  Redis_Master
192.168.10.132  Redis_Slave

Ò»¡¢ ÔÚÎą̊·þÎñÆ÷ÉÏ·Ö±ðÖ´ÐÐÏÂredis-3.0.7µÄ°²×°£¬ÒÔSentinel_1·þÎñΪÀý£º

[root@Sentinel_1 ~]# wget http://download.redis.io/releases/redis-3.0.7.tar.gz
[root@Sentinel_1 ~]# tar xf redis-3.0.7.tar.gz 
[root@Sentinel_1 ~]# cd redis-3.0.7/src/
[root@Sentinel_1 ~]# make PREFIX=/data/service/redis install

°²×°Íê³Éºó£¬»áÔÚ/data/service/redisÏ»á²úÉúÒ»¸öbinĿ¼:

[root@Sentinel_1 ~]# ll /data/service/redis/
total 12
drwxr-xr-x. 2 root root 4096 Mar  7 19:19 bin
<[root@Sentinel_1 ~]# 

·Ö±ðÔÚÎą̊·þÎñÆ÷ÉÏÌí¼ÓredisµÄbinĿ¼µÄ»·¾³±äÁ¿£¨²»ÊDZØÐèµÄ£©£¬·½±ãÃüÁîµÄʹÓ㬱༭vim /etc/profile.d/redis.sh Ìí¼ÓÒÔÏÂÄÚÈÝ£º

export PATH=/data/service/redis/bin:$PATH

Ö´ÐÐsource /etc/profile.d/redis.sh Èû·¾³±äÁ¿ÉúЧ£º

[root@Sentinel_1 ~]# source /etc/profile.d/redis.sh

¶þ¡¢ÅäÖÃRedisÖ÷´Ó»·¾³£¬Ö÷´Ó»·¾³µÄ²¿ÊðºÜ¼òµ¥£¬ÕâÀï²»ÑÝʾ´î½¨¹ý³Ì£¬Redis_Master: 192.168.10.131 Redis_Slave: 192.168.10.132

Redis_MasterÆô¶¯µÄLog:

 
¸´ÖÆ´úÂë

[root@Redis_Master redis]# tail -f logs/redis_6379.log 
1974:M 07 Mar 22:03:05.381 * DB loaded from disk: 0.001 seconds
1974:M 07 Mar 22:03:05.381 * The server is now ready to accept connections on port 6379
1974:M 07 Mar 22:03:44.592 * Slave 192.168.10.132:6379 asks for synchronization
1974:M 07 Mar 22:03:44.593 * Full resync requested by slave 192.168.10.132:6379
1974:M 07 Mar 22:03:44.593 * Starting BGSAVE for SYNC with target: disk
1974:M 07 Mar 22:03:44.594 * Background saving started by pid 1977
1977:C 07 Mar 22:03:44.632 * DB saved on disk
1977:C 07 Mar 22:03:44.632 * RDB: 4 MB of memory used by copy-on-write
1974:M 07 Mar 22:03:44.649 * Background saving terminated with success
1974:M 07 Mar 22:03:44.650 * Synchronization with slave 192.168.10.132:6379 succeeded

¸´ÖÆ´úÂë

ÔÚRedis_SlaveÆô¶¯µÄLog:
¸´ÖÆ´úÂë

[root@Redis_Slave redis]# tail -f logs/redis_6379.log 
2437:S 07 Mar 22:03:44.246 * Connecting to MASTER 
192.168.10.131:6379
2437:S 07 Mar 22:03:44.247 * MASTER <-> SLAVE 
sync started
2437:S 07 Mar 22:03:44.262 * Non blocking connect for 
SYNC fired the event.
2437:S 07 Mar 22:03:44.268 * Master replied to PING,
replication cancontinue...
2437:S 07 Mar 22:03:44.269 * Partial resynchronization 
not possible (no cached master)
2437:S 07 Mar 22:03:44.270 * Full resync from master: 
5d1fbf46ddd1eb0a7728abbbad61e78908dd7963:1
2437:S 07 Mar 22:03:44.326 * MASTER <-> SLAVE 
sync: receiving 34 bytes from master
2437:S 07 Mar 22:03:44.326 * MASTER <-> SLAVE
sync: Flushing old data
2437:S 07 Mar 22:03:44.328 * MASTER <-> SLAVE 
sync: Loading DB in memory
2437:S 07 Mar 22:03:44.329 * MASTER <-> SLAVE 
sync: Finished with success
¸´ÖÆ´úÂë

¿ÉÒÔ¿´µ½Ö÷´Ó»·¾³ÊÇÕý³£µÄ£¡

Èý¡¢½øÐÐSentinelÅäÖ㬼°ÅäÖÃÎļþµÄ½âÊÍ¡£

ÔÚÈý̨Sentinel·þÎñÆ÷Ï´´½¨confĿ¼ºÍlogĿ¼£¬´æ·ÅÅäÖÃÎļþºÍlog£º
[root@Sentinel_1 ~]# mkdir -p /data/service/redis/sentinel/conf
[root@Sentinel_1 ~]# mkdir -p /data/service/redis/sentinel/log

½øµ½confĿ¼£¬±à¼­Îļþ26379.conf£¬Èý̨Sentinel·þÎñÆ÷£¬ÅäÖö¼Ò»Ñù£º

 

¸´ÖÆ´úÂë [root@Sentinel_1 conf]# pwd /data/service/redis/sentinel/conf [root@Sentinel_1 conf]# cat 26379.conf port 26379 dir "/data/service/redis/sentinel" daemonize yes logfile "/data/service/redis/sentinel/log/sentinel.log" # 6379 sentinel monitor master-6379 192.168.10.131 6379 2 sentinel down-after-milliseconds master-6379 15000 sentinel parallel-syncs master-6379 1 sentinel failover-timeout master-6379 180000 sentinel auth-pass master-6379 123456 sentinel client-reconfig-script master-6379 /data/script/python/notify.py [root@Sentinel_1 conf]# ¸´ÖÆ´úÂë

26379.confÅäÖÃÎļþ½âÊÍ£º

1¡¢Ç°4ÐÐÊǶ¨ÒåsentinelµÄһЩ»ù±¾ÐÅÏ¢£¬¸úredisºÜÀàËÆ£¬²»×÷¹ý¶à½âÊÍ¡£

2¡¢sentinel monitor master-6379 192.168.10.131 6379 2£¨ÕâÒ»Ðдú±ísentinel¼à¿ØµÄmasterµÄÃû×Ö½Ð×ömaster-6379,µØÖ·Îª192.168.10.131:6379£¬Õâ¸ö2´ú±í£¬µ±¼¯ÈºÖÐÓÐ2¸ösentinelÈÏΪmasterËÀÁËʱ£¬²ÅÄÜÕæÕýÈÏΪ¸ÃmasterÒѾ­²»¿ÉÓÃÁË£©

3¡¢down-after-milliseconds £¨sentinel»áÏòmaster·¢ËÍÐÄÌøPINGÀ´È·ÈÏmasterÊÇ·ñ´æ»î£¬Èç¹ûmasterÔÚ¡°Ò»¶¨Ê±¼ä·¶Î§¡±ÄÚ²»»ØÓ¦PONG »òÕßÊǻظ´ÁËÒ»¸ö´íÎóÏûÏ¢£¬ÄÇôÕâ¸ösentinel»áÖ÷¹ÛµØ(µ¥·½ÃæµØ)ÈÏΪÕâ¸ömasterÒѾ­²»¿ÉÓ㬶øÕâ¸ödown-after-milliseconds¾ÍÊÇÓÃÀ´Ö¸¶¨Õâ¸ö¡°Ò»¶¨Ê±¼ä·¶Î§¡±µÄ£¬µ¥Î»ÊǺÁÃë¡££©

4¡¢parallel-syncs£¨ÔÚ·¢ÉúfailoverÖ÷±¸Çл»Ê±£¬Õâ¸öÑ¡ÏîÖ¸¶¨ÁË×î¶à¿ÉÒÔÓжàÉÙ¸öslaveͬʱ¶ÔеÄmaster½øÐÐͬ²½£¬Õâ¸öÊý×ÖԽС£¬Íê³ÉfailoverËùÐèµÄʱ¼ä¾ÍÔ½³¤£¬µ«ÊÇÈç¹ûÕâ¸öÊý×ÖÔ½´ó£¬¾ÍÒâζ×ÅÔ½¶àµÄslaveÒòΪreplication¶ø²»¿ÉÓ᣿ÉÒÔͨ¹ý½«Õâ¸öÖµÉèΪ 1 À´±£Ö¤Ã¿´ÎÖ»ÓÐÒ»¸öslave´¦ÓÚ²»ÄÜ´¦ÀíÃüÁîÇëÇóµÄ״̬£©

5¡¢failover-timeout£¨sentinel¼¯Èº¶¼×ñÊØÒ»¸ö¹æÔò£ºÈç¹ûsentinel AÍÆ¼ösentinel BÈ¥Ö´ÐÐfailover£¬B»áµÈ´ýÒ»¶Îʱ¼äºó£¬×ÔÐÐÔÙ´ÎÈ¥¶Ôͬһ¸ömasterÖ´ÐÐfailover£¬Õâ¸öµÈ´ýµÄʱ¼äÊÇͨ¹ýfailover-timeoutÅäÖÃÏîÈ¥ÅäÖõġ£´ÓÕâ¸ö¹æÔò¿ÉÒÔ¿´³ö£¬sentinel¼¯ÈºÖеÄsentinel²»»áÔÙͬһʱ¿Ì²¢·¢È¥failoverͬһ¸ömaster£¬µÚÒ»¸ö½øÐÐfailoverµÄsentinelÈç¹ûʧ°ÜÁË£¬ÁíÍâÒ»¸ö½«»áÔÚÒ»¶¨Ê±¼äÄÚ½øÐÐÖØÐ½øÐÐfailover£¬ÒÔ´ËÀàÍÆ£©

6¡¢auth-pass(ÕâÑ¡ÏîÖ÷ÒªÕë¶Ôredis master/slave¼Ü¹¹ÉèÖÃÁËÃÜÂëÈÏÖ¤£¬Èç¹ûÅäÖÃÖ÷´ÓʱûÓÐÉ趨ÃÜÂ룬¾Í²»ÐèҪЩѡÏÈôÓÐÃÜÂ룬ÕâÀïÒªÖ¸¶¨Á¬½ÓµÄÃÜÂë)

7¡¢client-reconfig-script (¸Ã²ÎÊýÊǶ¨Òå¹ÊÕÏ×ªÒÆ½Å±¾£¬µ±master¹ÊÕÏ×ªÒÆºó£¬Ö´Ðз¢¶ÌÐÅ»òÕßIPÇл»µÈ)

¹ÊÕÏ×ªÒÆºó·¢ÓʼþµÄnotify.py½Å±¾ÊDzο¼ÁË´óÉñµÄ²©¿Í£ºhttp://www.cnblogs.com/gomysql/p/5040847.html

View Code

ËÄ¡¢ÏÂÃæÆô¶¯Sentinel·þÎñ£¬Æô¶¯·½Ê½ÓÐÁ½ÖÖ£º

·½Ê½Ò»£º

redis-sentinel /path/to/sentinel.conf

·½Ê½¶þ£º

redis-server /path/to/sentinel.conf --sentinel

ÎÒϰ¹ßÓõÚÒ»ÖÖ·½·¨£¬·Ö±ðÔÚÈý̨Sentinel·þÎñÆ÷½øÐÐÆô¶¯£º

µÚһ̨Sentinel_1Æô¶¯log£º

¸´ÖÆ´úÂë

[root@Sentinel_1 sentinel]# redis-sentinel 
/data/service/redis/sentinel/conf/26379.conf 
[root@Sentinel_1 sentinel]# tail -f log/sentinel.log 
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

5153:X 07 Mar 22:37:16.290 # WARNING: The TCP 
backlog setting of 511 cannot be enforced because
/proc/sys/net/core/somaxconn is set to the
lower value of 128.
5153:X 07 Mar 22:37:16.290 # Sentinel 
runid is 21e629e6d2b26682e660258787d5fb995010e6c8
5153:X 07 Mar 22:37:16.290 # +monitor
master master-6379 192.168.10.131 6379 quorum 2
5153:X 07 Mar 22:37:17.330 * +slave 
slave 192.168.10.132:6379 192.168.10.132 6379 @ 
master-6379 192.168.10.131 63795153:X 07 
Mar 22:38:29.406 * +sentinel 
sentinel 192.168.10.129:26379 192.168.10.129 26379 @
master-6379 192.168.10.131 6379
5153:X 07 Mar 22:38:45.024 * +sentinel sentinel 
192.168.10.130:26379 192.168.10.130 26379 @
master-6379 192.168.10.131 6379

¸´ÖÆ´úÂë

µÚ¶þ̨Sentinel_2Æô¶¯log:

¸´ÖÆ´úÂë [root@Sentinel_2 sentinel]# redis-sentinel /data/service/redis/sentinel/conf/26379.conf [root@Sentinel_2 sentinel]# tail -f log/sentinel.log `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 4647:X 07 Mar 22:38:27.570 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/ somaxconn is set to the lower value of 128. 4647:X 07 Mar 22:38:27.570 # Sentinel runid is f391228f430177d881464e908c683bfc73d61c24 4647:X 07 Mar 22:38:27.571 # +monitor master master-6379 192.168.10.131 6379 quorum 2 4647:X 07 Mar 22:38:28.582 * +slave slave 192.168.10.132:6379 192.168.10.132 6379 @ master-6379 192.168.10.131 6379 4647:X 07 Mar 22:38:29.218 * +sentinel sentinel 192.168.10.128:26379 192.168.10.128 26379 @ master-6379 192.168.10.131 6379 4647:X 07 Mar 22:38:45.200 * +sentinel sentinel 192.168.10.130:26379 192.168.10.130 26379 @ master-6379 192.168.10.131 6379 ¸´ÖÆ´úÂë

µÚÈý̨Sentinel_3Æô¶¯log:

¸´ÖÆ´úÂë

[root@Sentinel_3 sentinel]# 
redis-sentinel /data/service/redis/sentinel/conf/26379.conf
[root@Sentinel_3 sentinel]#
tail -f log/sentinel.log 
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               


2115:X 07 Mar 22:38:43.161
# WARNING: The TCP backlog setting of 511 cannot be enforced because
/proc/sys/net/core/somaxconn is set to the lower value of 128.
2115:X 07 Mar 22:38:43.161 
# Sentinel runid is 7fbee9138d4e5c1e2def7bbc4f888cef04d95677
2115:X 07 Mar 22:38:43.161 # +monitor master master
-6379 192.168.10.131 6379 quorum 2
2115:X 07 Mar 22:38:44.167
* +slave slave 192.168.10.132:6379 192.168.10.132 6379
@ master-6379 192.168.10.131 6379
2115:X 07 Mar 22:38:44.818 
* +sentinel sentinel 192.168.10.129:26379 192.168.10.129 26379
@ master-6379 192.168.10.131 6379
2115:X 07 Mar 22:38:44.851 
* +sentinel sentinel 192.168.10.128:26379 192.168.10.128 26379 
@ master-6379 192.168.10.131 6379

¿ÉÒÔ¿´µ½SentinelÕû¸ö¼¯Èº¶¼¿ªÊ¼¹¤×÷ÁË£¬ÎÒÃÇ¿ÉÒÔËæ±ãµÇ¼һ̨Sentinel¿´ÏÂÏÖÔÚ¼àÊÓµÄ״̬£º

¸´ÖÆ´úÂë

[root@Sentinel_1 sentinel]# redis-cli -p 26379
127.0.0.1:26379> INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=master-6379,status=ok,address
=192.168.10.131:6379,slaves=1,sentinels=3
127.0.0.1:26379> 
¸´ÖÆ´úÂë

¿ÉÒÔ¿´µ½×´Ì¬ÊÇstatus=ok£¬slaves=1ÓÐÒ»¸ö´Ó½Úµã¡£

Îå¡¢Redis down»ú²âÊÔ

²âÊÔÒ»¡¢Í£µôRedis_Master£¬¿´Sentinel»á²»»á°Ñ´æ»îµÄSlave½ÚµãÌáÉýΪMaster½Úµã

 

[root@Redis_Master redis]# sh redis stop Stopping ... Waiting for Redis to shutdown ... Redis stopped [root@Redis_Master redis]#

1¡¢Ëæ±ã²é¿´Ò»Ì¨SentinelµÄlog£¬tail -f log/sentinel.log£º

 

¸´ÖÆ´úÂë 5153:X 07 Mar 22:48:20.986 # +sdown master master-6379 192.168.10.131 63795153:X 07 Mar 22:48:21.047 # +odown master master-6379 192.168.10.131 6379 #quorum 2/2 5153:X 07 Mar 22:48:21.049 # +new-epoch 1 5153:X 07 Mar 22:48:21.050 # +try-failover master master-6379 192.168.10.131 6379 5153:X 07 Mar 22:48:21.053 # +vote-for-leader 21e629e6d2b26682e660258787d5fb995010e6c8 1 5153:X 07 Mar 22:48:21.057 # 192.168.10.130:26379 voted for 7fbee9138d4e5c1e2def7bbc4f888cef04d95677 1 5153:X 07 Mar 22:48:21.062 # 192.168.10.129:26379 voted for 7fbee9138d4e5c1e2def7bbc4f888cef04d95677 1 5153:X 07 Mar 22:48:22.441 # +config-update-from sentinel 192.168.10.130:26379 192.168.10.130 26379 @ master-6379 192.168.10.131 6379 5153:X 07 Mar 22:48:22.442 # +switch-master master-6379 192.168.10.131 6379 192.168.10.132 6379 5153:X 07 Mar 22:48:22.443 * +slave slave 192.168.10.131:6379 192.168.10.131 6379 @ master-6379 192. 168.10.132 6379 5153:X 07 Mar 22:48:37.496 # +sdown slave 192.168.10.131:6379 192.168.10.131 6379 @ master-6379 192. 168.10.132 6379 ¸´ÖÆ´úÂë

 

2¡¢Ôٲ鿴Redis_SlaveµÄlog:
 

¸´ÖÆ´úÂë 2437:S 07 Mar 22:48:18.023 * Connecting to MASTER 192.168.10.131:6379 2437:S 07 Mar 22:48:18.026 * MASTER <-> SLAVE sync started 2437:S 07 Mar 22:48:18.029 # Error condition on socket for SYNC: Connection refused 2437:S 07 Mar 22:48:19.050 * Connecting to MASTER 192.168.10.131:6379 2437:S 07 Mar 22:48:19.053 * MASTER <-> SLAVE sync started 2437:S 07 Mar 22:48:19.055 # Error condition on socket for SYNC: Connection refused 2437:S 07 Mar 22:48:20.074 * Connecting to MASTER 192.168.10.131:6379 2437:S 07 Mar 22:48:20.077 * MASTER <-> SLAVE sync started 2437:S 07 Mar 22:48:20.079 # Error condition on socket for SYNC: Connection refused 2437:M 07 Mar 22:48:20.724 * Discarding previously cached master state. 2437:M 07 Mar 22:48:20.725 * MASTER MODE enabled (user request from 'id=7 addr=192.168.10.130:60991 fd=11 name=sentinel-7fbee913-cmd age=577 idle=0 flags=x db=0 sub=0 psub=0 multi=3 qbuf=0 qbuf-free=32768 obl=36 oll=0 omem=0 events=rw cmd=exec') 2437:M 07 Mar 22:48:20.745 # CONFIG REWRITE executed with success. 2437:M 07 Mar 22:48:20.796 * 1 changes in 900 seconds. Saving... 2437:M 07 Mar 22:48:20.870 * Background saving started by pid 2442 2442:C 07 Mar 22:48:20.915 * DB saved on disk 2442:C 07 Mar 22:48:20.915 * RDB: 4 MB of memory used by copy-on-write 2437:M 07 Mar 22:48:20.974 * Background saving terminated with success ¸´ÖÆ´úÂë

3¡¢ÏÖÔÚÔٵǼSentinel²é¿´ÏÖÔÚµÄÖ÷½ÚµãÊÇË­£º
 ¸´ÖÆ´úÂë [root@Sentinel_1 sentinel]# 
redis-cli -p 26379 127.0.0.1:26379> INFO sentinel # 
Sentinel sentinel_masters:1 sentinel_tilt:
0 sentinel_running_scripts:0 
sentinel_scripts_queue_length:0 
master0:name=master-6379,status=ok,
address=192.168.10.132:6379,slaves=1,sentinels=3 
127.0.0.1:26379> ¸´ÖÆ´úÂë 

¿ÉÒÔ¿´µ½£¬ÐµÄMasterÒѾ­±ä³É192.168.10.132ÁË¡£Çл»ºóµÄÓʼþ֪ͨ£º

4¡¢°Ñdown»úµÄredisÆô¶¯ºó£¬»á×Ô¶¯Ìí¼ÓΪslave½ÇÉ«£º

 
¸´ÖÆ´úÂë
 [root@Redis_Master 
redis]# sh redis start Starting Redis server... [root@Redis_Master 
redis]# tail -f logs/redis_6379.log `-._ `-._`-.__.-'_.-' 
_.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 2050:M 07 
Mar 22:55:21.357 # WARNING: The TCP backlog setting 
of 511 cannot be enforced because /proc/sys/net/core/somaxconn 
is set to the lower value of 128. 2050:M 07 Mar 22:55:21.357 
# Server started, Redis version 3.0.7 2050:M 07 Mar 
22:55:21.357 # WARNING you have Transparent Huge Pages 
(THP) support enabled in your kernel. This will create 
latency and memory usage issues with Redis. To fix this 
issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' 
as root, and add it to your /etc/rc.local in order to 
retain the setting after a reboot. Redis must be restarted 
after THP is disabled. 2050:M 07 Mar 22:55:21.357 * 
DB loaded from disk: 0.000 seconds 2050:M 07 Mar 22:55:21.357 
* The server is now ready to accept connections on port 
6379 2050:S 07 Mar 22:55:31.393 * SLAVE OF 192.168.10.132:6379 
enabled (user request from 'id=4 addr=192.168.10.129:50326 
fd=8 name=sentinel-f391228f-cmd age=10 idle=0 flags=x 
db=0 sub=0 psub=0 multi=3 qbuf=0 qbuf-free=32768 obl=36 
oll=0 omem=0 events=rw cmd=exec') 2050:S 07 Mar 22:55:31.397 
# CONFIG REWRITE executed with success. 2050:S 07 Mar 
22:55:31.596 * Connecting to MASTER 192.168.10.132:6379 
2050:S 07 Mar 22:55:31.597 * MASTER <-> SLAVE sync started 
2050:S 07 Mar 22:55:31.597 * Non blocking connect for 
SYNC fired the event. 2050:S 07 Mar 22:55:31.598 * Master 
replied to PING, replication can continue... 2050:S 
07 Mar 22:55:31.600 * Partial resynchronization not 
possible (no cached master) 2050:S 07 Mar 22:55:31.634 
* Full resync from master: 234202729a196fd6523e41bcb7e29d9866c905c6:1 
2050:S 07 Mar 22:55:31.648 * MASTER <-> SLAVE sync: 
receiving 34 bytes from master 2050:S 07 Mar 22:55:31.649 
* MASTER <-> SLAVE sync: Flushing old data 2050:S 07 
Mar 22:55:31.649 * MASTER <-> SLAVE sync: Loading DB 
in memory 2050:S 07 Mar 22:55:31.649 * MASTER <-> SLAVE 
sync: Finished with success 
¸´ÖÆ´úÂë

5¡¢²é¿´Sentinel log£¬¿ÉÒÔ¿´µ½slave±»¼Ó½øÀ´£¬²¢³ÉΪSlaveµÄ½ÇÉ«ÁË:

4647:X 07 Mar 22:55:31.787 * +convert-to-slave slave 192.168.10.131:6379 192.168.10.131 6379 @ master-6379 192.168.10.132 6379

²âÊÔ¶þ¡¢°ÑеÄRedis_Master(192.168.10.132£¬Ô­À´µÄslave)Í£µô£¬¿´ÊÇ·ñ°ÑеÄSlave£¨192.168.10.131£¬Ô­À´µÄmaster£©ÌáÉýΪÖ÷£º

1¡¢Ö´ÐÐredis stop²Ù×÷

 

[root@Redis_Slave redis]# sh redis stop Stopping ... Waiting for Redis to shutdown ... Redis stopped

 

2¡¢²é¿´Sentinel log£º
¸´ÖÆ´úÂë

5153:X 07 Mar 23:01:54.895
# +try-failover master master
-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:54.898
# +vote-for-leader 
21e629e6d2b26682e660258787d5fb995010e6c8 2
5153:X 07 Mar 23:01:54.908
# 192.168.10.129:26379 voted for 
f391228f430177d881464e908c683bfc73d61c24 2
5153:X 07 Mar 23:01:54.913 
# 192.168.10.130:26379 voted for 
21e629e6d2b26682e660258787d5fb995010e6c8 2
5153:X 07 Mar 23:01:54.968 
# +elected-leader master 
master-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:54.968
 # +failover-state-select-slave 
master master-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:55.027
# +selected-slave slave
192.168.10.131:6379 192.168.10.131 6379
@ master-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:55.027
* +failover-state-send-slaveof-noone slave 
192.168.10.131:6379 192.168.10.131 6379 
@ master-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:55.085 
* +failover-state-wait-promotion slave 
192.168.10.131:6379 192.168.10.131 6379
@ master-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:55.912 
# +promoted-slave slave 192.168.10.131:6379 192.168.10.131 6379
@ master-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:55.915 
# +failover-state-reconf-slaves master master
-6379 192.168.10.132 6379
5153:X 07 Mar 23:01:56.009 
# +failover-end master master-
6379 192.168.10.132 6379
5153:X 07 Mar 23:01:56.010 
# +switch-master master-
6379 192.168.10.132 6379 192.168.10.131 6379
5153:X 07 Mar 23:01:56.010 
* +slave slave 192.168.10.132:6379 
192.168.10.132 6379 
@ master-6379 192.168.10.131 6379
5153:X 07 Mar 23:02:11.066 
# +sdown slave 192.168.10.132:6379 192.168.10.132 6379
@ master-6379 192.168.10.131 6379
¸´ÖÆ´úÂë

3¡¢Ôٲ鿴ÐÂRedis_MasterµÄlog£¬¿ÉÒÔ¿´µ½×´Ì¬´ÓSLaveת»ØÁËMaster:
¸´ÖÆ´úÂë

[root@Redis_Master redis]
# tail -f logs/redis_6379.log 
2050:S 07 Mar 23:01:52.367 
# Error condition on socket for SYNC: Connection refused
2050:S 07 Mar 23:01:53.382 
* Connecting to MASTER
192.168.10.132:6379
2050:S 07 Mar 23:01:53.384
* MASTER <-> SLAVE sync started
2050:S 07 Mar 23:01:53.384 
# Error condition on socket
for SYNC: Connection refused
2050:S 07 Mar 23:01:54.404
* Connecting to MASTER 192.168.10.132:6379
2050:S 07 Mar 23:01:54.405
* MASTER <-> SLAVE sync started
2050:S 07 Mar 23:01:54.406 
# Error condition on socket for SYNC: Connection refused
2050:M 07 Mar 23:01:54.868 
* Discarding previously cached master state.
2050:M 07 Mar 23:01:54.868 
* MASTER MODE enabled 
(user request from 'id=8 addr=192.168.10.128:37585 
fd=6 name=sentinel-21e629e6-cmd age=383 
idle=0 flags=x db=0 sub=0 psub=0 multi=3 qbuf=0 qbuf-free=32768 
obl=36 oll=0 omem=0 events=rw cmd=exec')
2050:M 07 Mar 23:01:54.870 
# CONFIG REWRITE executed with success.
¸´ÖÆ´úÂë
¸´ÖÆ´úÂë
[root@Redis_Master redis]
# tail -f logs/redis_6379.log 
2050:S 07 Mar 23:01:52.367
# Error condition on socket for
SYNC: Connection refused
2050:S 07 Mar 23:01:53.382 
* Connecting to MASTER 
192.168.10.132:6379
2050:S 07 Mar 23:01:53.384
* MASTER <-> SLAVE sync started
2050:S 07 Mar 23:01:53.384
# Error condition on socket for SYNC:
Connection refused
2050:S 07 Mar 23:01:54.404 
* Connecting to MASTER 192.168.10.132:6379
2050:S 07 Mar 23:01:54.405 
* MASTER <-> SLAVE sync started
2050:S 07 Mar 23:01:54.406 
# Error condition on socket for SYNC: Connection refused
2050:M 07 Mar 23:01:54.868
* Discarding previously cached master state.
2050:M 07 Mar 23:01:54.868 
* MASTER MODE enabled 
(user request from 'id=8 addr=192.168.10.128:37585 
fd=6 name=sentinel-21e629e6-cmd age=383 idle=0 flags=x 
db=0 sub=0 psub=0 multi=3 qbuf=0 qbuf-free=32768 obl=36 
oll=0 omem=0 events=rw cmd=exec')
2050:M 07 Mar 23:01:54.870 
# CONFIG REWRITE executed with success.
¸´ÖÆ´úÂë

4¡¢Ôٲ鿴SentinelµÄ¼àÊÓÐÅÏ¢£¬¿ÉÒÔ¿´µ½ÐµÄRedis_MasterÒѾ­ÊÇ192.168.10.131ÁË£º

 ¸´ÖÆ´úÂë

[root@Sentinel_1 sentinel]# redis-cli -p 26379       
127.0.0.1:26379> INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=master-6379,status=ok,address
=192.168.10.131:6379,slaves=1,sentinels=3
127.0.0.1:26379> 
¸´ÖÆ´úÂë

¹ÊÕÏ×ªÒÆºóµÄÓʼþ±¨¾¯ÈçÏ£º

5¡¢°Ñdown»úµÄRedisÆô¶¯£¬Sentinel ÓÖ»á°ÑËü¼Ó½øÀ´À´£¬×÷ΪSlaveµÄ½ÇÉ«£º

[root@Redis_Slave redis]# sh redis start
Starting Redis server...
[root@Redis_Slave redis]#

²é¿´Sentinel log£º

2115:X 07 Mar 23:18:49.4
9 * +convert-to-slave slave 
192.168.10.132:6379 192.168.10.132 6379
@ master-6379 192.168.10.131 6379

Ôٲ鿴Redis-Master log£º

¸´ÖÆ´úÂë [root@Redis_Master redis] # tail -f logs/redis_6379.log 2050:S 07 Mar 23:01:52.367 # Error condition on socket for SYNC: Connection refused 2050:S 07 Mar 23:01:53.382 * Connecting to MASTER 192.168.10.132:6379 2050:S 07 Mar 23:01:53.384 * MASTER <-> SLAVE sync started 2050:S 07 Mar 23:01:53.384 # Error condition on socket for SYNC: Connection refused 2050:S 07 Mar 23:01:54.404 * Connecting to MASTER 192.168.10.132:6379 2050:S 07 Mar 23:01:54.405 * MASTER <-> SLAVE sync started 2050:S 07 Mar 23:01:54.406 # Error condition on socket for SYNC: Connection refused 2050:M 07 Mar 23:01:54.868 * Discarding previously cached master state. 2050:M 07 Mar 23:01:54.868 * MASTER MODE enabled (user request from 'id=8 addr=192.168.10.128:37585 fd=6 name=sentinel-21e629e6-cmd age=383 idle=0 flags=x db=0 sub=0 psub=0 multi=3 qbuf=0 qbuf-free=32768 obl=36 oll=0 omem=0 events=rw cmd=exec') 2050:M 07 Mar 23:01:54.870 # CONFIG REWRITE executed with success. 2050:M 07 Mar 23:10:22.009 * 1 changes in 900 seconds. Saving... 2050:M 07 Mar 23:10:22.126 * Background saving started by pid 2084 2084:C 07 Mar 23:10:22.167 * DB saved on disk 2084:C 07 Mar 23:10:22.167 * RDB: 4 MB of memory used by copy-on-write 2050:M 07 Mar 23:10:22.229 * Background saving terminated with success 2050:M 07 Mar 23:18:49.389 * Slave 192.168.10.132:6379 asks for synchronization 2050:M 07 Mar 23:18:49.389 * Full resync requested by slave 192.168.10.132:6379 2050:M 07 Mar 23:18:49.389 * Starting BGSAVE for SYNC with target: disk 2050:M 07 Mar 23:18:49.417 * Background saving started by pid 2085 2085:C 07 Mar 23:18:49.428 * DB saved on disk 2085:C 07 Mar 23:18:49.429 * RDB: 4 MB of memory used by copy-on-write 2050:M 07 Mar 23:18:49.479 * Background saving terminated with success 2050:M 07 Mar 23:18:49.479 * Synchronization with slave 192.168.10.132:6379 succeeded ¸´ÖÆ´úÂë

Ôٲ鿴Redis_SlaveµÄlog£º
¸´ÖÆ´úÂë

2514:S 07 Mar 23:18:48.859
# CONFIG REWRITE executed with success.
2514:S 07 Mar 23:18:49.049 
* Connecting to MASTER 192.168.10.131:6379
2514:S 07 Mar 23:18:49.053
* MASTER <-> SLAVE sync started
2514:S 07 Mar 23:18:49.055 
* Non blocking connect for SYNC fired the event.
2514:S 07 Mar 23:18:49.059 
* Master replied to PING, replication can continue...
2514:S 07 Mar 23:18:49.065 
* Partial resynchronization not possible (no cached master)
2514:S 07 Mar 23:18:49.099
* Full resync from master: 3e1fbd2ec6f57b3362687051ab1bb6edf1d2ee27:1
2514:S 07 Mar 23:18:49.157 
* MASTER <-> SLAVE sync: receiving 34 bytes from master
2514:S 07 Mar 23:18:49.157 
* MASTER <-> SLAVE sync: Flushing old data
2514:S 07 Mar 23:18:49.157 
* MASTER <-> SLAVE sync: Loading DB in memory
2514:S 07 Mar 23:18:49.157 
* MASTER <-> SLAVE sync: Finished with success
¸´ÖÆ´úÂë

¿ÉÒÔ¿´µ½RedisÖ÷´Óͬ²½»¹ÊÇÕý³£ÔËÐеġ£¸ü¶àµÄ²âÊÔ¾ÍÁô¸øÍ¬Ñ§ÃÇÁË^o^

×ܽ᣺

Ò»¡¢Redis-SentinelÊÇRedis¹Ù·½ÍƼöµÄ¸ß¿ÉÓÃÐÔ(HA)½â¾ö·½°¸£¬»¹ÊDZȽϿɿ¿µÄ£¬ÍƼö´ó¼ÒÔÚÉú²ú»·¾³²¿Êð²¢Ê¹ÓÃ

¶þ¡¢Redis-Sentinel¿ÉÒÔ×Ô¶¨Òå¹ÊÕÏ×ªÒÆ½Å±¾£¬Õ⻹ÊDZȽÏÈËÐÔ»¯µÄ£¬¿ÉÒÔ½áºÏshell½Å±¾»òÕßPython½Å±¾

Èý¡¢ÏÖÔÚRedis¸ß¿ÉÓüܹ¹·Ç³£¶à£¬µ«¸÷ÓÐÓÅÁÓ£¬ÐèҪ˵µÄÊÇ£¬Èç¹ûÒªÉÏRedis¸ß¿ÉÓüܹ¹£¬ÐèÒª·´¸´²âÊÔ¡£

   
5704 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Óû§¹ÊÊÂÓëÓÃÀý
½»»¥Éè¼ÆÊ¦Ö®¾«Òæ»­²¼Æª
Êý¾Ý·ÖÎöÖ®Óû§»­Ïñ·½·¨Óëʵ¼ù
ÈçºÎ¿ìËÙ½¨Á¢Óû§Ä£ÐÍ£¿
 
Ïà¹ØÎĵµ

Óû§½çÃæÉè¼Æ
¸øÆóÒµ×ö´óÊý¾Ý¾«×¼Óû§»­Ïñ
Óû§ÌåÑéºÍ½»»¥Éè¼Æ
´óÊý¾ÝϵÄÓû§»­Ïñ
Ïà¹Ø¿Î³Ì

Óû§ÌåÑé&½çÃæÉè¼Æ
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
Óû§Ñо¿ÓëÓû§½¨Ä£
Óû§ÌåÑéµÄÈí¼þUIÉè¼Æ×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

´ÓÊÖ»úµÇÂ¼Ò³ÃæÉè¼ÆÏëµ½µÄ
ÈçºÎ°ÑÎÞÒâʶÒýÈë½»»¥Éè¼ÆÖÐ
½»»¥Éè¼ÆµÄÕæÏà
µ±ÊÓ¾õÉè¼ÆÊ¦ÓöÉϲúÆ·¾­Àí
ÊÖ»ú½»»¥Éè¼ÆÔ­Ôò
Óû§ÌåÑéÖ®ÍøÒ³°å¿éÉè¼Æ

ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
¿ÉÓÃÐÔÆÀ¹À
Desktop¼°Web-basedÊÓ¾õÉè¼Æ
ÈÏÖªÔ­ÀíÓëÉè¼ÆÓ¦ÓÃ
ÊÖ»úÓû§½çÃæÉè¼Æ

±±¾© ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ
±±¾© Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉϺ£ »ªÎª Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉîÛÚ Óû§ÌåÑé& ½çÃæÉè¼Æ
°®Á¢ÐÅ ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
±±¾© Óû§ÌåÑéÓë½çÃæÉè¼Æ
¸£ÖÝ ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ