设为首页 收藏本站
查看: 633|回复: 0

[经验分享] redis的主从复制 读写分离 主从切换

[复制链接]

尚未签到

发表于 2018-11-3 11:36:39 | 显示全部楼层 |阅读模式
  当数据量变得庞大的时候,读写分离还是很有必要的。同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能。
  redis提供了一个master,多个slave的服务。
  准备三个redis服务,依次命名文件夹子master,slave1,slave2.这里为在测试机上,不干扰原来的redis服务,我们master使用6000端口。
  配置文件(redis.conf)
  master配置修改端口:
    port 6000  

  
    requirepass 123456
  slave1修改配置:
1234567port 6001 slaveof 127.0.0.1 6000 masterauth 123456 requirepass 123456  slave2修改配置:  
1234567port 6002 slaveof 127.0.0.1 6000 masterauth 123456 requirepass 123456  requirepass是认证密码,应该之后要作主从切换,所以建议所有的密码都一致, masterauth是从机对主机验证时,所需的密码。(即主机的requirepass)
  启动主机
1redis-server redis.conf    启动从机:
   redis-server redis1.conf  

  
   redis-server redis2.conf
  输入:
ps -ef |grep redisroot      6617     1  0 18:34 ?        00:00:01 redis-server *:6000    root      6647     1  0 18:43 ?        00:00:00 redis-server *:6001     root      6653     1  0 18:43 ?        00:00:00 redis-server *:6002     root      6658  6570  0 18:43 pts/0    00:00:00 grep redis  可以看到主从机的redis已经相应启动。
  我们来验证下 主从复制。
  master:
12345[root@localhost master]# redis-cli -p 6000127.0.0.1:6000> auth 123456OK127.0.0.1:6000> set test chenqmOK  slave1:
12345[root@localhost slave2]# redis-cli -p 6001127.0.0.1:6001> auth 123456OK127.0.0.1:6001> get test"chenqm"  slave2:
12345[root@localhost slave2]# redis-cli -p 6002127.0.0.1:6002> auth 123456OK127.0.0.1:6002> get test"chenqm"  可以看到主机执行写命令,从机能同步主机的值,主从复制,读写分离就实现了。
  但是万一主机挂了怎么办,这是个麻烦事情,所以redis提供了一个sentinel(哨兵),以此来实现主从切换的功能,类似与zookeeper.
  我们配置两个sentinel进程:
vi sentinel.conf123456port 26379  sentinel monitor mymaster 127.0.0.1 6000 2 sentinel auth-pass mymaster 1234561vi sentinel.conf12345port 26479 sentinel monitor mymaster 127.0.0.1 6000 2 sentinel auth-pass mymaster 123456  启动sentinel服务(到对应的目录执行相应的命令):
1redis-server sentinel.conf --sentinel  查看日志:
[7014] 11 Jan 19:42:30.918 # +monitor master mymaster 127.0.0.1 6000 quorum 2[7014] 11 Jan 19:42:30.923 * +slave slave 127.0.0.1:6002 127.0.0.1 6002 @ mymaster 127.0.0.1 6000[7014] 11 Jan 19:42:30.925 * +slave slave 127.0.0.1:6001 127.0.0.1 6002 @ mymaster 127.0.0.1 6000  从对应的日志观察到,一个master服务,两个slave服务
  我们现在来kill master进程
12345678[root@localhost slave1]# ps -ef|grep redisroot      6960     1  0 19:29 ?        00:00:02 redis-server *:6000   root      6968     1  0 19:30 ?        00:00:01 redis-server *:6001    root      6975     1  0 19:30 ?        00:00:01 redis-server *:6002    root      7014  6570  0 19:42 pts/0    00:00:01 redis-server *:26479                root      7017  6789  0 19:42 pts/5    00:00:01 redis-server *:26379                root      7021  6729  0 19:46 pts/3    00:00:00 grep redis[root@localhost slave1]# kill -9 6960  我们观察日志:
12[7014] 11 Jan 19:43:41.463 # +sdown master mymaster 127.0.0.1 6000[7014] 11 Jan 19:46:42.379 # +switch-master mymaster 127.0.0.1 6000 127.0.0.1 6001  master切换了,当6000端口的这个服务重启的时候,他会变成6001端口服务的slave。
  因为sentinel在切换master的时候,把对应的sentinel.conf和redis.conf文件的配置修改。
  期间我们还需要关注的一个问题:sentinel服务本身也不是万能的,也会宕机,所以我们还得部署sentinel集群,象我这样多启动几个sentinel。
  关注这个配置:
1sentinel monitor mymaster 127.0.0.1 6000 2这个后面的数字2,是指当有两个及以上的sentinel服务检测到master宕机,才会去执行主从切换的功能。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630202-1-1.html 上篇帖子: redis 配置参数详情 下篇帖子: redis2.2.8版本的安装详情
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表