1.前言

使用单台redis主机作为缓存,此台主机要兼并读写操作应对大量的并发,且单节点主机一旦故障服务便不能使用,所以由此引用主从架构来解决单节点redis主机的这些痛点问题,使用一主两从架构可以将读与写操作分离开来,主机分配写请求,从机分配读请求,在实际生产中读操作的需求量远远大于写操作,恰好从机可以扩张为多节点,当从机当前配置不足以应对大规模请求时,可以增加多台从机,以应对大规模的请求

2.主从原理

如果slave node开启了AOF,那么会在全量同步完成后立即执行BGREWRITEAOF,重写AOF)

3.本试验使用了三台centos7主机,配置如下如所示




redis一主多从配置 redis一主二从_Powered by 金山文档


主机名称

ip地址

端口

master

10.1.60.80

6379

slave1

10.1.60.114

6379

slave2

10.1.60.115

6379


4.搭建redis主从

4.1三台主机均安装redis服务并启用redis服务

4.2三台主机均关闭防火墙

systemctl stop firewalld

4.3三台主机均关闭selinux服务

setenforce 0

4.4在两台slave主机的redis配置文件中增加以下配置

vim /root/redis-6.2.11/redis.conf

#也可以手动在redis-cli里执行以下命令,但是redis重启后需要再次手动执行以下命令
slaveof 10.1.60.80 6379  #配置从机连接master的地址、端口
masterauth 123456    #配置master的redis密码,若是手动执行需要在前面加上config set,即config set masterauth 123456

4.5重启redis服务

systemctl restart redis

4.6查看主从配置是否生效

info replication


redis一主多从配置 redis一主二从_redis一主多从配置_02


redis一主多从配置 redis一主二从_缓存_03


redis一主多从配置 redis一主二从_redis一主多从配置_04


上图可以看出两台从机的redis服务状态角色均为slave,连接master的状态也为up,主机的redis服务状态角色为master,显示有两台slave连接了,也能看到两台slave的ip和port

5.主从的数据复制

5.1master写入数据slave也会同步生成


redis一主多从配置 redis一主二从_redis_05


redis一主多从配置 redis一主二从_redis一主多从配置_06


redis一主多从配置 redis一主二从_redis_07


若是写入了数据会导致与主机数据不一致)


redis一主多从配置 redis一主二从_数据_08


redis一主多从配置 redis一主二从_redis_09


只有在配置文件中写入主从配置才会自动连接,否则slave需要手动执行主从配置才会重连master主机)


redis一主多从配置 redis一主二从_Powered by 金山文档_10


redis一主多从配置 redis一主二从_redis_11


5.4master挂掉后slave依然会保持在slave状态,主机连接状态变为down,master重新启动后又会自动连接,且master挂掉后,slave依然不能写入


redis一主多从配置 redis一主二从_数据_12


redis一主多从配置 redis一主二从_数据_13


redis一主多从配置 redis一主二从_redis一主多从配置_14


若是主从配置在redis配置文件中,redis重启后又会变为slave状态)

slaveof no one