目录

  • 一、Redis主从复制
  • 1. 基本概念:
  • 2. 搭建主从服务器
  • 3. 主从复制数据同步的过程
  • 4. 主从复制存在哪些缺陷
  • 二、Redis哨兵机制
  • 三、哨兵机制原理
  • 四、配置哨兵集群
  • 五、哨兵集群效果验证


一、Redis主从复制

1. 基本概念:

单个Redis如果因为某种原因宕机的话,可能会导致Redis服务不可用,可以使用主从复制实现一主多从,主节点负责写的操作,从节点负责读的操作,主节点会定期将数据同步到从节点中,保证数据一致性的问题。

redis一台服务器配置主从节点 redis搭建主从_Redis

2. 搭建主从服务器

现有三台redis服务器,服务器ip分别为

192.168.1.100

192.168.1.103

192.168.1.105

现在将100配置成主服务器,103、105为从服务器

redis一台服务器配置主从节点 redis搭建主从_服务器_02

1.在103服务器中的redis.conf配置文件中搜索# replicaof <masterip> <masterport>

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_03


2.在下方添加slaveof 192.168.1.100 6379masterauth root

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_04


3.105服务器修改为slaveof 192.168.1.103 6379masterauth root

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_05

4.输入命令systemctl stop firewalld分别关闭100、103、105服务器防火墙

redis一台服务器配置主从节点 redis搭建主从_服务器_06


5. 分别重启103、105服务器

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_07


6.在100服务器中,输入命令./redis-cliauth rootinfo replication查看主从服务器配置结果

redis一台服务器配置主从节点 redis搭建主从_Redis_08


7.在103服务器中,输入命令./redis-cliauth rootinfo replication查看主从服务器配置结果

redis一台服务器配置主从节点 redis搭建主从_redis_09

redis一台服务器配置主从节点 redis搭建主从_Redis_10


该主从同步方式存在 如果从节点非常多的话,会导致对主节点同步多个从节点压力非常大

可以采用树状类型解决该问题

3. 主从复制数据同步的过程

1.Redis从节点向主节点建立socket连接
2.Redis采用全量或者增量的形式将数据同步给从节点

从Redis2.8版本以后 过程采用增量和全量同步
全量复制:一般用于在初次的复制场景(从节点与主节点一次建立)
增量复制:网络出现问题,从节点再次连接主节点时,主节点补发缺少的数据,每次数据增量同步

4. 主从复制存在哪些缺陷

如果主节点存在了问题,整个Redis环境是不可以实现写的操作,需要人工更改配置变为主操作
如何解决该问题:使用哨兵机制可以帮助解决Redis集群主从选举策略。


二、Redis哨兵机制

Redis的哨兵机制就是解决我们以上主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。

redis一台服务器配置主从节点 redis搭建主从_redis_11


三、哨兵机制原理

  1. 哨兵机制每个10s时间只需要配置监听我们的主节点就可以获取当前整个Redis集群的环境列表,采用info 命令形式。
  2. 哨兵不建议是单机的,最好每个Redis节点都需要配置哨兵监听。
  3. 哨兵集群原理是如何:多个哨兵都执行同一个主的master节点,订阅到相同都通道,有新的哨兵加入都会向通道中发送自己服务的信息,该通道的订阅者可以发现新哨兵的加入,随后相互建立长连接。
  4. Master的故障发现 单个哨兵会向主的master节点发送ping的命令,如果master节点没有及时的响应,哨兵会认为该master节点为“主观不可用状态”会发送给其他都哨兵确认该Master节点是否不可用,当前确认的哨兵节点数>=quorum(可配置),会实现重新选举。

四、配置哨兵集群

现有三台redis服务器,服务器ip分别为
192.168.1.100、192.168.1.103、192.168.1.105
其中100为主服务器,其余为从服务器

1.将redis安装包中的哨兵配置文件复制到redis的安装目录中

cp /usr/redis-5.0.6/sentinel.conf    /usr/redis/bin
cd  /usr/redis/bin

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_12


2.在我们的三台服务器的哨兵配置文件中搜索daemonize ,将daemonize 后的值修改为yes(后台启动)搜索sentinel monitor mymaster,设置主服务器、密码、确认机制(sentinel monitor mymaster 192.168.1.100 6379 2,2表示宕机后需要2个哨兵确认是否宕机)

vi sentinel.conf
daemonize yes
sentinel monitor mymaster 192.168.1.100 6379 2
sentinel auth-pass mymaster root

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_13


redis一台服务器配置主从节点 redis搭建主从_服务器_14


3.分别启动个服务器的哨兵

./redis-sentinel ./sentinel.conf

redis一台服务器配置主从节点 redis搭建主从_redis_15


其他配置:

sentinel down-after-milliseconds mymaster 3000#sentinel心跳检测主3秒内无响应,视为挂掉,开始切换其他从为主

sentinel parallel-syncs mymaster 1#每次最多可以有1个从同步主。一个从同步结束,另一个从开始同步。

sentinel failover-timeout mymaster 18000#主从切换超时时间

五、哨兵集群效果验证

1.在100主服务器中进入./redis-cliauth rootinfo replication查看一下主从关系

redis一台服务器配置主从节点 redis搭建主从_redis一台服务器配置主从节点_16


2.在103主服务器中进入./redis-cliauth rootinfo replication查看一下主从关系

redis一台服务器配置主从节点 redis搭建主从_Redis_17


3.关闭100服务器

redis一台服务器配置主从节点 redis搭建主从_服务器_18


4.在103服务器中再次查看主从配置info replication,发现103已经变成主服务器

redis一台服务器配置主从节点 redis搭建主从_服务器_19


5.再次启动100服务器,并查看主从关系,100服务器已经变成从服务器

redis一台服务器配置主从节点 redis搭建主从_redis_20