前言

前一篇中,我们讲解了Redis主从的搭建方式,其实很简单呐有木有,都是配置,连句代码都没有,是不是感觉高估了Redis主从的搭建方式?哈哈,没关系,跟着博主,包你全会。今天我们的主题是哨兵,没错,就是哨兵!有了Redis,要是没有哨兵,那真是太可惜了,哨兵是很神圣的一种重要的监测工具,有了哨兵,在Redis主节点出现问题的时候,哨兵就会预警,并选举出新的master,这样,Redis的工作就不会停掉,对于服务器来说非常重要。

简单哨兵模式

基础知识推荐

关于哨兵的一些概念,博主看到了不少优秀的作品,为了防止长篇大论的写重复的内容,就在这里分享给大家。

Redis中的哨兵模式 – 简书

怎么实现Redis的高可用?(主从、哨兵、集群) – 知乎

手把手教你配置Redis主从复制(含详细图文)

这几篇博客都是非常优秀的博客,读完之后,相信一定会让大家受益匪浅,下面就是实战阶段,大家跟着一起动手吧。

Redis主从加码

我们上一篇是Redis主从,一主一从,相信大家都还记得吧,现在,要求大家再给master节点增加一个slave,应该很简单吧。可以自己试试,也可以跟着博主一起来操作。

我们上一篇的文件夹是这样的:

下面动动我们的小手,来增加一个新的slave,配置如下:

port:6382daemonize yespidfile /var/run/redis_6382.pidlogfile "6382.log"slaveof localhost 6380

是不是很简单,几乎和另一个slave一样,测试嘛,就免了,基本也没改啥,不用测都知道一定可以,小伙伴可以自行测试下配置是否正确。

配置哨兵配置文件

首先,我们会在src文件中看到一个redis- sentinel文件,这就是哨兵的启动文件了:

接着,要配置的文件名字叫sentinel.conf,我们可以在redis目录下找到这个文件:

由于博主安装Redis的时候安装到了src,所以大家才会看到博主在src操作这些文件,正常来说,你安装在redis目录下也是可以的,下一步,我们还是把sentinel.conf复制到src目录下:

接着来修改此文件中的配置,需要修改的配置如下:

#配置端口port 26379# 设置为守护进程模式,可先注释,看投票选主的过程#daemonize yes#日志文件名logfile "redis_sentinel.log"#存放备份文件以及日志等文件的目录dir "/opt/redis/data"# redis_sentinel表示hostname,自己随意取名# 数字1表示当主机宕机后,在从机中进行投票选主,票数大于1的晋升为主机sentinel monitor redis_sentinel 127.0.0.1 6380 1#30秒ping不通主节点的信息,主观认为master宕机sentinel down-after-milliseconds redis_sentinel 30000#故障转移后重新主从复制,1表示串行,>1并行sentinel parallel-syncs redis_sentinel 1#故障转移三分钟内没有完成,认为转移失败sentinel failover-timeout redis_sentinel 180000

有些参数是默认就有的,其实需要改的就俩:

# 设置为守护进程模式,可先注释,看投票选主的过程#daemonize yes# redis_sentinel表示hostname,自己随意取名# 数字1表示当主机宕机后,在从机中进行投票选主,票数大于1的晋升为主机(因为我们现在有两个从节点)sentinel monitor redis_sentinel 127.0.0.1 6380 1

虽然默认守护进程都没有,也就只能算一个了,像上面那些文件在启动的时候会自动生成的,我们目前是教学阶段,可以不用管。

启动Redis

进入启动文件目录:

cd Desktop/JAVATOOL/redis/src 

大家写自己的路径。

启动主Redis:

redis-server redis_master.conf

启动两个从Redis节点:

redis-server redis_slave0.confredis-server redis_slave1.conf

查看redis启动状态:

ps -ef | grep redis

可以看到三个Redis服务都已经启动起来了,测试博主就不贴出来了,大家自行测试就好。

启动哨兵

启动哨兵:

redis-sentinel sentinel.conf

此时博主电脑弹了一个允许使用网络的窗口,手滑直接点了,没截图,算了。

看运行的情况:

哨兵已经成功启动了,可以看到主从的关系了,一主,二从,说明我们配置的暂时没问题,要确认哨兵能不能正常工作,还要看master宕机后能不能自动选主。

测试哨兵是否配置成功

为了看哨兵是否能正常工作,选出新的mater,我们需要手动干掉redis的master节点,通过

ps -ef | grep redis

新开一个终端,查看几个节点~这应该是进程号:

通过kill命令杀死主节点:

kill -9 74840

这里有一整个投票选主的过程,目前的主节点为6381,从节点为6382,6380也成了从节点,但是其已经关闭了。

重新开启原6380主节点

开启原主节点:

redis-server redis_master.conf

新输出两句,原主节点被转为了新主节点6381的从节点,我们打开6380的配置文件看看:

在文档最后找到了自动添加的从节点配置。到此,我们的测试就完全结束了,单节点哨兵监控多节点主从Redis的配置就成功了。

杀死全部进程

然后可以看到这边的输出,大家自己看看,找找感觉,理解一下:

结语

虽然这只是一篇单节点哨兵的应用,但是对于一些初创型公司或者一些小型起步项目来说已经足够了,并不是所有的公司都会集群和微服务都搞的很棒,毕竟这玩意儿可是要花钱的,项目多的时候,一年随随便便服务器花出去几百万都是正常,所以也不要指望所有公司都上集群。如果对集群有需求,没关系,咱们下篇就来讲讲哨兵的集群怎么玩。