一 :场景:
server1:192.168.1.142 redis,keepalived
server2: 192.168.1.143 redis,keepalived
VIP:192.168.1.42
二: 目标
用户只要访问通过集群VIP访问redis服务。要求这个架构在服务端保证HA
三:原理
两个redis server主从备份。提供redis 服务HA;
两个keepalived 服务主从备份,提供VIP 服务的HA;
1)每台redis server分别有主,从两个配置文件(redis.conf, redis_slave.conf),通过启动脚本启动服务,启动脚本会检测这个redis集群中的其他服务器的角色,如果有master 服务存在,则以slave角色启动,否则将自己以master服务器启动;
2) keepalived 监控脚本,定时(频率:每秒一次)检测当前服务器是否获取集群VIP,如果获取集群VIP,则将本服务器上的redis服务器设置为master。同时将远端的其他redis服务器设置为slave;保证获取集群VIP的redis 服务器角色为master,其他的设置为slave。
3) keepalived 监控脚本,还会自动检测当前redis服务器是否正常,如果连续两次检测异常,则停掉本本机的keepalived服务,释放集群VIP,让去漂移到其他可以提供redis 服务的服务器上;
四:redis 安装配置
1. redis的安装目录
# /usr/local/redis-2.8.3
2:redis 启动脚本配置
#!/bin/bash REDISPATH=/usr/local/redis-2.8.3 REDISCLI=$REDISPATH/bin/redis-cli LOGFILE=$REDISPATH/logs/redis-state.log LOCALIP=192.168.1.142 REMOTEIP=192.168.1.152 REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep "role"` if grep "role:master" <<< $REMOTEREDISROLE ; then #start as slave echo "slave" >> $LOGFILE $REDISPATH/bin/redis-server $REDISPATH/conf/redis_slave.conf else #start as master echo "master" >> $LOGFILE $REDISPATH/bin/redis-server $REDISPATH/conf/redis.conf fi
这里是142的配置,另外一台服务器只要修改IP地址,其他不变
LOCALIP=192.168.1.152 REMOTEIP=192.168.1.142
3:redis 配置文件,按照正常的主从配置。
五: keepalived安装配置
1. keepalived的安装目录
# /usr/local/keepalived-1.2.9
2. keepalived.conf 配置
! Configuration File for keepalived vrrp_script chk_redis { script "/usr/local/keepalived-1.2.9/etc/keepalived/chk_redis.sh" interval 3 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 2 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.42 } track_script { chk_redis } }
3:chk_redis.sh 监控脚本配置
#!/bin/bash REDISPATH=/usr/local/redis-2.8.3 REDISCLI=$REDISPATH/bin/redis-cli LOGFILE=$REDISPATH/logs/redis-state.log LOCALIP=192.168.1.152 REMOTEIP=192.168.1.142 VIP=192.168.1.42 VIPALIVE=`ip a | grep "$VIP"` if [ "$VIPALIVE" == "" ]; then echo "[info]:"`date`" keepalived server is pengding or stop" >> $LOGFILE else echo "bbb" >> $LOGFILE #check local service is running if [ "`$REDISCLI PING`" == "PONG" ]; then # check local redis server role. REDISROLE=`$REDISCLI info | grep "role"` if grep "role:slave" <<< $REDISROLE ; then #change local redis server as master echo "[info1]:"`date`" Run SLAVEOF NO ONE cmd ..." >> $LOGFILE $REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1 #change remoting redis server as slave REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep "role"` if grep "role:master" <<< $REMOTEREDISROLE ; then echo "[info2]:"`date`" Run remote server SLAVEOF cmd ..." >> $LOGFILE $REDISCLI -h $REMOTEIP SLAVEOF $LOCALIP 6379 >> $LOGFILE 2>&1 fi else REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep "role"` if grep "role:master" <<< $REMOTEREDISROLE ; then echo "[info3]:"`date`" Run remote server SLAVEOF cmd ..." >> $LOGFILE $REDISCLI -h $REMOTEIP SLAVEOF $LOCALIP 6379 >> $LOGFILE 2>&1 fi fi else echo "[warn]:"`date`" redis server($LOCALIP) is not health..." >> $LOGFILE sleep 1 if [ "`$REDISCLI PING`" != "PONG" ]; then echo "[error]:"`date`" redis server($LOCALIP) will be stop..." >> $LOGFILE service keepalived stop fi fi fi
这里是152的配置,另外一台服务器只要修改IP地址,其他不变。如上代码,这里不贴出来了。
六: 测试
只要任何一台keepalived正常,就可以提供vip服务。 redis的master会随着vip的漂移而改变,谁获得了vip,谁就具有redis 的master角色,其他都会置为slave角色
相关推荐
标题 "keepalived + redis 实现双机热备" 涉及到的是在IT行业中构建高可用性系统的关键技术。keepalived 和 redis 是两个关键组件,它们一起工作以确保服务的持续运行,即使在主服务器故障时也能无缝切换到备份...
"suse12 redis-sensienl-keepalived双击热备部署"是一个针对SUSE Linux Enterprise Server 12 (SLES12) 上的Redis数据库进行高可用配置的实践案例。在这个部署方案中,Redis被配置为双主模式(也称为双活或双击),...
keepalived+nginx+tomcat+redis+mysql所需的包,里面包含了三个tomcat与Redis做session共享的jar,编译安装Mysql所需要Boost库和Cmake的包。
Redis 和 Keepalived 的组合是实现高可用性(HA)解决方案的一种常见方法,尤其是在需要保持数据服务连续性的场景中。Redis 是一个高性能的键值存储系统,而 Keepalived 则是一个网络守护进程,主要用于在主服务器...
课程内容包括了Linux基础部分, Linux进阶和高级,Shell编程部分,企业服务管理及Apache服务,LVS+Keepalived负载均衡、无人值守、双机热备。KVM,Zabbix企业级实战,自动化运维体系实战,Gitlab+Ansible+Jenkins...
13、 部署方面使用LVS + keepalived + Nginx实现了双机主备、双主热备,实现了一个高可用的系统架构。 14、 项目开发采用团队式的开发,统一使用Maven私服构建项目,使用统一的SVN服务进行代码的管理。 【课程内容...
该框架的核心组件包括Nginx作为负载均衡器、Keepalived实现高可用性、Apache作为后端服务器、MySQL集群用于数据管理以及Memcached作为缓存服务。 #### 二、负载均衡与高可用性 - **Nginx**:作为主负载均衡器,能够...
MySQL小型高可用架构方案:MySQL双主、主从+Keepalived主从自动切换服务器资源:两台PCServer优点:架构简单,节省资源缺点...优点:双主热备模式,读写分离,SLAVE集群可线性扩展缺点:读写分离需要在程序端解决,Mast
2. 服务器集群:使用负载均衡技术(如LVS)和心跳检测(如Keepalived),实现服务器之间的主从热备,提高可用性。 3. 数据库优化:采用读写分离,缓解数据库压力;利用缓存(如Redis)来处理频繁的读操作,提升响应...
可以考虑采用Nginx或Haproxy结合Keepalived的方式,增加热备机制,提高系统的可用性和可靠性。 - **扩展性考量**:随着业务规模的扩大,需要更加重视系统的可扩展性。可以考虑使用容器化技术(如Docker)和容器编排...