集群的作用
- 主从备份 防止主机宕机
- 读写分离 分担master的任务
- 任务分离,如从服务器分别分担备份工作与计算工作
集群的两种方式
QQ图片20190314152917.png
QQ图片20190314153346.png
主从通信过程
QQ图片20190314154414.png
说明:slave启动后,会自动链接到master发起同步,master会dump出rdb传给slave,同步过程中master新产生的命令会缓冲到aof,slave将rdb同步完成后会继续将aof拿过来完成同步,以后的master改变会通过replicationFeedSlaves同步到slave。
redis集群配置
Master配置:
1:关闭rdb快照(备份工作交给slave)
2:可以开启aof
slave配置:
1: 声明slave-of
2: 配置密码[如果master有密码]
3: [某1个]slave打开 rdb快照功能
4: 配置是否只读[slave-read-only]
开始搭建
[root@myserver redis]# pkill -9 redis #关掉redis进程
[root@myserver redis]# cp redis.conf redis6380.conf #复制redis配置文件
[root@myserver redis]# cp redis.conf redis6381.conf #复制redis配置文件
[root@myserver redis]# vim redis6380.conf #配置slave1
[root@myserver redis]# vim redis6381.conf #配置slave2
[root@myserver redis]# vim redis.conf #配置master
[root@myserver redis]# rm -rf /var/rdb/* #删掉持久化文件测试
[root@myserver redis]# ./redis-server ./redis.conf #启动6379
[root@myserver redis]# ./redis-server ./redis6380.conf #启动6380
[root@myserver redis]# ./redis-server ./redis6381.conf #启动6381
[root@myserver redis]# ./redis-cli #链接6379
127.0.0.1:6379> set name lilei
OK
[root@myserver redis]# ./redis-cli -p 6380 #链接6380 #新窗口
127.0.0.1:6380> keys *
1) "name"
[root@myserver redis]# ./redis-cli -p 6381 #链接6381 #新窗口
127.0.0.1:6381> get name
"lilei"
redis6380.conf修改内容
port 6380
pidfile /var/run/redis_6380.pid
slaveof 127.0.0.1 6379 #master服务器
dbfilename dump6380.rdb #rdb持久化文件
appendonly no #关闭aof持久化
redis6381.conf修改内容
port 6381
pidfile /var/run/redis_6381.pid
slaveof 127.0.0.1 6379 #master服务器
#save 900 1 # 关掉rdb持久化
#save 300 10
#save 60 10000
appendonly no #关闭aof持久化
redis.conf修改内容
#save 900 1 # 关掉rdb持久化
#save 300 10
#save 60 10000
Redis主从复制的缺陷
每次slave断开后(无论是主动断开还是网络故障),再链接master,都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍,所以要记住–多台slave不要一下子都启动起来,否则master可能IO剧增。