keepalived

本文介绍了Keepalived,它是保证集群高可用、防止单点故障的服务软件。阐述其以VRRP协议为基础的工作原理,包含core、check和VRRP三个模块。还说明了安装步骤及启动报错处理,最后讲解了主备nginx的配置及nginx进程检测脚本。

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

keepalived

1.什么是keepalived

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

2.keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

3.keepalived的安装

下载地址:https://www.keepalived.org/download.html

安装支持包环境:

yum -y install kernel-devel*

yum -y install openssl-*

yum -y install popt-devel

yum -y install lrzsz

yum -y install openssh-clients

yum -y install libnl libnl-devel popt

安装keepalived:

将keepalived-1.2.15.tar.gz上传到服务器/usr/local/下。
cd /usr/local
tar -zxvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
mv keepalived-1.2.15 keepalived
执行配置命令 和你解压的文件一个路径
./configure --prefix=/application/keepalived

3、编译
make
4、安装
make install
至此安装成功

5、拷贝执行文件
==这个是1.2.15版本的执行==
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
==2.0以上的版本==
cp /usr/local/keepalived/bin/keepalived /usr/sbin
6、将init.d文件拷贝到etc下,加入开机启动项
==这个是1.2.15版本的执行==
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
==2.0以上的版本==
cp /usr/local/keepalived/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
7、将keepalived文件拷贝到etc下,加入网卡配置
==这个是1.2.15版本的执行==
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 
==2.0以上的版本==
cp /usr/local/keepalived/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 
8、创建keepalived文件夹
mkdir -p /etc/keepalived
9、将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
10、添加可执行权限
chmod +x /etc/init.d/keepalived

添加开机项

 chkconfig --add keepalived
 chkconfig keepalived on
 chkconfig --list keepalived

启动keepalived

启动:service keepalived start
停止:service keepalived stop
重启:service keepalived restart

启动报错:

Job for keepalived.service failed because a configured resource limit was exceeded. See "systemctl status keepalived.ser。

查看日志:

systemctl status keepalived.service

1560863714205

好吧,不知道为什么有一个keepalived已经在运行,stop之后就可以了。

4.keepalived配置

主nginx:

修改主nginx下/etc/keepalived/keepalived.conf文件

! Configuration File for keepalived

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from XXX@XXX.com  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 { 
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}

备nginx:

! Configuration File for keepalived

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
    XXX@XXX.com
   }
   notification_email_from XXX@XXX.com  				#指定发件人
   #smtp_server XXX.smtp.com                             	#指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 { 
    state BACKUP           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 99            #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}

nginx进程检测脚本

#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l`      ## 查看是否有 nginx进程 把值赋给变量A 
if [ $A -eq 0 ];then                    ## 如果没有进程值得为 零
       service keepalived stop          ## 则结束 keepalived 进程
fi

ps:脚本名称不要和进程名相同
在执行调试脚本命令时,出现几个+号就表示有几个shell空间执行了命令操作,输出的数值信息会累加将check_nginx.sh拷贝至/etc/keepalived下

keepalived修改配置:

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from miaoruntu@itcast.cn  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"         ##监控脚本
    interval 2                                      ##时间间隔,2秒
    weight 2                                        ##权重
}
vrrp_instance VI_1 {
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
   track_script {
        check_nginx        #监控脚本
   }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }

}

当ng停止运行,keepalived也停止运行。

