redis+keepalived 实现 HA

2 篇文章 0 订阅

转载自:http://blog.sina.com.cn/s/blog_51cd5b6f01014r7p.html

redis 安装配置到主从及ha的实现
sed -i '/^\$/ aexclude=*.i?86' /etc/yum.conf
yum remove \*.i\?86 -y
yum groupinstall "Development Libraries" "Development Tools" -y
wget http://redis.googlecode.com/files/redis-2.4.11.tar.gz
tar zxvf redis-2.4.11.tar.gz
cd redis-2.4.11
make && make test && make install && cd ..

#make命令执行完成后,会在当前目录下生成本个可执行文件,如下:
#redis-server:Redis服务器的daemon启动程序
#redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
#redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
#redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况

cp redis.conf /etc/
sed -i '/^daemonize/ s/ no$/ yes/g' /etc/redis.conf

# redis-cli
redis 127.0.0.1:6379> set foo bar
OK
redis 127.0.0.1:6379> get foo
"bar"
redis 127.0.0.1:6379>

redis双机高可用的基础,是redis的主备复制机制。指定主备角色,是用slaveof命令。
指定本机为master
slaveof NO ONE
指定本机为192.168.1.10的slave
slaveof 192.168.1.10 6379
如果同mysql的master-master机制那样,分别在配置文件中指定本机为对方的slave,不过后来发现这个方法行不通。如果配置文件中都设置slaveof x.x.x.x,那么这两个redis启动之后不提供服务,客户端无法连接,类似于服务死锁的状态。
实验发现,如果两个服务按照都master方式启动,然后给一个master发送slaveof命令,指定其为另一个的slave,则此时双方都为slave,数据可以进行双向同步。基于这个原理,设计了一个redis双机互备的机制。

结构如下:
redis:
server:192.168.202.40
cluster:
master:192.168.202.114
slave: 192.168.202.115

实现方式如下 :
1、 两台redis服务器,配合keepalived。
2、 初始状态,是在master(192.168.202.114)上绑定keepalived的virtual ip 192.168.202.40。
3、 启动一个监控脚本,每秒钟对两个redis服务进行一次扫描。
4、 如果两台redis处于正常master-slave状态,则不进行操作。
5、 如果master挂掉,监控脚本对在线的slave(192.168.202.115)发送slaveof NO ONE命令,
设置其为临时的主机master,同时由于原来的master服务器挂掉,
virtual ip 192.168.202.40自动转移至master,不影响应用程序对redis的存取。
此时应用程序新产生的数据都保存到master(192.168.202.115)上。
6、 脚本监测到原来的master(192.168.202.114)在挂掉后重新启动加入集群,
则向master发送slaveof 192.168.202.115 6379命令,设置其为slave,
从master(192.168.202.115)复制在自己挂掉期间丢失的数据。
以上描述参考 http://www.iteye.com/topic/1108383

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RedisKeepalived 集群中,通常会使用以下 5 个脚本: 1. 启动脚本 `redis-server-startup` Redis 启动脚本 `redis-server-startup` 负责在服务器启动时启动 Redis 服务。该脚本会根据配置文件中的 `redis.conf` 启动 Redis 服务,并将输出日志写入日志文件。如果 Redis 服务已经在运行,则该脚本不会做任何操作。 2. 停止脚本 `redis-server-shutdown` Redis 停止脚本 `redis-server-shutdown` 负责在服务器关闭时关闭 Redis 服务。该脚本会发送 SHUTDOWN 命令给 Redis 服务,并等待 Redis 服务正常关闭。如果 Redis 服务无法正常关闭,则该脚本会强制关闭 Redis 服务。 3. 状态检查脚本 `redis-server-check` Redis 状态检查脚本 `redis-server-check` 负责检查 Redis 服务的状态。该脚本通常会被 Keepalived 的监控工具调用,例如 monit。如果 Redis 服务没有运行,则该脚本会返回非零值,否则返回零值。 4. 故障转移脚本 `redis-server-switch` Redis 故障转移脚本 `redis-server-switch` 负责在主服务器宕机时,将备份服务器切换为主服务器。该脚本通常会在 Keepalived 配置文件中的 `vrrp_script` 中被调用。该脚本会向 Redis 服务发送 `SLAVEOF` 命令,将备份服务器切换为主服务器。 5. 通知脚本 `redis-server-notify` Redis 通知脚本 `redis-server-notify` 负责在切换服务器后通知管理员。该脚本通常会在 Keepalived 配置文件中的 `vrrp_script` 中被调用。该脚本可以通过邮件、短信等方式通知管理员服务器的变更。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值