【redis】高可用:keepalived+redis

redis高可用:keepalived+redis

具备的条件:部署好 【Redis Master-Slave + Keepalived 】 Keepalived安装、Tengine+Keepalived部署手册

1.先验证redis主从

分别在139主140从 开启redis服务cd /usr/local/redis/redis-5.0.5 执行命令 ./src/redis-server /usr/local/redis/conf/redis.conf之后执行客户端命令./src/redis-cli

 

 

 

2.主从公共脚本 在139主和140从 /etc/keepalived/新建scripts

2.1Redis监控脚本

/etc/keepalived/srcipts/check_redis.sh

#!/bin/bash

CHECK=`/usr/local/redis/redis-5.0.5/src/redis-cli PING`

if [ "$CHECK" == "PONG" ] ;then

      echo $CHECK

      exit 0

else

      echo $CHECK

            service keepalived stop #可确保让出MASTER

      exit 1

Fi

2.2redis_fault.sh 和 redis_redis_stop.sh

vim /etc/keepalived/scripts/redis_fault.sh

#!/bin/bash

LOGFILE=/usr/local/redis/logs/keepalived-redis-state.log

echo "[fault]" >> $LOGFILE

date >> $LOGFILE

 

vim /etc/keepalived/scripts/redis_stop.sh

#!/bin/bash

LOGFILE=/usr/local/redis/logs/keepalived-redis-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

 

3.3 keepalived scripts for redis

在redis主139配置:

vim/etc/keepalived/scripts/redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/redis/redis-5.0.5/src/redis-cli"

LOGFILE="/usr/local/redis/logs/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 172.168.2.140 6379 >> $LOGFILE  2>&1

sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

 

vim /etc/keepalived/scripts/redis_backup.sh

#!/bin/bash

REDISCLI="/usr/local/redis/redis-5.0.5/src/redis-cli"

LOGFILE="/usr/local/redis/logs/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being slave...." >> $LOGFILE 2>&1

sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 172.30.1.140 6379 >> $LOGFILE  2>&1

 

在reids从140配置:

vim/etc/keepalived/scripts/redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/redis/redis-5.0.5/src/redis-cli"

LOGFILE="/usr/local/redis/logs/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 172.168.2.139 6379 >> $LOGFILE  2>&1

sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

 

vim /etc/keepalived/scripts/redis_backup.sh

#!/bin/bash

REDISCLI="/usr/local/redis/redis-5.0.5/src/redis-cli"

LOGFILE="/usr/local/redis/logs/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being slave...." >> $LOGFILE 2>&1

sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 172.30.1.139 6379 >> $LOGFILE  2>&1

 

3.4配置keepalived.conf 注意 红色为主从配置不一样的地方

在139配置keepalived.conf

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL 

}

 

vrrp_script chk_redis {

  script "/etc/keepalived/scripts/check_redis.sh"

  interval 1    #健康检查周期

  weight -20     #优先级变化幅度

}

 

vrrp_instance VI_1 {

    state MASTER

    interface eth1

    virtual_router_id 51

    priority 101

    advert_int 1

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        172.168.2.142/24  

    }

    track_script {              #执行脚本chk_redis

        chk_redis

    }

    notify_master /etc/keepalived/scripts/redis_master.sh

    notify_backup /etc/keepalived/scripts/redis_slave.sh

    notify_fault /etc/keepalived/scripts/redis_fault.sh

    notify_stop /etc/keepalived/scripts/redis_stop.sh

}

 

 

在140配置keepalived.conf

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL2

}

 

vrrp_script chk_redis {

  script "/etc/keepalived/scripts/check_redis.sh"

  interval 1    #健康检查周期

  weight -20     #优先级变化幅度

}

 

 

vrrp_instance VI_1 {

    state BACKUP

    interface eth1

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        172.168.2.142/24

    }

    nopreempt

    track_script {              #执行脚本chk_redis

        chk_redis

    }

    notify_master /etc/keepalived/scripts/redis_master.sh

    notify_backup /etc/keepalived/scripts/redis_slave.sh

    notify_fault /etc/keepalived/scripts/redis_fault.sh

    notify_stop /etc/keepalived/scripts/redis_stop.sh

}

 

4.启动keepalived

启动 service keepalived start 或者 /etc/init.d/keepalived start

 

4.1用ip a查看虚拟vip 此时是在139主上

 

4.2用 ./src/redis-cli -h 172.168.2.142 -p 6379 此时的是139主

 

4.3测试vip漂移,此时的vip是在139,把139的redis服务断掉会切换掉140

 

此时发现vip飘到

4.4此时在140从用虚拟ip登陆,140角色变换成主master

 

 

4.5 139重新开启redis和keepalived 则139 又变成主 也能备份刚刚140设置的新数据demo1

 

 

此时就实现了高可用的基本功能。

redis主从访问不了一定要看两台linux的端口是否开发。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于您提到的keepalived、nginx、tomcat、redis和mysql,这些是常用于构建高可用和负载均衡的Web应用架构的关键组件。 1. KeepalivedKeepalived是一种开源的高可用解决方案,可以提供IP地址和服务的故障转移。它通常与负载均衡器(如Nginx)一起使用,以确保当主服务器故障时,备份服务器可以接管服务。 2. Nginx:Nginx是一款高性能的开源Web服务器和反向代理服务器。它可以作为负载均衡器,在多个后端服务器(如Tomcat、Redis和MySQL)之间分发请求,并提供静态文件的高效传输。 3. Tomcat:Tomcat是Java Servlet容器,用于部署和运行Java Web应用程序。它可以作为应用服务器与Nginx配合使用,通过反向代理将请求分发到多个Tomcat实例,以实现负载均衡和高可用性。 4. RedisRedis是一种基于内存的开源键值存储数据库,被广泛用于缓存、会话存储和消息队列等场景。在Web应用架构中,Redis可以作为缓存层,提高数据读取速度,并减轻后端数据库(如MySQL)的负载。 5. MySQL:MySQL是一种流行的开源关系型数据库管理系统,常用于存储应用程序的持久化数据。它可以与Tomcat结合使用,作为后端数据库存储和管理数据。 以上是对keepalived、nginx、tomcat、redis和mysql的简要介绍,它们在Web应用架构中扮演着不同的角色,以提供高可用、高性能和负载均衡的服务。如果您对其中任何一个组件有更具体的问题,我很乐意为您解答。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值