博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis笔记-Sentinel哨兵模式
阅读量:5275 次
发布时间:2019-06-14

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

Redis以主从的模式搭建集群后,如果主节点Master挂掉,虽然可以实现将备用节点Slave切换成主节点,但是Redis本身并没有自动监控机制,需要借助Sentinel哨兵模式,实现监控并实现自动切换。为了实现Sentinel的高可用,需要sentinel也以集群模式来搭建,这里通过一台机器的不同端口来模拟。相关环境信息如下:

1、Redis集群信息:

角色 IP地址 监听端口
Master 127.0.0.1 6379
Slave 127.0.0.1 6380
Slave 127.0.0.1 6381

 

 

 

 

 

 

Sentinel集群信息:

哨兵角色 IP地址 监听端口
Node-1 127.0.0.1 26379
Node-2 127.0.0.1 26380
Node-3 127.0.0.1 26381

 

 

 

 

 

 

2、Redis集群搭建过程参考上篇,这里不再描述。首先启动Redis的主节点和两个Slave节点。

进入Master节点,查看信息:

1 [root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p 6379 -a  funnyboy 2 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 3 127.0.0.1:6379> info replication 4 # Replication 5 role:master 6 connected_slaves:2 7 slave0:ip=127.0.0.1,port=6380,state=online,offset=4256,lag=0 8 slave1:ip=127.0.0.1,port=6381,state=online,offset=4256,lag=1 9 master_replid:d5802af0905736ae28201050ce4871ee2921c16c10 master_replid2:000000000000000000000000000000000000000011 master_repl_offset:425612 second_repl_offset:-113 repl_backlog_active:114 repl_backlog_size:104857615 repl_backlog_first_byte_offset:116 repl_backlog_histlen:425617 127.0.0.1:6379>

显示当前节点role为master,并且连接的slave个数为2,OK。

分别进入两个slave节点查看信息:

1 [root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p 6380 -a  funnyboy 2 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 3 127.0.0.1:6380> info replication 4 # Replication 5 role:slave 6 master_host:127.0.0.1 7 master_port:6379 8 master_link_status:up 9 master_last_io_seconds_ago:810 master_sync_in_progress:011 slave_repl_offset:442412 slave_priority:10013 slave_read_only:114 connected_slaves:015 master_replid:d5802af0905736ae28201050ce4871ee2921c16c16 master_replid2:000000000000000000000000000000000000000017 master_repl_offset:442418 second_repl_offset:-119 repl_backlog_active:120 repl_backlog_size:104857621 repl_backlog_first_byte_offset:122 repl_backlog_histlen:442423 127.0.0.1:6380>
1 [root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p 6381 -a  funnyboy 2 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 3 127.0.0.1:6381> info replication 4 # Replication 5 role:slave 6 master_host:127.0.0.1 7 master_port:6379 8 master_link_status:up 9 master_last_io_seconds_ago:510 master_sync_in_progress:011 slave_repl_offset:455012 slave_priority:10013 slave_read_only:114 connected_slaves:015 master_replid:d5802af0905736ae28201050ce4871ee2921c16c16 master_replid2:000000000000000000000000000000000000000017 master_repl_offset:455018 second_repl_offset:-119 repl_backlog_active:120 repl_backlog_size:104857621 repl_backlog_first_byte_offset:122 repl_backlog_histlen:455023 127.0.0.1:6381>

角色都为slave,并且master信息正常。确保Redis集群OK后,开始准备搭建sentinel集群。

3、Sentinel集群搭建

step1、将redis-sentinel拷贝到redis对应的执行目录bin(该命令是redis-server的一个连接,用redis-server也OK,后面讲到,启动sentinel会有两种方式),然后拷贝sentinel.config到redis配置文件目录config。

 

 step2、分别编辑sentinel的配置文件(没特别强调的保持默认即可)

sentinel-26379.conf配置如下:

1 daemonize yes                                            #开启后台守护进程2 port 26379                                               #端口配置3 pidfile "/usr/local/redis/pid/redis-sentinel-26379.pid"  #PID文件4 logfile "/usr/local/redis/logs/sentinel-26379.log"       #日志文件5 sentinel monitor mymaster 127.0.0.1 6379 2               #哨兵监控配置。注意,如果配置了认证,改配置必须在auth-pass配置之前,否则启动报找不到master的错误6 sentinel auth-pass mymaster funnyboy                     #认证配置7 sentinel down-after-milliseconds mymaster 5000          #master或者slave多少时间(默认30秒)不能使用标记为down状态。8 sentinel failover-timeout mymaster 9000                 #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。

sentinel-26380.conf配置如下:

1 daemonize yes                                            #开启后台守护进程2 port 26380                                               #端口配置3 pidfile "/usr/local/redis/pid/redis-sentinel-26380.pid"  #PID文件4 logfile "/usr/local/redis/logs/sentinel-26380.log"       #日志文件5 sentinel monitor mymaster 127.0.0.1 6379 2               #哨兵监控配置。注意,如果配置了认证,改配置必须在auth-pass配置之前,否则启动报找不到master的错误6 sentinel auth-pass mymaster funnyboy                     #认证配置7 sentinel down-after-milliseconds mymaster 5000         #master或者slave多少时间(默认30秒)不能使用标记为down状态。8 sentinel failover-timeout mymaster 9000                #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。

sentinel-26381.conf配置如下:

1 daemonize yes                                            #开启后台守护进程2 port 26381                                               #端口配置3 pidfile "/usr/local/redis/pid/redis-sentinel-26381.pid"  #PID文件4 logfile "/usr/local/redis/logs/sentinel-26381.log"       #日志文件5 sentinel monitor mymaster 127.0.0.1 6379 2               #哨兵监控配置。注意,如果配置了认证,改配置必须在auth-pass配置之前,否则启动报找不到master的错误6 sentinel auth-pass mymaster funnyboy                     #认证配置7 sentinel down-after-milliseconds mymaster 5000         #master或者slave多少时间(默认30秒)不能使用标记为down状态。8 sentinel failover-timeout mymaster 9000                #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。

step3、启动哨兵监控程序:

1 2 [root@VM_0_14_centos redis]# ./bin/redis-sentinel ./config/sentinel-26379.conf 3 [root@VM_0_14_centos redis]# ./bin/redis-sentinel ./config/sentinel-26380.conf 4 [root@VM_0_14_centos redis]# ./bin/redis-sentinel ./config/sentinel-26381.conf

启动有两种方式:

一是执行:redis-sentinel  sentinel.conf 

二是执行:redis-server sentinel --sentinel

step4、通过哨兵连接,并检查信息:

1 [root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p 26379 -a funnyboy 2 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 3 127.0.0.1:26379> info sentinel 4 # Sentinel 5 sentinel_masters:1 6 sentinel_tilt:0 7 sentinel_running_scripts:0 8 sentinel_scripts_queue_length:0 9 sentinel_simulate_failure_flags:010 master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=311 127.0.0.1:26379>

可以看到监控的redis服务,一个Master、两个Slave、sentinels = 3 说明配置OK。

4、模拟场景:Redis Master节点挂掉,查看Redis集群状态。

step1、关掉Master节点:

1 [root@VM_0_14_centos bin]# ./redis-cli -p 6379 -a funnyboy2 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.3 127.0.0.1:6379> shutdown4 not connected> 5 [root@VM_0_14_centos bin]#

step2、通过哨兵查看集群状态:

1 127.0.0.1:26379> info sentinel2 # Sentinel3 sentinel_masters:14 sentinel_tilt:05 sentinel_running_scripts:06 sentinel_scripts_queue_length:07 sentinel_simulate_failure_flags:08 master0:name=mymaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=39 127.0.0.1:26379>

通过sentinel信息可以看到,Master节点已经自动切换到6380端口了,说明主节点挂掉后,6380 Slave节点自动升级成为了Master节点。

 step3、启动6379 redis服务,然后查看节点角色,此时6379变成了Slave,6380为Master节点,OK。

1 [root@VM_0_14_centos redis]# ./bin/redis-server ./config/redis-6379.conf 2 [root@VM_0_14_centos redis]# ./bin/redis-cli -p 6379 -a funnyboy 3 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 4 127.0.0.1:6379>  5 127.0.0.1:6379> info replication 6 # Replication 7 role:slave 8 master_host:127.0.0.1 9 master_port:638010 master_link_status:up11 master_last_io_seconds_ago:112 master_sync_in_progress:013 slave_repl_offset:39267114 slave_priority:10015 slave_read_only:116 connected_slaves:017 master_replid:c77763408266bcebf233bdc9e59e3bcf14dc7a0818 master_replid2:000000000000000000000000000000000000000019 master_repl_offset:39267120 second_repl_offset:-121 repl_backlog_active:122 repl_backlog_size:104857623 repl_backlog_first_byte_offset:37858624 repl_backlog_histlen:14086

 

转载于:https://www.cnblogs.com/funnyboy0128/p/10572472.html

你可能感兴趣的文章
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
java.util.Arrays类详解
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>