博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sentinel系统监控Redis主从节点
阅读量:4706 次
发布时间:2019-06-10

本文共 12489 字,大约阅读时间需要 41 分钟。

author:JevonWei

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

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

拓扑结构结构

image

拓扑环境

master  172.16.252.82slave1      172.16.252.184slave2      172.16.252.67sentinl1    172.16.252.82sentinl2    172.16.252.184sentinl3    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   \\监听本地IPrequirepass "danran"    添加认证密码[root@slave1 ~]# systemctl restart redis[root@slave1 ~]# ss -ntlState      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 -ntlState      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.184172.16.252.184:6379> SLAVEOF 172.16.252.82 6379    设置成为172.16.252.82的从数据库OK172.16.252.184:6379> CONFIG SET masterauth danran   设置master主服务端的认证密码OK172.16.252.184:6379> CONFIG REWRITE                 保存到配置文件永久生效OK

slave2

[root@slave2 ~]# vim /etc/redis.conf bind 172.16.252.67   \\监听本地IPslaveof 172.16.252.82 6379masterauth "danran"    修改REPLICAION配置段的slaveof和masterauth参数设置从节点 [root@slave2 ~]# systemctl start redis[root@slave2 ~]# ss  -ntlState      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.82172.16.252.82:6379> AUTH danranOK172.16.252.82:6379> INFO Replication# Replicationrole:masterconnected_slaves:2slave0: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=0master_repl_offset:652repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:651

测试数据同步

master

[root@master ~]# redis-cli -h 172.16.252.82172.16.252.82:6379> AUTH danranOK172.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 51) "red"2) "bulue"3) "gray"4) "green"

slave2

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

配置Sentinel系统

sentinel1

[root@sentinel ~]# vim /etc/redis-sentinel.conf bind 172.16.252.82   监听IPsentinel 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 -ntlState      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 -ntlState      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   监听IPsentinel 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 -ntlState      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 26379172.16.252.82:26379> SENTINEL masters    显示主节点的属性信息,主节点为172.16.252.821)  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 mymaster1)  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    手动切换主节点OK172.16.252.82:26379> SENTINEL masters   主节点由172.16.252.82切换到了172.16.252.671)  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 mymaster1)  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

转载于:https://www.cnblogs.com/JevonWei/p/7532825.html

你可能感兴趣的文章
十种经典排序算法
查看>>
js中的apply与call的用法与区别
查看>>
标准C程序设计七---102
查看>>
[开发笔记]-获取天气数据接口
查看>>
北京地铁月度消费总金额计算(Python版)
查看>>
nginx+tomcat配置https
查看>>
[hadoop]备份
查看>>
Redis 哈希(Hash)
查看>>
微享:快速分享网页到新浪微博
查看>>
7. 信号的处理问题
查看>>
SDN简介
查看>>
xshell远程终端操作Ubuntu server安装LAMP环境之最详细笔记之二PHP开发环境配置
查看>>
Ionic实战 自动升级APP(Android版)
查看>>
C#中的委托和事件(续)
查看>>
python--MySql
查看>>
机器学习 - pycharm, pyspark, spark集成篇
查看>>
mysql explain 中key_len的计算
查看>>
实验一
查看>>
Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)
查看>>
Lua -- 简洁、轻量、可扩展的脚本语言
查看>>