介绍 redis sentinel(哨兵)集群的部署,配置一主两从的redis集群,并通过 python 程序实例讲解通过 redis sentinel 访问集群
Redis sentinel 为 Redis 集群提供了高可用解决方案,在集群出现故障的时候自动故障转移,保证集群的可用性
哨兵是一套分布式系统,它被设计成多个哨兵进程合作运行
哨兵,redis 实例,客户端在一起构成了一个大的分布式系统
# 首先设定第一个服务器为 master
redis-server /path/to/server1.conf
# 第二个为 slave
redis-server /path/to/server2.conf
# 第三个为 slave
redis-server /path/to/server3.conf
# 第1个哨兵配置,端口为 10011
port 10011
sentinel monitor mymaster 127.0.0.1 10001 2
sentinel down-after-milliseconds mymaster 60000
sentinel auth-pass mymaster 1
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
# 第2个哨兵配置,端口为 10012
port 10012
sentinel monitor mymaster 127.0.0.1 10001 2
sentinel down-after-milliseconds mymaster 60000
sentinel auth-pass mymaster 1
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
# 第3个哨兵配置,端口为 10013
port 10013
sentinel monitor mymaster 127.0.0.1 10001 2
sentinel down-after-milliseconds mymaster 60000
sentinel auth-pass mymaster 1
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
配置格式:sentinel <选项的名字> <主服务器的名字> <选项的值>
redis-server /path/to/sentinel1.conf --sentinel
redis-server /path/to/sentinel2.conf --sentinel
redis-server /path/to/sentinel2.conf --sentinel
pip install redis
#!/usr/bin/env python
from redis.sentinel import Sentinel
# 连接哨兵服务器
sentinel = Sentinel([(‘127.0.0.1‘, 10011),
(‘127.0.0.1‘, 10012),
(‘127.0.0.1‘, 10013)],
socket_timeout=0.1)
# 获取主服务器地址
sentinel.discover_master(‘mymaster‘)
# 输出:(‘127.0.0.1‘, 10001)
# 获取从服务器地址
sentinel.discover_slaves(‘mymaster‘)
# 输出:[(‘127.0.0.1‘, 10001), (‘127.0.0.1‘, 10002), (‘127.0.0.1‘, 10003)]
# 获取带密码的主服务器进行访问
master_pass = sentinel.master_for(‘mymaster‘, password=1, socket_timeout=0.1)
# 获取不带密码的主服务器进行写入
master = sentinel.master_for(‘mymaster‘, socket_timeout=0.1)
master.set(‘foo‘, ‘bar‘)
# 获取从服务器进行读取(默认是round-roubin)
slave = sentinel.slave_for(‘mymaster‘, socket_timeout=0.1)
slave.get(‘foo‘)
# 输出:bar
redis sentinel 高可用(HA)方案部署,及python应用示例
原文:https://www.cnblogs.com/ExMan/p/10466988.html