大数据学习初级入门教程(十三) —— Redis 3.x 伪分布式集群(哨兵模式)的安装、配置、启动和测试

在前三篇文章《大数据学习初级入门教程(二) —— Redis 3.x 单节点的安装、启动和测试》、《大数据学习初级入门教程(六) —— Redis 3.x 伪分布式集群的安装、配置、启动和测试》和《大数据学习初级入门教程(七) —— Redis 3.x 完全分布式集群的安装、配置、启动和测试》中,已经对 Redis3.x 的单节点安装、伪分布式集群安装和完全分布式集群安装过程详细做了安装、配置、启动和测试,但工作过程中发现,很多 Redis 集群都是哨兵模式,这篇文章主要借鉴前面的伪分布式集群,搭建一个伪分布式的哨兵模式集群。

集群搭建条件:

由于 Redis 集群哨兵一版配置奇数个节点,比如3、5、...,这里定三个哨兵节点,一个主节点和两个从节点,即 1 + 2 + 3 模式。所以总共需要6个redis节点。正好原先的搭建的 Redis 伪分布式集群有 6 个节点,复制过来直接改改配置。

第一步,创建存放集群环境的目录文件夹。

第二步,复制已经安装的 redis。

把已经安装的伪分布式 redis 集群目录下的 6 个节点所有文件复制到 redis-sentinel 目录下。

命令:cp -R redis-cluster/redis0* redis-sentinel/

第三步,删除原 redis0* 节点下的其它文件。

命令:cd redis-sentinel/

rm -f redis0*(型号自行替换)/dump.rdb

rm -f redis0*(型号自行替换)/appendonly.aof

rm -f redis0*(型号自行替换)/mybatis.log

rm -f redis0*(型号自行替换)/nodes.conf

第四步,修改 redis.conf 配置文件。

为了防止和原集群冲突,最好把主节点(redis01)和从节点(redis02、redis03)的配置改一下。

命令:vi redis01/redis.conf 

修改几个地方,首先修改端口号,原来已经修改为 7000,现修改为 8000。

修改 pid 进程文件名,原来已经修改为 redis_7000.pid,现修改为 redis_8000.pid。

修改 log 文件名,原来已经修改为 redis_7000.log,现修改为 redis_8000.log,注意如果没有对应的文件夹,需要提前创建。

修改集群模式为 no。

同理,从节点相关部分修改为 8001、8002。并修改 slaveof 配置为如下:

slaveof 192.168.220.100 8000

第四步,复制 sentinel.conf 配置文件。

删除哨兵节点中的 redis.conf 配置文件,从安装包目录拷贝 sentinel.conf 到哨兵节点目录。修改配置如下:

bind 0.0.0.0

port 28003
pidfile /var/run/redis_28003.pid
logfile "/var/log/redis/redis_28003.log"
daemonize yes

dir ./

sentinel monitor mymaster 192.168.220.100 8000 2

sentinel auth-pass mymaster 123456

另外两个哨兵模式中,相关端口部分分别修改为 28004 和 28005。

第五步,启动集群。

先启动主节点服务,再启动从节点服务,最后启动哨兵节点服务,启动命令如下:

主从节点:./redis-server redis.conf

哨兵节点:./redis-sentinel sentinel.conf

启动后查看进程是否正常:

打开哨兵节点配置文件,可以看到配置文件被动态修改,文件末尾添加了从节点及其它哨兵节点信息。

命令: cat redis04/sentinel.conf

sentinel known-slave mymaster 192.168.220.100 8002
sentinel known-slave mymaster 192.168.220.100 8001
sentinel known-sentinel mymaster 192.168.220.100 28005 6fbd835e6e19c45314a28f3fa26d262c15985753
sentinel known-sentinel mymaster 192.168.220.100 28004 f99299720cf52bc967f37a91cdb7ce465f119c24
sentinel current-epoch 0

第六步,测试集群。

连接主节点客户端,查看信息:

连接从节点客户端,查看信息:

连接哨兵节点客户端,查看信息:

杀掉主节点进程,查看从节点是否变为主节点:

可以看到从节点 redis02 变为了主节点。

哨兵节点配置文件也更新为如下信息。

sentinel known-slave mymaster 192.168.220.100 8002
sentinel known-slave mymaster 192.168.220.100 8000
sentinel known-sentinel mymaster 192.168.220.100 28004 f99299720cf52bc967f37a91cdb7ce465f119c24
sentinel known-sentinel mymaster 192.168.220.100 28005 6fbd835e6e19c45314a28f3fa26d262c15985753
sentinel current-epoch 1

当杀掉的原主节点启动后,则变为现在集群中的一个从节点而已。

​​​​​​​常见错误解答

问题一:启动哨兵节点报错,信息如下:

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 93
>>> 'sentinel auth-pass mymaster 123456'
No such master with specified name.

可能原因:需要吧密码配置放到哨兵信息下面,如果放上面,则报上面错误,如:

sentinel monitor mymaster 192.168.220.100 8001 2

sentinel auth-pass mymaster 123456

问题二:主节点杀掉后,从节点不自动变为主节点,及主从无法切换。

可能原因:哨兵模式中配置的主节点信息有误,或者是配置文件中 bind 0.0.0.0 配置有误导致的。

到此,搭建、配置、测试 Redis 在哨兵模式下主从节点的切换完成了,Good Luck! 

posted @ 2022-10-05 18:56  孟郎郎  阅读(193)  评论(0编辑  收藏  举报