Redis主从配置及使用KeepAlived实现Redis高可用

一:环境介绍

Master: 172.16.206.29

Slave: 172.16.206.28

Virtural IP Address (VIP): 172.16.206.250

二:设计思路:

当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby;

当 Master 挂掉,Slave 正常时, Slave接管服务,有写权限,同时关闭主从复制功能;

当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,同时Slave等待Master同步数据完成之后,恢复Slave身份。

三:安装配置前准备工作

在主服务器 172.16.206.29 上面做下面操作

echo “172.16.206.29 osb29” >> /etc/hosts

echo “172.16.206.28 osb28” >> /etc/hosts

在从服务器 172.16.206.28 上面做下面操作

echo “172.16.206.29 osb29” >> /etc/hosts

echo “172.16.206.28 osb28” >> /etc/hosts

四:主服务器配置redis

1.下载redis 版本2.8.19

wget http://download.redis.io/releases/redis-2.8.19.tar.gz

2.解压 tar -zxvf redis-2.8.19.tar.gz

3.cd redis-2.8.19

4.make && make install

5.cp redis.conf /etc/redis.conf

cd src/

cp redis-server redis-cli redis-benchmark redis-check-aofredis-check-dump /usr/local/bin

6.修改 /etc/redis.conf里面可以把daemonize no 修改为daemonize yes

目的是可以在后台执行redis-server。

7.init.d 启动脚本

    vi /etc/init.d/redis-server

chmod o+x /etc/init.d/redis-server

chkconfig –add redis-server

service redis-server start

五:从服务器配置redis

从服务器,配置一样,只不过 修改/etc/redis.conf 中

slaveof <masterip> <masterport>修改为

slaveof 172.16.206.28 6379

然后开启从服务器的redis服务。

start redis-server start

 

六:进行redis主从测试

#主服务器

redis-cli -p 6379 set hello world

#从服务器

redis-cli -p 6379 get hello

“world”

 

#主服务器

redis-cli -p 6379 set hello2 world2

#从服务器

redis-cli -p 6379 get hello2

“world2”

redis-cli -p 6379 set hello world

(error) READONLY You can’t write against a read only slave.

成功配置主从redis服务器,由于配置中有一条从服务器是只读的,所以从服务器没法设置数据,只可以读取数据。

 

七:安装和配置keepalived

1. wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz

tar -zxvf keepalived-1.2.15.tar.gz

cd keepalived-1.2.15

2.  安装openssl-devel和kernel-devel

yum install openssl-devel

yum install kernel-devel

ln -s /usr/src/kernels/2.6.32-431.el6.x86_64 /usr/src/linux

3. 配置编译安装

./configure–prefix=/usr/local/keepalived  –with-kernel-dir=/usr/src/linux   –enable-sha1

make && make install

4. 复制keepalived相关文件

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/samples/keepalived.conf.virtualhost

/etc/keepalived/keepalived.conf

八:修改配置文件和相关脚本

1. 在Master上创建配置文件

vi /etc/keepalived/keepalived.conf

2.在Slave上创建如下配置文件

vim /etc/keepalived/keepalived.conf

 

3.在Master和Slave上创建监控Redis的脚本

$  mkdir /etc/keepalived/scripts

$  vim /etc/keepalived/scripts/redis_check.sh

 

4.编写关键脚本

notify_master /etc/keepalived/scripts/redis_master.sh

notify_backup /etc/keepalived/scripts/redis_backup.sh

notify_fault /etc/keepalived/scripts/redis_fault.sh

notify_stop /etc/keepalived/scripts/redis_stop.sh

因为Keepalived在转换状态时会依照状态来执行脚本:

当进入Master状态时会呼叫notify_master

当进入Backup状态时会呼叫notify_backup

当发现异常情况时进入Fault状态呼叫notify_fault

当程序终止时则呼叫notify_stop

 

首先,在Redis Master上创建notity_master与notify_backup脚本:

vi /etc/keepalived/scripts/redis_master.sh

vi /etc/keepalived/scripts/redis_backup.sh

 

