Redis/Redis-sentinel环境建立和验证---接着昨天的验证流程,再按照binding物理IP的方式进行

背景:
    12.26日的验证,采用redis直接绑定127.0.0.1,导致sentinel切换/监控存在问题;
本次验证条件:
    各个redis node都在配置文件中指定binding 物理IP(之前是采用默认,绑定127.0.0.1);
环境:
    192.68.0.11 : master:6379/slave:6380/sentinel:26379
    192.68.0.12 : slave:6379
过程:
    1. 正常启动各个节点,设置master/slave状态,节点显示正常;
    启动sentinel,显示状态正常:
    [29777] 27 Nov 10:16:01.526 * +slave slave 192.168.0.12:6379 192.168.0.12 6379 @ mymaster 192.168.0.11 6379
    [29777] 27 Nov 10:16:01.526 * +slave slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.11 6379
    2. shutdown 11 6379master:
    sentinel console显示正常,选择192.68.0.12 : slave:6379为master:
[29777] 27 Nov 10:18:04.906 # +sdown master mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:04.906 # +odown master mymaster 192.168.0.11 6379 #quorum 1/1
[29777] 27 Nov 10:18:04.906 # +failover-triggered master mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:04.906 # +failover-state-wait-start master mymaster 192.168.0.11 6379 #starting in 12572 milliseconds
[29777] 27 Nov 10:18:17.554 # +failover-state-select-slave master mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:17.654 # +selected-slave slave 192.168.0.12:6379 192.168.0.12 6379 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:17.654 * +failover-state-send-slaveof-noone slave 192.168.0.12:6379 192.168.0.12 6379 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:17.754 * +failover-state-wait-promotion slave 192.168.0.12:6379 192.168.0.12 6379 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:17.957 # +promoted-slave slave 192.168.0.12:6379 192.168.0.12 6379 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:17.957 # +failover-state-reconf-slaves master mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:18.056 * +slave-reconf-sent slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:18.959 * +slave-reconf-inprog slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:18.960 * +slave-reconf-done slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:19.060 # +failover-end master mymaster 192.168.0.11 6379
[29777] 27 Nov 10:18:19.060 # +switch-master mymaster 192.168.0.11 6379 192.168.0.12 6379
[29777] 27 Nov 10:18:19.161 * +slave slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.12 6379
[29777] 27 Nov 10:18:49.141 # +sdown slave 192.168.0.11:6379 192.168.0.11 6379 @ mymaster 192.168.0.12 6379
    查询两个节点,显示:
        11的6380为12:6379的slave,正常
        12的6379显示正常,一个slave:
role:master
connected_slaves:1
slave0:192.168.0.11,6380,online
    sentinel masters查询显示12为主机,正常;
    sentinel slaves mymaster查询:
redis 127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.0.11:6380"      --正常
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6380"
    7) "runid"
    8) "e02b196ce500fa2c4aaecb8143270ad2a290c50a"
    9) "flags"
   10) "slave"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "895"
   15) "last-ping-reply"
   16) "895"
   17) "info-refresh"
   18) "3302"
   19) "master-link-down-time"
   20) "0"
   21) "master-link-status"
   22) "ok"
   23) "master-host"
   24) "192.168.0.12"
   25) "master-port"
   26) "6379"
   27) "slave-priority"
   28) "100"
2)  1) "name"
    2) "192.168.0.11:6379"      ---原来11变成slave
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6379"
    7) "runid"              --没有了runid
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected,demote"   --状态已经down
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "484937"
   15) "last-ping-reply"
   16) "484937"
   17) "s-down-time"
   18) "454856"
   19) "info-refresh"
   20) "1385519183997"
   21) "master-link-down-time"
   22) "0"
   23) "master-link-status"     ---下边状态都不正常
   24) "err"
   25) "master-host"
   26) "?"
   27) "master-port"
   28) "0"
   29) "slave-priority"
   30) "100"
    
------shutdown 11的6380从机:
    sentinel console:显示11的6380状态为下线:
redis 127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.0.11:6380"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6380"
    7) "runid"
    8) "e02b196ce500fa2c4aaecb8143270ad2a290c50a"
    9) "flags"
   10) "s_down,slave,disconnected"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "52727"
   15) "last-ping-reply"
   16) "52727"
   17) "s-down-time"
   18) "22714"
   19) "info-refresh"
   20) "52325"
   21) "master-link-down-time"
   22) "0"
   23) "master-link-status"
   24) "ok"
   25) "master-host"
   26) "192.168.0.12"
   27) "master-port"
   28) "6379"
   29) "slave-priority"
   30) "100"
2)  1) "name"
    2) "192.168.0.11:6379"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6379"
    7) "runid"
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected,demote"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "654327"
   15) "last-ping-reply"
   16) "654327"
   17) "s-down-time"
   18) "624246"
   19) "info-refresh"
   20) "1385519353387"
   21) "master-link-down-time"
   22) "0"
   23) "master-link-status"
   24) "err"
   25) "master-host"
   26) "?"
   27) "master-port"
   28) "0"
   29) "slave-priority"
   30) "100"
    12的info:显示slave已经没有了;
    
-----重启11的6380:
    sentinel console:侦测到6380启动,但是由于默认为master,所以无法挂载:并从slave中去除;
[29777] 27 Nov 10:30:17.397 * +reboot slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.12 6379
[29777] 27 Nov 10:30:17.397 # -slave-restart-as-master slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.12 6379 #removing it from the attached slaves
    sentinel slaves查询显示只有一个slave: 11:6379:
 redis 127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.0.11:6379"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6379"
    7) "runid"
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected,demote"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "805280"
   15) "last-ping-reply"
   16) "805280"
   17) "s-down-time"
   18) "775199"
   19) "info-refresh"
   20) "1385519504340"
   21) "master-link-down-time"
   22) "0"
   23) "master-link-status"
   24) "err"
   25) "master-host"
   26) "?"
   27) "master-port"
   28) "0"
   29) "slave-priority"
   30) "100"
