【高可用】通过keepalived实现应用的高可用

43 篇文章 1 订阅
1 篇文章 0 订阅

应用级高可用架构——keepalive

前言

企业级应用往往追求高可用,考虑到生产环境的安全性及稳定性,生产应用不可单点部署,同时要求当应用服务节点出现异常时可自动切换至备用节点并且在故障节点恢复后,应用环境可自动恢复至故障前状态。

实现过程

实现原理

通过部署keepalived应用,可实现应用层面的高可用HA架构,如下图所示:
在这里插入图片描述

当主节点(master)应用异常退出时,生产服务ip自动切换至备用节点(backup),并且当主节点恢复后可自动抢夺vip。
主节点故障:
在这里插入图片描述
主节点故障恢复:
在这里插入图片描述

配置过程

这里以syslog-ng应用的高可用为例,配置syslog接收服务的高可用HA架构

  1. 安装部署syslog-ng应用
yum remove -y rsyslog
yum install -y syslog-ng
systemctl start syslog-ng
systemctl enable syslog-ng

配置syslog-ng,使其监听514端口
在这里插入图片描述
重启syslog-ng

systemctl restart syslog-ng
  1. 两台机器同时部署keepalived应用并指定master节点和backup节点
yum install -y keepalived

编辑keepalived配置文件内容如下:
master节点

! Configuration File for keepalived

vrrp_script chk_syslog {
        script "/etc/keepalived/check_syslog.sh"
        interval 1
        weight -2
}

vrrp_instance VI_1 {
        state MASTER
        interface ens33
        virtual_router_id 100
        priority 100
        advert_int 1
        mcast_src_ip 172.160.100.20
        smtp_alert
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
                172.160.100.30
        }
        track_script {
                chk_syslog
        }
}

backup节点

! Configuration File for keepalived

vrrp_script chk_syslog {
        script "/etc/keepalived/check_syslog.sh"
        interval 1
        weight -2
}

vrrp_instance VI_1 {
        state BACKUP
        interface ens33
        virtual_router_id 100
        priority 99
        advert_int 1
        mcast_src_ip 172.160.100.21
        smtp_alert
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
                172.160.100.30
        }
        track_script {
                chk_syslog
        }
}

  1. 编写检查脚本用于检查本地应用是否存活(或者正常),脚本内容如下:
#! /usr/bin/sh
m_status=`lsof -i:514`
if [ "$m_status" = "" ]; then
exit 1
fi

echo "check success"
  1. 两台服务器上均启动keepalived应用并且设置开机自启动
systemctl start keepalived
systemctl enable keepalived

在这里插入图片描述

效果效果

首先确认服务器1(ip:172.160.100.20)的名称为“server-20”,服务器2(ip:172.160.100.21)的名称为“server-21”,直接通过第三台服务器登录172.160.100.30

PS: 由于此处做了登录免密,因此不需要输入用户密码

在这里插入图片描述
可以看到此时172.160.100.30的服务器名称为server-20,此时关闭server-20上的syslog-ng应用

systemctl stop syslog-ng

再次登录172.160.100.30
在这里插入图片描述
发现设备名称已经变成“server-21”,可见第二台服务器已经抢占了该虚拟ip,此时重新启动“server-20”上的syslog-ng,

systemctl start syslog-ng

再次登录172.160.100.30
在这里插入图片描述
发现服务器名称重新变成“server-20”,表明虚拟ip已经被“server-20”重新抢占。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值