欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis集群+哨兵模式部署(简单易懂)

程序员文章站 2024-03-21 16:33:10
...

在redis当中,有主服务器和从服务器之分,一般来说,主服务器负责数据的写入,从服务器进行数据读取,读取分离。而哨兵有着监控redis集群的功能,如果主服务器挂了,哨兵会以某种方式选举master,从而实现高可用。

首先,附上集群架构图:
Redis集群+哨兵模式部署(简单易懂)
事先准备三台服务器(不是一台虚拟机中的三个port)在这里,我部署的主服务器是10.201.7.175:6380、从服务器是10.201.7.171:6379、10.201.7.176:6381,其中哨兵部署为10.201.7.175、10.201.7.171、10.201.7.176。声明一下,默认我认为你有三台服务器并且已经下载并编译了redis。

第一步:redis.conf文件配置

首先,开启redis服务后台运行,将其值置为yes

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

开启外网连接权限(0.0.0.0表示接受任意外网连接)

# By default Redis listens for connections from all the network interfaces
# available on the server. It is possible to listen to just one or multiple
# interfaces using the "bind" configuration directive, followed by one or
# more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
bind 0.0.0.0

指定端口号

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

开启slave节点写权限

# Note: read only slaves are not designed to be exposed to untrusted clients
# on the internet. It's just a protection layer against misuse of the instance.
# Still a read only slave exports by default all the administrative commands
# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve
# security of read only slaves using 'rename-command' to shadow all the
# administrative / dangerous commands.
slave-read-only no

最后在文件末尾添加如下配置,表示当服务后台启动时,自动将某台服务器作为master,在这里我的master是175,端口号是6380

slaveof 10.201.7.175 6380

第二步:配置sentinel.conf文件(如果没有此文件,在redis文件夹下touch一个即可)

首先,开启哨兵后台运行权限

#Control the switch running in the background
daemonize yes

重点来了!下面是配置哨兵监控模式(重中之重)

# Note: master name should not include special characters or spaces.
# The valid charset is A-z 0-9 and the three characters ".-_".
sentinel monitor mymaster 10.201.7.175 6380 2

说明:sentinel monitor+集群名称(后续必须要与java中的JedisSentenelPool构造方法中的masterName保持一致)+主服务器端口+当主服务器挂掉时,哨兵开启故障转移阈值(当其余某台节点中的一台有2票时,开启选举,使其为master,否则一直处于选举状态)

然后,使用scp指令将redis整个文件夹拷贝到其他两台节点上,需要改变的地方有

redis.conf中的端口号
将主服务器中的redis.conf文件末尾的slaveof 10.201.7.175 6380去掉

所有的配置完成之后,使用如下命令再三台服务器上分别开启redis服务(注意顺序:先主、后从)

src/redis-server redis.conf

使用如下命令,开启哨兵监控模式(开启顺序不要紧)

src/redis-sentinel sentinel.conf

而后,分别在三台服务器上执行如下命令,开启redis客户端

src/redis-cli -h 当前服务器ip -p redis.conf文件中的端口号

在主服务器上的客户端上执行如下命令,查看master和slaves

info replication

看到如下所示,集群+哨兵模式配置完成
Redis集群+哨兵模式部署(简单易懂)
说明:connected_slaves:2表示旗下有2台服务器作为它的slave,紧跟着后面的是具体的slave的ip。

到这里,整个环境就全部搭建完成,如有问题,欢迎留言。