----重启11:6379:
    11:6379info显示自己变成了slave!
    12:6379master info显示自己有一个slave,是11:6379,正常;
    sentinel console显示:11:6379被移除然后又被重新添加;
    [29777] 27 Nov 10:32:42.236 # -sdown slave 192.168.0.11:6379 192.168.0.11 6379 @ mymaster 192.168.0.12 6379
[29777] 27 Nov 10:32:52.054 * +slave slave 192.168.0.11:6379 192.168.0.11 6379 @ mymaster 192.168.0.12 6379
    sentinel slaves查询:一个slave,状态正常;
    redis 127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.0.11:6379"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6379"
    7) "runid"
    8) "2a6a7e441f40b2ce803080273dae656382a8076f"
    9) "flags"
   10) "slave"
   11) "pending-commands"
   12) "-1"
   13) "last-ok-ping-reply"
   14) "678"
   15) "last-ping-reply"
   16) "678"
   17) "info-refresh"
   18) "6488"
   19) "master-link-down-time"
   20) "0"
   21) "master-link-status"
   22) "ok"
   23) "master-host"
   24) "192.168.0.12"
   25) "master-port"
   26) "6379"
   27) "slave-priority"
   28) "100"
redis 127.0.0.1:26379> 
    
    在主上做set,验证从机:主机设置,从机可以查到,功能正常;


--------设置11:6380为12的从机:
    设置成功,状态正常,从该从机可以查到刚才新设置的变量,功能正常;
    sentinel console显示添加新slave:
[29777] 27 Nov 10:37:32.337 * +slave slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.12 6379
    查询slaves正常:
 redis 127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.0.11:6380"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6380"
    7) "runid"
    8) "ee58ff9f4e565b04d0f6fe1b5c7877229ef8b509"
    9) "flags"
   10) "slave"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "332"
   15) "last-ping-reply"
   16) "332"
   17) "info-refresh"
   18) "32"
   19) "master-link-down-time"
   20) "0"
   21) "master-link-status"
   22) "ok"
   23) "master-host"
   24) "192.168.0.12"
   25) "master-port"
   26) "6379"
   27) "slave-priority"
   28) "100"
2)  1) "name"
    2) "192.168.0.11:6379"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6379"
    7) "runid"
    8) "2a6a7e441f40b2ce803080273dae656382a8076f"
    9) "flags"
   10) "slave"
   11) "pending-commands"
   12) "-1"
   13) "last-ok-ping-reply"
   14) "332"
   15) "last-ping-reply"
   16) "332"
   17) "info-refresh"
   18) "9949"
   19) "master-link-down-time"
   20) "0"
   21) "master-link-status"
   22) "ok"
   23) "master-host"
   24) "192.168.0.12"
   25) "master-port"
   26) "6379"
   27) "slave-priority"
   28) "100"
redis 127.0.0.1:26379> 
    
------------shutdown 11:6380 slave(刚添加的):
    12显示只有一个从机,正常;
    sentinel slave显示:两个从机,11:6380状态为down,正常:
redis 127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.0.11:6380"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6380"
    7) "runid"
    8) "ee58ff9f4e565b04d0f6fe1b5c7877229ef8b509"
    9) "flags"
   10) "s_down,slave,disconnected"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "31882"
   15) "last-ping-reply"
   16) "31882"
   17) "s-down-time"
   18) "1795"
   19) "info-refresh"
   20) "40099"
   21) "master-link-down-time"
   22) "0"
   23) "master-link-status"
   24) "ok"
   25) "master-host"
   26) "192.168.0.12"
   27) "master-port"
   28) "6379"
   29) "slave-priority"
   30) "100"
2)  1) "name"
    2) "192.168.0.11:6379"
    3) "ip"
    4) "192.168.0.11"
    5) "port"
    6) "6379"
    7) "runid"
    8) "2a6a7e441f40b2ce803080273dae656382a8076f"
    9) "flags"
   10) "slave"
   11) "pending-commands"
   12) "-1"
   13) "last-ok-ping-reply"
   14) "792"
   15) "last-ping-reply"
   16) "792"
   17) "info-refresh"
   18) "9922"
   19) "master-link-down-time"
   20) "0"
   21) "master-link-status"
   22) "ok"
   23) "master-host"
   24) "192.168.0.12"
   25) "master-port"
   26) "6379"
   27) "slave-priority"
   28) "100"
sentinel console显示从机移出:
[29777] 27 Nov 10:40:00.926 # +sdown slave 192.168.0.11:6380 192.168.0.11 6380 @ mymaster 192.168.0.12 6379


--------shutdown 11:6379 从机:
    不再直接被接管为slave,而是为master,需要slaveof;不知道为什么
----------------结论:
    相比较与昨天的测试:
    1. 必须要在redis节点上明确binding 物理IP,不能使用localhost/127.0.0.1,否则sentinel将会出现问题;
    2. 从机down/up正常,但是up后需要明确执行slaveof;
    3. 主机down后,可以被正常接管,其余从机也正确转移;但是原有主机up后,马上就被接管为slave,和上述从机不同,不知到什么原因;再次shutdown该节点,行为和一般从机一样,先是master,明确slaveof以后正常;
    结论:sentinel功能基本可用,可以完成master-slave切换,但是原有从机下线后,需要手工操作并做slaveof指定!

你可能感兴趣的:(架构设计,技术研究,后端技术)