前言
前一篇中,我们讲解了Redis主从的搭建方式,其实很简单呐有木有,都是配置,连句代码都没有,是不是感觉高估了Redis主从的搭建方式?哈哈,没关系,跟着博主,包你全会。今天我们的主题是哨兵,没错,就是哨兵!有了Redis,要是没有哨兵,那真是太可惜了,哨兵是很神圣的一种重要的监测工具,有了哨兵,在Redis主节点出现问题的时候,哨兵就会预警,并选举出新的master,这样,Redis的工作就不会停掉,对于服务器来说非常重要。
简单哨兵模式
基础知识推荐
关于哨兵的一些概念,博主看到了不少优秀的作品,为了防止长篇大论的写重复的内容,就在这里分享给大家。
这几篇博客都是非常优秀的博客,读完之后,相信一定会让大家受益匪浅,下面就是实战阶段,大家跟着一起动手吧。
Redis主从加码
我们上一篇是Redis主从,一主一从,相信大家都还记得吧,现在,要求大家再给master节点增加一个slave,应该很简单吧。可以自己试试,也可以跟着博主一起来操作。
我们上一篇的文件夹是这样的:
下面动动我们的小手,来增加一个新的slave,配置如下:
port:6382
daemonize yes
pidfile /var/run/redis_6382.pid
logfile "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 mymaster 30000
#故障转移后重新主从复制,1表示串行,>1并行
sentinel parallel-syncs mymaster 1
#故障转移三分钟内没有完成,认为转移失败
sentinel failover-timeout mymaster 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.conf
redis-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的配置就成功了。
杀死全部进程
然后可以看到这边的输出,大家自己看看,找找感觉,理解一下:
结语
虽然这只是一篇单节点哨兵的应用,但是对于一些初创型公司或者一些小型起步项目来说已经足够了,并不是所有的公司都会集群和微服务都搞的很棒,毕竟这玩意儿可是要花钱的,项目多的时候,一年随随便便服务器花出去几百万都是正常,所以也不要指望所有公司都上集群。如果对集群有需求,没关系,咱们下篇就来讲讲哨兵的集群怎么玩。
标签:Java,redis,Redis,哨兵,master,sentinel,少走弯路,节点 From: https://blog.51cto.com/u_15993027/6407669