栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

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

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

keepalive实现应用级高可用
  • 应用级高可用架构——keepalive
    • 前言
    • 实现过程
      • 实现原理
      • 配置过程
    • 效果效果

应用级高可用架构——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”重新抢占。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号