keepalived(监测心跳)

本文介绍如何使用Keepalived通过VRRP协议搭建Web服务的高可用集群。通过在两台服务器上配置Keepalived,当主服务器发生故障时,备份服务器能够接管虚拟IP并继续提供服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keepalived是基于VRRP协议来实现的WEB服务高可用方案, 从而提高网站的高可用。

一个web服务器至少两台或多台服务器在运行keepalived,主服务器宕机的时候,备份服务器就会接管虚拟IP继续运转,不会因为主服务器宕机而停止服务。

下面就是keepalived心跳监测具体实现(http端口测试):

首先准备两台服务器:

192.168.1.110  (主)

192.168.1.209  (备)

1、下载keepalived(两个都下载)

# yum install keepalived 

2、修改配置文件(主)

# ip addr


# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

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_http_port {
       script "</dev/tcp/127.0.0.1/81" # connects and exits
       interval 1                      # check every second
       weight -2                       # default prio: -2 if connect fails
}
vrrp_instance VI_1 {
    state MASTER
    interface eno16777736 #如上图所示
    virtual_router_id 51
    priority 100 #大于配置文件
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111#安全验证
    }
    virtual_ipaddress {
        192.168.1.190 #虚拟ip
    }

track_script {
        chk_http_port
    }
}

3、修改配置文件(从)

! Configuration File for keepalived

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_http_port {
       script "</dev/tcp/127.0.0.1/81" # connects and exits
       interval 1                      # check every second
       weight -2                       # default prio: -2 if connect fails
}
vrrp_instance VI_1 {
    state BACKUP #区分
    interface eno16777736 #如上图所示
    virtual_router_id 51
    priority 80 #需要比主小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111  #安全验证
    }
    virtual_ipaddress {
        192.168.1.190 #虚拟ip
    }

    track_script {
        chk_http_port
    }
}


两个服务器除个别地方需改动,其他一样

4、修改之后两个配置文件都需要重启

# systemctl restart keepalived

5、此时虚拟ip在主服务器中显示

# ip addr

主服务器中http服务如果突然挂掉,虚拟ip就会在备份服务器中显示,也就是说keepalived检测到81端口停止,就从主服务器把服务转到了备份中继续运转。

Keepalived是一款用于实现高可用性(HA,High Availability)的开源软件,广泛应用于Linux环境中。它主要用于监控服务的状态,并在主服务器出现故障时切换到备用服务器上,以此保障系统的持续运行和服务的可靠性。健康状态监测Keepalived的一项重要功能,下面详细介绍相关内容。 ### 1. Keepalived的工作原理 Keepalived基于VRRP协议(Virtual Router Redundancy Protocol),通过虚拟IP地址的方式为网络服务提供冗余性和负载均衡能力。它的核心组件包括三个模块: - **Core(核心模块)**: 主要是处理VRRP协议栈及路由管理部分。 - **VRRP(虚拟路由器冗余协议模块)**: 实现高可用的核心模块,负责VIP漂移等功能。 - **Healthchecker(健康检查模块)**: 对实际的服务进行健康状态检查,这是本文的重点所在。 当配置好Keepalived之后,它会定期发送心跳包给其他节点以维持通信连接,并利用健康检查机制确保后端的真实业务服务处于良好状态。 --- ### 2. 健康状态监测概述 健康状态监测是指Keepalived通过对指定的目标服务发起探测请求来判断该服务是否正常工作的一种手段。如果发现目标不可达或者返回结果不符合预期,则认为此服务已经宕机或进入非健康状态,此时Keepalived将会触发相应的动作,比如停止接收流量或将流量转移到备份节点上去。 #### (1)常见的检测方法 - **HTTP_GET / HTTPS_GET** : 向Web服务器发出GET请求并验证响应码; - **TCP_CHECK** : 尝试建立一个完整的TCP三次握手过程; - **MISC_CHECK** : 执行外部脚本来完成复杂的定制化检测任务。 每个方法都有各自的优点和局限性,在选择具体的策略时应结合实际情况综合考虑。 --- ### 3. 配置健康状态监测 要在Keepalived中启用健康状态监测功能,需要编辑`keepalived.conf`文件并在适当位置添加相关的health_check规则。这里给出一个简单的例子作为参考: ```bash vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 # 定义优先级 priority 100 advert_int 1 authentication { auth_type PASS auth_pass mypassword } virtual_ipaddress { 192.168.1.100 } track_script { chk_http_port } } # 自定义脚本检查项 vrrp_script chk_http_port { script "/usr/local/bin/check_http.sh" interval 2 # 每隔两秒执行一次 weight -20 # 如果失败则降低权重值 } ``` 上述配置片段展示了如何设置一项名为chk_http_port的任务去周期地检验webserver的状态。如果有错误发生的话(即check_http.sh返回非零),那么当前实例的有效分数就会相应下降(-20);反之亦然。 对于`/usr/local/bin/check_http.sh`这样的shell脚本内容可以像这样编写: ```bash #!/bin/bash curl --silent --connect-timeout 2 http://localhost | grep "OK" > /dev/null if [ $? -ne 0 ];then exit 1 fi exit 0 ``` 以上代码块表示通过curl命令访问本地主机上的http服务,并查找包含字符串“OK”的页面元素存在与否来进行基本的功能测试。如果没有找到期望的内容就退出程序并且报告失败情况(`exit 1`),否则成功结束(`exit 0`)。 --- ### 4. 故障转移与恢复逻辑 一旦某个被监视的服务出现了问题,Keepalived便会按照预设算法重新分配角色——通常是从活动节点迁移到被动待命的那个伙伴身上继续承担起对外提供的服务职责。而一旦原来的主控方恢复正常运作以后,也能够自动加入集群当中再次成为首要责任人或者是辅助支援者之一,具体取决于你的部署偏好设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值