软件工作室网站模板,旅游网站的设计与建设,icp主体备案号 网站备案号,精品一卡2卡三卡4卡二百信息网1 哨兵 1.1 python 操作哨兵 1 哨兵
# 主从---》一主多从-主库用来写-从库用来读-主库挂了--》整个系统就不能写数据了#主从复制存在的问题#xff1a;1 主从复制#xff0c;主节点发生故障#xff0c;需要做故障转移#xff0c;可以手动转移#xff1a;让其中一个slave变…1 哨兵 1.1 python 操作哨兵 1 哨兵
# 主从---》一主多从-主库用来写-从库用来读-主库挂了--》整个系统就不能写数据了#主从复制存在的问题1 主从复制主节点发生故障需要做故障转移可以手动转移让其中一个slave变成master---》哨兵 高可用2 主从复制只能主写数据所以写能力和存储能力有限--》集群# 高可用服务的高度可用性 公司追求 4个9哨兵---》sentinal---》监控主库变化---》如果主库挂了--》自动选择一个从库---》做故障切换---》把从库升级为主库---》还能对外提供服务# 架构3个redis服务---》3台机器3个sentinal---》3台机器启动3个redis-server进程启动3个redis-sentinal进程# 搭建步骤- 先搭建一主两从# 第一步搭建一主两从
daemonize yes
pidfile /var/run/redis.pid
port 6379
dir /root/redis/data
logfile “6379.log”#第二个是从配置文件
daemonize yes
pidfile /var/run/redis2.pid
port 6378
dir /root/redis/data
logfile “6378.log”
slaveof 127.0.0.1 6379
slave-read-only yes#第三个是从配置文件
daemonize yes
pidfile /var/run/redis3.pid
port 6377
dir /root/redis/data
logfile “6377.log”
slaveof 127.0.0.1 6379
slave-read-only yes
# 第二步启动三个哨兵--》监控一主两从的关系
port 26379
daemonize yes
dir ./data3
protected-mode no
bind 0.0.0.0
logfile redis_sentinel79.log
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000port 26380
daemonize yes
dir ./data3
protected-mode no
bind 0.0.0.0
logfile redis_sentinel80.log
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000port 26381
daemonize yes
dir ./data3
protected-mode no
bind 0.0.0.0
logfile redis_sentinel81.log
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000redis-sentinel ./sentinel_6379.conf
redis-sentinel ./sentinel_6380.conf
redis-sentinel ./sentinel_6381.conf#第三步等待主库挂掉
# 第四步自动切换主库
# 第五步以后原来的主库启动会变为从库1.1 python 操作哨兵
import redis
from redis.sentinel import Sentinel# 连接哨兵服务器(主机名也可以用域名)
sentinel Sentinel([(127.0.0.1, 26379),(127.0.0.1, 26380),(127.0.0.1, 26381)],socket_timeout5)print(sentinel)
# 获取主服务器地址
master sentinel.discover_master(mymaster)
print(master)# 获取从服务器地址
slave sentinel.discover_slaves(mymaster)
print(slave)##### 读写分离
# 获取主服务器进行写入
master sentinel.master_for(mymaster, socket_timeout0.5)
print(master----,master)
w_ret master.set(foo, bar)slave sentinel.slave_for(mymaster, socket_timeout0.5)
print(slave----,slave)
r_ret slave.get(foo)
print(r_ret)