redis集群环境搭建
主从复制概念
主从复制是指,将一台redis服务器的数据复制到其他redis服务器。主节点(master)以写为主,从节点(slave)以读为主。 数据复制时单向的,只能从主节点到从节点。
主从复制的主要作用
数据冗余 故障恢复 负载均衡 高可用(集群)基石:主从复制是哨兵和集群能实施的基础
集群搭建
redis使用中,不能只用一台服务器的,原因如下: 1,从结构上,单个redis会发生单点故障问题,并且服务器处理所有请求,压力较大。读多写少,可以一主三从。 2,从容量上,单个reids容量有限,一台redis服务器不能将所有内存都用作reids存储内存,一般一台redis最大使用内存不应该超过20G。
步骤
增加几个不同的配置文件: redis80.conf … 修改一下内容: 端口,pid名字,log文件名,dump.rdb文件名
启动三个redis-server服务,默认三个服务都是主节点,master
为辅节点配置主节点(这里我选6379为主节点):slaveof 127.0.0.1 6379 此时查看当前redis服务:info replicaiton
注:配置文件中修改是永久修改,而命令修改是临时修改
细节
主机负责写,从机负责读(从机不能写)。 主机断开连接时,从机依然连接到主机,但是依然没有写操作 主机恢复后,从机依然可以读到主机新写入的信息 从机断开后,主机检测不到从机,此时,如果使用命令行配置:重启后从机变成自己的主机,断开后的数据无法同步,从机重新连接主机后数据会重新写入;(两个专业名词:全量复制,增量复制)如果使用配置文件配置:从机重启后自动重连。
复制原理
slave启动后会向master发送一个sync同步命令 master接到后启动存盘进程,更新数据集后,将这个数据文件传到slave,完成一次完全同步 全量复制:slave接收到这个数据文件后,将其存盘并加载到内存 增量复制:master继续将新修改的命令传给slave完成同步 所以,slave重连时自动执行全量复制
宕机后手动配置主机
将从节点当作主节点的链式主从
比如79为主节点,80为79的从节点,81将主节点设为80,此时,80依然是从节点
但是如果79主机断开连接,80可以通过slaveof no one 让自己变成主机,其他节点都可以连到最新节点。 此时看配置info replication 就发现就算79主机回来,80依然是master. 我们现在手动配置,哨兵模式就是自动选举。
哨兵模式(自动选举模式)
当master宕机后,需要手动切换一台服务器,会造成一段时间的服务不可用(商业问题将会非常麻烦)。 redis2.8以后就有了。能够后台监控主机是否故障,如果故障了根据投票数自动将slave换成master。
哨兵是一个独立的进程,它的运行原理就是:通过发送命令,等待redis服务器响应,从而监控多个redis实例。 redis-sentinel文件 哨兵的作用: 1,发送命令,监控redis服务器运行状态(包括master和slave) 2,当哨兵监测到master宕机,会通过发布订阅模式通知其他slave,修改配置文件,让slave切换成master 为了降低风险(一个哨兵监控redis可能会出现问题),我们使用多个哨兵监控。各个哨兵间还会进行互相监控,这样就形成了多哨兵模式。 当一个哨兵发现redis服务器宕机了,这个现象被称为主观下线。当一定数量的哨兵发现主redis宕机,则进行投票(由一个哨兵发起),进行failover(故障转移)操作。然后通过发布订阅模式将slave切换成master,这个过程称为客观下线。
实现
1.编写哨兵的配置文件sentinel.conf:
sentinel monitor myredis 127.0.0.1 6379 1
1代表1个哨兵sentinel同意,就可以开启failover 2。启动哨兵:
redis-sentinel sentinel.conf
3.哨兵会自行发送心跳包,就算源master修复,也只能是slave:
info replication
哨兵模式
优点
1,哨兵模式基于主从复制,所有的主从配置有点,它都有 2,主从可以切换,故障可以转移,可用性好 3,哨兵模式使主从复制从手动
|