1.前言
使用单台redis主机作为缓存,此台主机要兼并读写操作应对大量的并发,且单节点主机一旦故障服务便不能使用,所以由此引用主从架构来解决单节点redis主机的这些痛点问题,使用一主两从架构可以将读与写操作分离开来,主机分配写请求,从机分配读请求,在实际生产中读操作的需求量远远大于写操作,恰好从机可以扩张为多节点,当从机当前配置不足以应对大规模请求时,可以增加多台从机,以应对大规模的请求
2.主从原理
如果slave node开启了AOF,那么会在全量同步完成后立即执行BGREWRITEAOF,重写AOF)
3.本试验使用了三台centos7主机,配置如下如所示
主机名称 | 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服务状态角色均为slave,连接master的状态也为up,主机的redis服务状态角色为master,显示有两台slave连接了,也能看到两台slave的ip和port
5.主从的数据复制
5.1master写入数据slave也会同步生成
若是写入了数据会导致与主机数据不一致)
只有在配置文件中写入主从配置才会自动连接,否则slave需要手动执行主从配置才会重连master主机)
5.4master挂掉后slave依然会保持在slave状态,主机连接状态变为down,master重新启动后又会自动连接,且master挂掉后,slave依然不能写入
若是主从配置在redis配置文件中,redis重启后又会变为slave状态)
slaveof no one