Redis双机热备方案(3)

(1).在keepalived.conf配置文件中,将keepalived双机 都设置成BACKUP.同时在218上设置了nopreempt,即恢复时不抢占。而规划中是将218作为master。所以在启动过程中要遵循以下顺序:先启动218上的keepalived,等待数据同步完成后,再启动219上的keepalived.

(2).在keepalived的巡检脚本Redis_check.sh中加入了状态切换的监控脚本。在master.sh中设置了当keepalived切换成master,会先将redis切换成slave进行同步数据,再切换回master。所以在启动keepalived之前,要保证Master和Slave上redis的数据是一致的,这样先启动redis的master那台的keepalived,虽然redis master会连接到redis slave同步数据,但是两边数据在刚开始的时候是一致的,并不会产生什么问题。

(3).在实际生产环境中需要修改防火墙策略,开放相应的端口。在此直接先将防火墙关闭:service iptables stop。

以下为各种测试场景和输出结果:

-----------------------------------------初始环境--------------------------------------------------

设定一下初始环境:

----启动218和219的redis: /usr/local/redis/redis-start.sh

image_thumb30

----启动218的keepalived: service keepalived start;先不启动219的keepalived.

在218上执行tail –f /usr/local/keepalived/logs/keepalived.log,可看到keepavlived切换成master state(配置文件中是设置state:backup),且绑定了VIP。

image_thumb35

查看218Master:redis的日志,可以看到redis切换的过程如下:

image_thumb[3]

----启动219Slave的keepalived,并查看redis的日志,可以看到redis的状态变成了slave:

image_thumb[6]

-----------------------------------------初始环境--------------------------------------------------

-----------------------------------------设计思路3-------------------------------------------------

----模拟设计思路3,将218Master的redis进程kill掉:

此时218的keepalived会被停止,如下图:

219的keepalived会正确切换成State:Master,VIP完成漂移,如下图:

218的redis监控日志如下,

image_thumb[20]

219的redis监控日志如下,显示了219已切换成master,保证了业务(当然此处218在内存中未写入文件的数据会丢失):

image_thumb[23]

----模拟218从故障中恢复:

因为在发现故障时,会将218上的keepalived关闭,因此恢复时,需要先启动218的redis,然后再启动218的keepalived:

查看218的keepalived日志,218的keepalived直接进入state:backup,不会造成业务的来回切换:

image_thumb[28]

查看218的redis日志,218的redis启动后,会切换成已存在redis服务器的备机。

image_thumb[31]

综上所示,设计思路3测试成功。

-----------------------------------------设计思路3-------------------------------------------------

-----------------------------------------设计思路2-------------------------------------------------

----先设置成初始环境,再模拟设计思路2,将218的keepalived进程kill掉(service keepalived stop):

查看218的redis监控日志:

image_thumb[38]

查看219的keepalivd日志,说明keepalived正常切换了:

image_thumb[37]

查看219的redis监控日志,可以看到redis完成了主从切换:

image_thumb[41]

----模拟218从keepalived故障中恢复(只需要先kill所有keepalived进程后正常启动),执行service keepalived start:

查看219的keepalived的日志,可以看到keepalived的state为backup,不会造成VIP的漂移:

image_thumb[50]

查看218的redis监控日志,可

image_thumb[44]

查看218的redis运行日志,可以看到redis恢复为slave身份,不会造成业务切换:

image_thumb[47]

综上所示,设计思路2测试成功。

-----------------------------------------设计思路2-------------------------------------------------

设计思路4即为初始环境,设计思路1的情况为设计思路2和3的综合情况,无需测试了。

以上即为Redis双机热备方案。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/fa64eade9baa9808f81e3ca40998d4bb.html