一、为什么需要集群?
1、性能考虑
一台redisQPS为10万(每秒钟可以处理的请求数),在并发量非常高的时候,还是有影响。
2、扩展考虑
水平扩容,redis都是存储在内存里,当数据量非常大的时候会受到硬件的限制。
3、可用性、安全性考虑
防止单点故障。
二、配置主从复制
1、建立复制
(1) 复制实例分为Master和slave,默认情况下,参与复制的Redis实例都是主节点,每个从节点只能有一个主节点,而主节点可以同时具有多个从节点,同时复制的数据流是单向的,只能由主节点复制到从节点。配置复制的方式:
1)在配置文件加入slaveof{masterHost}{masterPort}
2)在Redis-server启动时候加入 --slaveof{masterHost}{masterPort}
3)直接使用命令slaveof{masterHost}{masterPort}
(2)查看当前redis的信息:info replication
2、断开复制
slaveof no one :断开与主节点的联系,从节点晋升为主节点。
断开复制从节点数据不会抛弃原因的数据,但是无法获取主节点上的新数据。
3、切主流程
命令操作:直接在从节点使用slaveof 新的ip 新的端口
断开与旧主节点的复制关系
与新主节点建立复制关系
删除从节点当前所在所有数据
对新主节点进行复制
注意:且住后从节点会清空之前所有的数据,因此线上操作要严格确认
4、安全性
尽量选择安全可信任的网络环境
对于重要数据,可以配置requirepass进行验证(或者堡垒机)
5、只读模式
默认情况下,从节点使用slave-read-only=yes 配置为只读模式,在线上环境尽量不要对从节点进行写数据操作避免造成数据不一致。写一般在从节点进行。
6、传输延迟
主从点部署在不同机器上,因此在复制的时候网络延迟是最需要考虑的问题:repl-disable-tcp-nodelay用户控制TCP_NODELAY,默认是关闭的
当关闭时,主节点产生的命令数据无论大小都会及时地发送给从节点,优势是延迟小,但是会增加网络带宽消耗,建议在复制实例都在同一个局域网环境内使用
当开启时