zoukankan      html  css  js  c++  java
  • Sentinel系统监控Redis主从节点

    author:JevonWei
    版权声明:原创作品
    blog:http://119.23.52.191/

    构建Sentinel监控Redis的主节点架构

    拓扑结构结构
    image

    拓扑环境

    master 	172.16.252.82
    slave1  	172.16.252.184
    slave2  	172.16.252.67
    sentinl1 	172.16.252.82
    sentinl2 	172.16.252.184
    sentinl3   	172.16.252.67
    

    实现Redis的主从复制

    各节点安装redis(epel)

        [root@master ~]# yum -y install redis
    [root@master ~]# setenforce 0
    [root@master ~]# iptables -F
    [root@master ~]# systemctl start redis
    [root@slave1 ~]# yum -y install redis
    [root@slave1 ~]# setenforce 0
    [root@slave1 ~]# iptables -F
    [root@slave1 ~]# systemctl start redis
    [root@slave2 ~]# yum -y install redis
    [root@slave2 ~]# setenforce 0
    [root@slave2 ~]# iptables -F
    

    配置redis

    master

        [root@slave1 ~]# vim /etc/redis.conf 
    bind 172.16.252.82   \监听本地IP
    requirepass "danran"    添加认证密码
    [root@slave1 ~]# systemctl restart redis
    [root@slave1 ~]# ss -ntl
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128    172.16.252.184:6379                     *:*  
    

    slave1

        [root@slave1 ~]# vim /etc/redis.conf 
    bind 172.16.252.184   \监听本地IP
    [root@slave1 ~]# systemctl restart redis
    [root@slave1 ~]# ss -ntl
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128    172.16.252.184:6379                     *:*  
    [root@slave1 ~]# redis-cli -h 172.16.252.184
    172.16.252.184:6379> SLAVEOF 172.16.252.82 6379    设置成为172.16.252.82的从数据库
    OK
    172.16.252.184:6379> CONFIG SET masterauth danran   设置master主服务端的认证密码
    OK
    172.16.252.184:6379> CONFIG REWRITE 				保存到配置文件永久生效
    OK
    

    slave2

        [root@slave2 ~]# vim /etc/redis.conf 
    bind 172.16.252.67   \监听本地IP
    slaveof 172.16.252.82 6379
    masterauth "danran"
    	修改REPLICAION配置段的slaveof和masterauth参数设置从节点 
    [root@slave2 ~]# systemctl start redis
    [root@slave2 ~]# ss  -ntl
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128    172.16.252.67:6379                     *:*       
    

    master查看主从节点信息

        [root@master ~]# redis-cli -h 172.16.252.82
    172.16.252.82:6379> AUTH danran
    OK
    172.16.252.82:6379> INFO Replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=172.16.252.184,port=6379,state=online,offset=652,lag=0 \lag表示与master节点同步延时时长
    slave1:ip=172.16.252.67,port=6379,state=online,offset=652,lag=0
    master_repl_offset:652
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:651
    

    测试数据同步

    master

        [root@master ~]# redis-cli -h 172.16.252.82
    172.16.252.82:6379> AUTH danran
    OK
    172.16.252.82:6379> ZADD colors 1 red 2 bulue 6 green 4 gray
    (integer) 4
    

    slave1

        [root@slave1 ~]# redis-cli -h 172.16.252.184 
    172.16.252.184:6379> ZRANGE colors 0 5
    1) "red"
    2) "bulue"
    3) "gray"
    4) "green"
    

    slave2

        [root@slave2 ~]# redis-cli -h 172.16.252.67
    172.16.252.67:6379> ZRANGE colors 0 5
    1) "red"
    2) "bulue"
    3) "gray"
    4) "green"
    

    配置Sentinel系统

    sentinel1

    [root@sentinel ~]# vim /etc/redis-sentinel.conf 
    bind 172.16.252.82   监听IP
    sentinel monitor mymaster 172.16.252.82 6379 2   mymaster为master的标识符,监控172.16.252.82主机的6379端口,至少2个主机投票推举方可推举出主节点
    sentinel auth-pass mymaster danran     sentinel认证密码,建议所有节点的密码认证一致
    sentinel down-after-milliseconds mymaster 5000 			当超出5s连接不到主节点时,则表示主节点故障,重新推选出主节点
    [root@sentinel ~]# systemctl start redis-sentinel
    [root@sentinel ~]# ss -ntl
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128          *:26379                    *:*                  
    

    sentinel2

    [root@sentine2 ~]# vim /etc/redis-sentinel.conf 
    bind 172.16.252.184   监听地址
    sentinel monitor mymaster 172.16.252.82 6379 2   mymaster为master的标识符,监控172.16.252.82主机的6379端口,至少2个主机投票推举方可推举出主节点
    sentinel auth-pass mymaster danran     sentinel认证密码,建议所有节点的密码认证一致
    sentinel down-after-milliseconds mymaster 5000 			当超出5s连接不到主节点时,则表示主节点故障,重新推选出主节点
    [root@sentine2 ~]# systemctl start redis-sentinel
    [root@sentine2 ~]# ss -ntl
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128          *:26379                    *:*                 
    

    sentinel3

    [root@sentine3 ~]# vim /etc/redis-sentinel.conf 
    bind 172.16.252.67   监听IP
    sentinel monitor mymaster 172.16.252.82 6379 2   mymaster为master的标识符,监控172.16.252.82主机的6379端口,至少2个主机投票推举方可推举出主节点
    sentinel auth-pass mymaster danran     sentinel认证密码,建议所有节点的密码认证一致
    sentinel down-after-milliseconds mymaster 5000 			当超出5s连接不到主节点时,则表示主节点故障,重新推选出主节点
    [root@sentine3 ~]# systemctl start redis-sentinel
    [root@sentine3 ~]# ss -ntl
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128          *:26379                    *:*                 
    

    sentinel查看主从节点信息并测试主从节点切换

    [root@sentinel ~]# redis-cli -h 172.16.252.82 -p 26379
    172.16.252.82:26379> SENTINEL masters    显示主节点的属性信息,主节点为172.16.252.82
    1)  1) "name"
    	2) "mymaster"    主节点名称
    	3) "ip"
    	4) "172.16.252.82"
    	5) "port"
    	6) "6379"
    	7) "runid"
    	8) "2847d8ceda8d3a03f0df814091fc5174921f57ea"
    	9) "flags"		
       10) "master"
       11) "link-pending-commands"
       12) "0"
       13) "link-refcount"
       14) "1"
       15) "last-ping-sent"
       16) "0"
       17) "last-ok-ping-reply"
       18) "198"
       19) "last-ping-reply"
       20) "198"
       21) "down-after-milliseconds"
       22) "3000"
       23) "info-refresh"
       24) "4299"
       25) "role-reported"
       26) "master"
       27) "role-reported-time"
       28) "4305"
       29) "config-epoch"
       30) "0"
       31) "num-slaves"
       32) "2"
       33) "num-other-sentinels"
       34) "2"
       35) "quorum"
       36) "2"
       37) "failover-timeout"   超时时间
       38) "180000"
       39) "parallel-syncs"
       40) "1"
    
    172.16.252.82:26379> SENTINEL slave mymaster   显示主节点为mymaster的从节点属性信息
    (error) ERR Unknown sentinel subcommand 'slave'
    172.16.252.82:26379> SENTINEL slaves mymaster
    1)  1) "name"
    	2) "172.16.252.184:6379"
    	3) "ip"
    	4) "172.16.252.184"
    	5) "port"
    	6) "6379"
    	7) "runid"
    	8) ""
    	9) "flags"
       10) "s_down,slave"
       11) "link-pending-commands"
       12) "14"
       13) "link-refcount"
       14) "1"
       15) "last-ping-sent"
       16) "233250"
       17) "last-ok-ping-reply"
       18) "233250"
       19) "last-ping-reply"
       20) "233250"
       21) "s-down-time"
       22) "230233"
       23) "down-after-milliseconds"
       24) "3000"
       25) "info-refresh"
       26) "1505553054438"
       27) "role-reported"
       28) "slave"
       29) "role-reported-time"
       30) "233250"
       31) "master-link-down-time"
       32) "0"
       33) "master-link-status"
       34) "err"
       35) "master-host"
       36) "?"
       37) "master-port"
       38) "0"
       39) "slave-priority"
       40) "100"
       41) "slave-repl-offset"
       42) "0"
    2)  1) "name"
    	2) "172.16.252.67:6379"
    	3) "ip"
    	4) "172.16.252.67"
    	5) "port"
    	6) "6379"
    	7) "runid"
    	8) "fc91077ac51c954817a85922908320f7f70e2d61"
    	9) "flags"
       10) "slave"
       11) "link-pending-commands"
       12) "0"
       13) "link-refcount"
       14) "1"
       15) "last-ping-sent"
       16) "0"
       17) "last-ok-ping-reply"
       18) "374"
       19) "last-ping-reply"
       20) "374"
       21) "down-after-milliseconds"
       22) "3000"
       23) "info-refresh"
       24) "2509"
       25) "role-reported"
       26) "slave"
       27) "role-reported-time"
       28) "233250"
       29) "master-link-down-time"
       30) "0"
       31) "master-link-status"
       32) "ok"
       33) "master-host"
       34) "172.16.252.82"
       35) "master-port"
       36) "6379"
       37) "slave-priority"
       38) "100"
       39) "slave-repl-offset"
       40) "186072"
    
    172.16.252.82:26379> SENTINEL failover mymaster    手动切换主节点
    OK
    172.16.252.82:26379> SENTINEL masters   主节点由172.16.252.82切换到了172.16.252.67
    1)  1) "name"
    	2) "mymaster"
    	3) "ip"
    	4) "172.16.252.67"
    	5) "port"
    	6) "6379"
    	7) "runid"
    	8) "fc91077ac51c954817a85922908320f7f70e2d61"
    	9) "flags"
       10) "master"
       11) "link-pending-commands"
       12) "0"
       13) "link-refcount"
       14) "1"
       15) "last-ping-sent"
       16) "0"
       17) "last-ok-ping-reply"
       18) "37"
       19) "last-ping-reply"
       20) "37"
       21) "down-after-milliseconds"
       22) "3000"
       23) "info-refresh"
       24) "8118"
       25) "role-reported"
       26) "master"
       27) "role-reported-time"
       28) "27140"
       29) "config-epoch"
       30) "1"
       31) "num-slaves"
       32) "2"
       33) "num-other-sentinels"
       34) "2"
       35) "quorum"
       36) "2"
       37) "failover-timeout"
       38) "180000"
       39) "parallel-syncs"
       40) "1"
       
    172.16.252.82:26379> SENTINEL slaves mymaster   显示主节点名称为mymaster的从节点属性信息
    1)  1) "name"
    	2) "172.16.252.184:6379"
    	3) "ip"
    	4) "172.16.252.184"
    	5) "port"
    	6) "6379"
    	7) "runid"
    	8) ""
    	9) "flags"
       10) "s_down,slave"
       11) "link-pending-commands"
       12) "9"
       13) "link-refcount"
       14) "1"
       15) "last-ping-sent"
       16) "138676"
       17) "last-ok-ping-reply"
       18) "138676"
       19) "last-ping-reply"
       20) "138676"
       21) "s-down-time"
       22) "135668"
       23) "down-after-milliseconds"
       24) "3000"
       25) "info-refresh"
       26) "1505553462755"
       27) "role-reported"
       28) "slave"
       29) "role-reported-time"
       30) "138676"
       31) "master-link-down-time"
       32) "0"
       33) "master-link-status"
       34) "err"
       35) "master-host"
       36) "?"
       37) "master-port"
       38) "0"
       39) "slave-priority"
       40) "100"
       41) "slave-repl-offset"
       42) "0"
    2)  1) "name"
    	2) "172.16.252.82:6379"
    	3) "ip"
    	4) "172.16.252.82"
    	5) "port"
    	6) "6379"
    	7) "runid"
    	8) "2847d8ceda8d3a03f0df814091fc5174921f57ea"
    	9) "flags"
       10) "slave"
       11) "link-pending-commands"
       12) "0"
       13) "link-refcount"
       14) "1"
       15) "last-ping-sent"
       16) "0"
       17) "last-ok-ping-reply"
       18) "363"
       19) "last-ping-reply"
       20) "363"
       21) "down-after-milliseconds"
       22) "3000"
       23) "info-refresh"
       24) "65"
       25) "role-reported"
       26) "slave"
       27) "role-reported-time"
       28) "118575"
       29) "master-link-down-time"
       30) "1505553462000"
       31) "master-link-status"
       32) "err"
       33) "master-host"
       34) "172.16.252.67"
       35) "master-port"
       36) "6379"
       37) "slave-priority"
       38) "100"
       39) "slave-repl-offset"
       40) "1"
       
    模拟主节点172.16.252.67故障,则主节点完成切换
    [root@slave2 ~]# killall redis-server 
    
    172.16.252.82:26379> SENTINEL masters    主节点由172.16.252.67切换成了172.16.252.184
        1)  1) "name"
             2) "mymaster"
             3) "ip"
             4) "172.16.252.184"
             5) "port"
             6) "6379"
             7) "runid"
             8) ""
             9) "flags"
            10) "s_down,o_down,master"
            11) "link-pending-commands"
            12) "100"
            13) "link-refcount"
            14) "1"
            15) "last-ping-sent"
            16) "9613"
            17) "last-ok-ping-reply"
            18) "9613"
            19) "last-ping-reply"
            20) "9613"
            21) "s-down-time"
            22) "6611"
            23) "o-down-time"
            24) "5466"
            25) "down-after-milliseconds"
            26) "3000"
            27) "info-refresh"
            28) "14593"
            29) "role-reported"
            30) "master"
            31) "role-reported-time"
            32) "9613"
            33) "config-epoch"
            34) "2"
            35) "num-slaves"
            36) "2"
            37) "num-other-sentinels"
            38) "2"
            39) "quorum"
            40) "2"
            41) "failover-timeout"
            42) "180000"
            43) "parallel-syncs"
            44) "1"
    
        使故障的172.16.252.67上线
       [root@slave2 ~]# systemctl start redis
    
    再次查看mymaster主节点的从节点信息
    172.16.252.82:26379> SENTINEL slaves mymaster
    1)  1) "name"
         2) "172.16.252.67:6379"
         3) "ip"
         4) "172.16.252.67"
         5) "port"
         6) "6379"
         7) "runid"
         8) "a8be66745daee322e5c2a2796a5a07623e6ab25d"
         9) "flags"
        10) "slave"
        11) "link-pending-commands"
        12) "0"
        13) "link-refcount"
        14) "1"
        15) "last-ping-sent"
        16) "0"
        17) "last-ok-ping-reply"
        18) "102"
        19) "last-ping-reply"
        20) "102"
        21) "down-after-milliseconds"
        22) "3000"
        23) "info-refresh"
        24) "785"
        25) "role-reported"
        26) "slave"
        27) "role-reported-time"
        28) "91331"
        29) "master-link-down-time"
        30) "1505554185000"
        31) "master-link-status"
        32) "err"
        33) "master-host"
        34) "172.16.252.184"
        35) "master-port"
        36) "6379"
        37) "slave-priority"
        38) "100"
        39) "slave-repl-offset"
        40) "1"
        2)  1) "name"
    	 2) "172.16.252.82:6379"
    	 3) "ip"
    	 4) "172.16.252.82"
    	 5) "port"
    	 6) "6379"
    	 7) "runid"
    	 8) "2847d8ceda8d3a03f0df814091fc5174921f57ea"
    	 9) "flags"
        10) "slave"
        11) "link-pending-commands"
        12) "0"
        13) "link-refcount"
        14) "1"
        15) "last-ping-sent"
        16) "0"
        17) "last-ok-ping-reply"
        18) "913"
        19) "last-ping-reply"
        20) "913"
        21) "down-after-milliseconds"
        22) "3000"
        23) "info-refresh"
        24) "572"
        25) "role-reported"
        26) "slave"
        27) "role-reported-time"
        28) "306685"
        29) "master-link-down-time"
        30) "1505554185000"
        31) "master-link-status"
        32) "err"
        33) "master-host"
        34) "172.16.252.184"
        35) "master-port"
        36) "6379"
        37) "slave-priority"
        38) "100"
        39) "slave-repl-offset"
        40) "1"
     
    
    切换过程注意查看sentinel的日志信息
    [root@slave1 ~]# tail /var/log/redis/sentinel.log
  • 相关阅读:
    cmd常用命令大全
    网卡物理地址
    想看密码的请心平气和听我说
    作为一个程序员仪表
    960,950栅格化方法
    为什么要拿宽960做栅格化呢
    960栅格化优势
    虎牌 查询 自选号
    视频
    在线学习视频地址
  • 原文地址:https://www.cnblogs.com/JevonWei/p/7532825.html
Copyright © 2011-2022 走看看