redis主从,哨兵集群
准备工作:
本文用的linux为centos6.5,redis为5.0.9在两台服务器
redis安装请看https://www.cnblogs.com/fuanyu/p/14604919.html
redis版本:5.0.9
主:172.16.38.225:26379 ,sentinel:26380
主:172.16.38.226:26379 ,sentinel:26380
1. Redis主从同步
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。
2. 配置主从同步
Mater Slave的模式,从Slave向Master发起SYNC命令。
可以是1 Master 多Slave,可以分层,Slave下可以再接Slave,可扩展成树状结构。
2.1 配置Mater,Slave
配置非常简单,只需在slave的设定文件中指定master的ip和port
Master为225,slave为226
在slave的redis.conf修改以下
bind 0.0.0.0 protected-mode no port 26379
masterauth "123456"
requirepass "123456"
slaveof 172.16.38.225 26379 2
也可以用命令行设定:
在226那台上机执行命令
redis 127.0.0.1:26379> slaveof 172.16.38.225 26379
2.2 同期情况确认
Master:
127.0.0.1:26379> INFO replication # Replication role:master connected_slaves:1 slave0:ip=172.16.38.225,port=26379,state=online,offset=309,lag=1
Slave:
127.0.0.1:26379> INFO replication # Replication role:slave master_host:172.16.38.225
master_port:26379 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_repl_offset:365 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
说明两边的redis是主从关系,在master里执行命令set mylove fu ;在slave里执行命令 get mylove;就会输出fu;
2.3 哨兵配置
因redis自己本来不能自己自动主从切换。此时需要sentinel哨兵来实现自动切换功能
在两台机的sentinel.conf配置如下
port 26380 daemonize yes sentinel monitor mymaster 172.16.38.226 26379 1 sentinel auth-pass mymaster 123456 pidfile "/var/run/redis-sentinel.pid" logfile "" dir "/tmp" sentinel myid b8f2d588b37248b6adcd063914b470d3d2777899 sentinel deny-scripts-reconfig yes sentinel config-epoch mymaster 114 sentinel leader-epoch mymaster 114 protected-mode no sentinel current-epoch 114 sentinel known-replica mymaster 172.16.38.225 6380 sentinel known-replica mymaster 172.16.38.225 26379 sentinel known-sentinel mymaster 172.16.38.225 26380 8a34a71fab3e4cf6ce69d6854df9e651911a1e9a
或者直接在复制/usr/local/redis/redis-5.0.9/sentinel.conf到/usr/local/redis/bin中主
主要修改以下几个地方即可
port 26380
daemonize yes
sentinel monitor mymaster 172.16.38.226 26379 2
sentinel auth-pass mymaster 123456
master和slave都配置好,分别启动sentinel
./redis-sentinel sentinel.conf
启动之后,分别在主从服务器上登录sentinel服务器,执行命令: info sentinel .看到status=ok就是正常的.如下图
2.4。测试哨兵
在master主服务器关掉redis
命令:shutdown
然后在slave从服务器查看redis的角色
INFO replication
大功告成,花了不少时间在这配置及测试。越努力越幸运。。。
本文参考:
https://www.cnblogs.com/ee900222/p/redis_2.html
https://www.cnblogs.com/wiliamzhao/p/14201631.html
https://www.cnblogs.com/zhonglongbo/p/13128955.html