首页 / REDIS / Redis-sentinel
Redis-sentinel
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis-sentinel,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2159字,纯文字阅读大概需要4分钟。
内容图文
![Redis-sentinel](/upload/InfoBanner/zyjiaocheng/875/3f4a18ced09e4c4a90469cb371fc290f.jpg)
一: 主从复制高可用
主从复制存在的问题?
1. 只从复制, 主节点发生故障, 需要做故障转义, 可以手动转移: 让其中一个slave变成master
2. 主从复制, 只能主写数据, 所以写能力和存储能力有限
二: 架构说明
可以做故障判断, 故障转移, 通知客户端(其实是一个进程), 客户端直接连接sentinel的地址
1 多个sentinel发现并确认master有问题
2 选举出一个sentinel作为领导
3 选取一个slave作为新的master
4 通知其余slave成为新的master的slave
5 通知客户端主从变化
6 等待老的master复活成为新master的slave
三: 安装配置
1 配置开启主从节点 2 配置开启sentinel监控主节点(sentinel是特殊的redis) 3 应该是多台机器
#配置开启sentinel监控主节点 mkdir -p redis4/conf redis4/data redis5/conf redis5/data redis6/data redis6/conf vi sentinel.conf port 26379 daemonize no dir /data protected-mode no bind 0.0.0.0 logfile "redis_sentinel.log" sentinel monitor mymaster 10.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 docker run -p 26379:26379 --name redis_26379 -v /home/redis4/conf/sentinel.conf:/etc/redis/sentinel.conf -v /home/redis4/data:/data -d redis redis-sentinel /etc/redis/sentinel.conf docker run -p 26378:26379 --name redis_26378 -v /home/redis5/conf/sentinel.conf:/etc/redis/sentinel.conf -v /home/redis5/data:/data -d redis redis-sentinel /etc/redis/sentinel.conf docker run -p 26377:26379 --name redis_26377 -v /home/redis6/conf/sentinel.conf:/etc/redis/sentinel.conf -v /home/redis6/data:/data -d redis redis-sentinel /etc/redis/sentinel.conf redis-sentinel sentinel.conf info 配置会重写,自动发现slave
四: 客户端连接
import redis from redis.sentinel import Sentinel # 连接哨兵服务器(主机名也可以用域名) # 10.0.0.101:26379 sentinel = Sentinel([('10.0.0.101', 26379), ('10.0.0.101', 26378), ('10.0.0.101', 26377) ], socket_timeout=5) print(sentinel) # 获取主服务器地址 master = sentinel.discover_master('mymaster') print(master) # 获取从服务器地址 slave = sentinel.discover_slaves('mymaster') print(slave) # 获取主服务器进行写入 # master = sentinel.master_for('mymaster', socket_timeout=0.5) # w_ret = master.set('foo', 'bar') # # # # # slave = sentinel.slave_for('mymaster', socket_timeout=0.5) # r_ret = slave.get('foo') # print(r_ret)
内容总结
以上是互联网集市为您收集整理的Redis-sentinel全部内容,希望文章能够帮你解决Redis-sentinel所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。