<think>嗯,用户让我介绍一下Keepalived。我需要先回忆一下相关知识,确保信息准确。首先,Keepalived是一个用于实现高可用性和负载均衡的开源软件对吧?它基于VRRP协议,主要用在Linux环境下。 用户可能是系统管理员或者开发人员,想要了解如何提高他们服务器的高可用性。他们可能想知道Keepalived的基本功能、工作原理以及实际应用场景。需要分步骤解释,结构清晰。 首先,应该介绍Keepalived的核心功能,比如高可用性和负载均衡。然后解释VRRP协议,这是Keepalived的基础。接着,说明它的工作原理,比如主备切换机制和健康检查。这部分需要详细一点,因为用户可能关心故障转移的过程。 然后,应用场景方面,可以举Web服务器、数据库和负载均衡器的例子。这些是常见的用途,用户可能更容易理解。还要提到它的优势,比如轻量级、配置简单、稳定性高,以及与LVS的结合使用,这对负载均衡很重要。 使用方式部分,可能需要提到安装步骤和配置文件的结构,比如global_defs、vrrp_instance和virtual_server这些块。但不需要太深入,保持概述级别即可。 注意事项方面,确保用户知道需要避免脑裂问题,配置正确的健康检查,网络环境的稳定性,以及防火墙设置。这些都是实际部署中容易遇到的问题,用户可能会遇到。 最后,总结一下Keepalived的适用场景和好处,让用户有个整体的认识。要确保语言简洁,避免技术术语过多,但也要准确。检查是否有遗漏的关键点,比如是否提到了TCP_CHECK和HTTP_GET这些健康检查方式?还有VRRP的虚拟路由器ID和虚拟IP地址,这些在配置中是必须的。 需要确认所有技术术语都有解释,比如VRRP的全称,以及脑裂问题的定义。可能用户不太清楚这些术语,所以需要用简单的中文说明。同时,保持段落不要太长,用分点的方式让结构更清晰。 另外,用户提到要使用中文回答,并且数学公式用$...$,不过这个问题可能不需要数学公式,但还是要留意是否有地方可能需要用到。比如在负载均衡算法中如果有数学表达式,但Keepalived通常不涉及复杂的数学,所以可能不需要。 检查LaTeX格式是否符合要求,但当前内容里没有数学公式,所以没问题。最后确保回答真实可靠,引用正确的信息和常见用法,避免错误。比如Keepalived确实常与LVS结合使用,健康检查的方式也是正确的。 总结一下,回答的结构应该是:概述、核心功能、工作原理、应用场景、优势、使用方式、注意事项和总结。每个部分用分点或子标题,帮助用户逐步理解。确保语言流畅,信息准确,没有技术错误。</think>### Keepalived 介绍 #### 1. **概述** **Keepalived** 是一款基于 **VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)** 的开源工具,主要用于实现 **服务高可用性(HA)** 和 **负载均衡**。它通过虚拟IP(VIP)和健康检查机制,确保服务在服务器故障时无缝切换,提升系统可靠性。 --- #### 2. **核心功能** - **高可用性(HA)** 通过 **主备(Master-Backup)模式** 实现故障转移。当主节点不可用时,备用节点自动接管虚拟IP,确保服务持续运行。 - **负载均衡** 可与 **LVS(Linux Virtual Server)** 集成,提供基于 Layer 4(传输层)的负载均衡,支持轮询、加权等算法。 --- #### 3. **工作原理** - **VRRP 协议** 多台服务器组成一个虚拟路由器组,共享一个虚拟IP。主节点周期性发送心跳包,若备用节点未收到心跳,则触发选举新主节点。 - **健康检查** Keepalived 通过自定义脚本或内置检查(如 TCP/HTTP 检测)监控服务状态。若服务异常,自动触发故障转移。 --- #### 4. **典型应用场景** - **Web 服务器集群** 通过 VIP 实现 Web 服务的高可用,避免单点故障。 - **数据库主从切换** 主数据库故障时,VIP 漂移到从库,保证数据库可访问。 - **负载均衡器容灾** 多台 LVS 负载均衡器通过 Keepalived 实现冗余。 --- #### 5. **优势** - **轻量级**:资源占用低,适合嵌入式系统。 - **配置简单**:通过配置文件定义虚拟路由器和健康检查规则。 - **稳定性高**:广泛用于生产环境,社区支持成熟。 --- #### 6. **基本使用方式** 1. **安装** ```bash # Ubuntu/Debian sudo apt install keepalived # CentOS/RHEL sudo yum install keepalived ``` 2. **配置文件(`keepalived.conf`)** ```conf global_defs { router_id LVS_MASTER # 节点唯一标识 } vrrp_instance VI_1 { state MASTER # 主节点为MASTER,备节点为BACKUP interface eth0 # 绑定网卡 virtual_router_id 51 # 虚拟路由ID(同一组需相同) priority 100 # 优先级(主节点高于备节点) advert_int 1 # 心跳间隔(秒) virtual_ipaddress { 192.168.1.100 # 虚拟IP } } ``` --- #### 7. **注意事项** - **脑裂问题**:需确保网络稳定,避免主备节点因网络隔离同时接管VIP。 - **健康检查配置**:需根据服务特性定义检查脚本或协议(如 `TCP_CHECK`、`HTTP_GET`)。 - **网络环境**:确保组播或单播通信正常(依赖 VRRP 协议传输心跳)。 --- #### 8. **总结** Keepalived 是构建高可用集群的核心工具之一,适用于需 **故障自动切换** 或 **负载均衡** 的场景。通过合理配置 VIP 和健康检查,可显著提升服务的可靠性和连续性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值