欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Linux-Redis哨兵搭建

Linux-Redis哨兵搭建

2025/2/2 7:43:44 来源:https://blog.csdn.net/a1010256340/article/details/144887914  浏览:    关键词:Linux-Redis哨兵搭建

环境资源准备

主机名IP端口号角色
vm1192.168.64.156379/26379master
vm2192.168.64.166379/26379slave
vm3192.168.64.176379/26379slave

6379为redis服务暴露端口号、26379为sentinel暴露端口号。

安装Redis

 # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2.tar.gz # 解压文件tar -zxvf redis-7.2.2.tar.gz# 进入包文件夹cd redis-7.2.2/# 安装依赖文件## Ubuntusudo apt install -y gcc g++ make## CentOSsudo yum -y install gcc g++ make## 创建安装文件夹、数据文件夹mkdir -p /usr/local/redis/data/# 再次检查当前目录是否为redis源码文件,如果是进行make操作make# make install安装到指定文件夹make install PREFIX=/usr/local/redis/

配置文件

文件路径

/etc/redis.conf

主节点(去除中文解释)

daemonize yeslogfile "/var/log/redis.log"bind 0.0.0.0port 6379protected-mode nopidfile /var/run/redis_6379.piddir /usr/local/redis/data  # 指定生成rdb文件的路径 相对路径受到启动redis的操作路径的影响slave-read-only yesslave-priority 100appendonly yes  # 开启AOF模式appendfilename "appendonly.aof"appendfsync everysec  requirepass 123456

从节点(去除中文解释)

注意将slaveof设置为置顶的主节点地址。

daemonize yeslogfile "/var/log/redis.log"bind 0.0.0.0port 6379protected-mode nopidfile /var/run/redis_6379.piddir /usr/local/redis/data  # 指定生成rdb文件的路径 相对路径受到启动redis的操作路径的影响slave-read-only yesslave-priority 90 # 主节点最高,其他依次递减,一个从节点90,一个从节点85appendonly yes  # 开启AOF模式appendfilename "appendonly.aof"appendfsync everysec  requirepass 123456slaveof 192.168.64.15 6379masterauth 123456

启动服务

/usr/local/redis/bin/redis-server /etc/redis.conf

查看启动状态

root@vm1:/home/ubuntu/redis-7.2.2# ps -ef | grep redisroot        7827       1  0 14:48 ?        00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:6379root        7848    1171  0 14:48 pts/0    00:00:00 grep --color=auto redis

登录验证

/usr/local/redis/bin/redis-cli

图片

启动成功,从节点设置成功

此时,主从redis已经设置完毕,开始搭建哨兵。

哨兵配置文件

文件路径

/etc/sentinel.conf

配置内容

创建文件夹

mkdir -p /usr/local/redis/temp
protected-mode noport 26379dir /usr/local/redis/templogfile "/var/log/sentinel.log"daemonize yessentinel monitor mymaster 192.168.64.15 6379 2   # mymaster集群的名字,2个节点以上认为不可用,进行fall oversentinel down-after-milliseconds mymaster 10000 # 判断主节点宕机时间,主观下线sentinel failover-timeout mymaster 60000  # 两次fallover间隔sentinel auth-pass mymaster 123456sentinel parallel-syncs mymaster 1 # 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。

sentinel monitor,后第一个字符串为集群名称,一般为mymaster即可,后面跟主节点IP和端口号。三个节点配置文件相同。配置时去除中文。

启动sentinel服务

/usr/local/redis/bin/redis-sentinel /etc/sentinel.conf

查看启动情况

root@vm1:/home/ubuntu/redis-7.2.2# ps -ef | grep redisroot        7827       1  0 14:48 ?        00:00:01 /usr/local/redis/bin/redis-server 0.0.0.0:6379root        7887       1  0 14:57 ?        00:00:00 /usr/local/redis/bin/redis-sentinel *:26379 [sentinel]root        7895    1171  0 14:58 pts/0    00:00:00 grep --color=auto redis

利用python检测哨兵节点切换

import timefrom redis.sentinel import Sentinelsentinel_list = [("192.168.64.15", 26379),("192.168.64.16", 26379),("192.168.64.17", 26379),
]mySentinel = Sentinel(sentinel_list, )
for i in range(1000):try:print(mySentinel.discover_master("mymaster"))time.sleep(1)except:pass

图片

此时节点进行了切换,从日志可以看出切换过程。

图片

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com