在Redis Slave上创建notity_master与notify_backup脚本:

vi /etc/keepalived/scripts/redis_master.sh

vi /etc/keepalived/scripts/redis_backup.sh

然后在Master与Slave创建如下相同的脚本:

 

vi /etc/keepalived/scripts/redis_fault.sh

vi /etc/keepalived/scripts/redis_stop.sh

在主从服务器上面给脚本都加上可执行权限:

chmod +x /etc/keepalived/scripts/*.sh

九:相关功能测试

启动Master和slave上的Redis

service redis-server start

启动Master和slave上的Keepalived

/etc/init.d/keepalived start

尝试通过VIP连接Redis:

$ redis-cli -h 172.16.206.250 INFO

连接成功,可以看到主从机的信息,例如:

role:master

slave0:172.16.206.28,6379,online

 

尝试插入一些数据:

$ redis-cli -h 172.16.206.250 SET hello3 world3

OK

 

从VIP读取数据

$ redis-cli -h 172.16.206.250 GET hello3

“world3”

从Master读取数据

$ redis-cli -h 172.16.206.29 GET hello3

“world3”

从Slave读取数据

$ redis-cli -h 172.16.206.28 GET hello3

“world3”

 

将Master上的Redis进程杀死:

$ service redis-server stop

查看Master上的Keepalived日志

$ tail -f /var/log/keepalived-redis-state.log

[fault]

Mon Jan  5 14:06:22 CST 2015

 

同时Slave上的日志显示:

$ tail -f /var/log/keepalived-redis-state.log

[master]

Mon Jan  5 14:13:52 CST 2015

Being master….

Run SLAVEOF cmd …

OK Already connected to specified master

Run SLAVEOF NO ONE cmd …

OK

现在,Slave已经接管服务,并且拥有Master的角色

$ redis-cli -h 172.16.206.250 INFO

$ redis-cli -h 172.16.206.28 INFO

role:master

 

然后恢复Master的Redis进程

$  service redis-server start

查看Master上的Keepalived日志

$ tail -f /var/log/keepalived-redis-state.log

 

[master]

2015年 01月 05日 星期一 15:48:08 CST

Being master….

Run SLAVEOF cmd …

OK

Run SLAVEOF NO ONE cmd …

OK

同时Slave上的日志显示:

$ tail -f /var/log/keepalived-redis-state.log

[backup]

Mon Jan  5 14:53:16 CST 2015

Being slave….

Run SLAVEOF cmd …

OK

 

Master已经再次恢复了Master角色


from:http://abcve.com/redis-keepalived/



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis主从+Keepalived是一种常见的Redis高可用方案。它的基本原理是通过使用Keepalived实现Redis主从切换。具体步骤如下: 1. 首先,需要安装和配置Keepalived。可以按照以下步骤进行操作: - 下载并解压Keepalived的源代码。 - 进入解压后的目录,并执行以下命令进行编译和安装: ``` ./configure --prefix=/usr/local/keepalived/ make make install ``` - 拷贝所需的文件到相应的目录,例如: ``` cp /usr/local/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir -p /etc/keepalived/ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf ``` - 修改keepalived.conf文件,根据实际情况配置虚拟IP(VIP)和监控脚本等参数。 2. 然后,需要配置Redis主从复制。可以按照以下步骤进行操作: - 在Redis的主节点上,修改redis.conf文件,将`slaveof`参数设置为空,即不指定从节点。 - 在Redis的从节点上,修改redis.conf文件,将`slaveof`参数设置为主节点的IP和端口,例如:`slaveof <master_ip> <master_port>`。 3. 最后,启动KeepalivedRedis服务。 - 在Master节点上,启动Keepalived服务。 - 在Master和Slave节点上,分别启动Redis服务。 这样,当Redis的Master节点发生故障时,Keepalived会检测到故障并自动切换到Slave节点,确保Redis服务的高可用性。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [redis高可用keepalived+redis主从部署](https://blog.csdn.net/liuguanghui1988/article/details/77098143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Keepalived+redis主从](https://blog.csdn.net/qq_37668945/article/details/88618390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值