-
安装Keepalived
1.1下载安装准包
本章节讲述的安装步骤适用于在Red Hat Enterprise Linux, CentOS, Fedora平台。
下载地址如下:
https://www.keepalived.org/download.html
本次安装就以:keepalived-2.2.7.tar.gz为例。
1.2安装依赖及解压
安装依赖 # yum install -y gcc openssl-devel libnl3-devel 解压 #tar -zxvf keepalived-2.2.7.tar.gz #cd keepalived-2.2.7 |
1.3编译安装
#mkdir -p /app/keepalived #cd keepalived-2.2.7 # ./configure --prefix=/app/keepalived --disable-fwmark #make && make install |
注意:
默认情况下,Keepalived 将安装在 /usr/local 目录下。
1.4配置服务启动脚本
根据系统的初始化系统(如 Systemd 或 SysVinit),需要手动配置 Keepalived 的启动脚本。
Systemd:创建服务文件 /etc/systemd/system/keepalived.service,内容如下:
[Unit] Description=Keepalived service After=network.target [Service] ExecStart=/usr/local/sbin/keepalived ExecReload=/bin/kill -HUP $MAINPID KillSignal=TERM Restart=always RestartSec=1 StartLimitInterval=0 [Install] WantedBy=multi-user.target |
服务管理:
#systemctl daemon-reload 重新加载 #systemctl enable keepalived 设置开机自启动 #systemctl disable keepalived 取消开机自启动 #systemctl start keepalived 启动keepalived服务 #systemctl stop keepalived 关闭keepalived服务 |
SysVinit:将源码目录中的 keepalived.init 脚本复制到 /etc/init.d/,并设置执行权限:
#cp keepalived.init /etc/init.d/keepalived #chmod +x /etc/init.d/keepalived #chkconfig --add keepalived #service keepalived start |
2.配置Keepalived
2.1配置Keepalived主从模式部署
2.1.1目录规划
目录位置 | 备注 |
/app/keepalived | Keepalived安装目录 |
/app/keepalived/script | 脚本目录 |
2.1.2服务规划
目录位置 | 备注 |
192.168.100.20 | 主服务器 |
192.168.100.30 | 备服务器 |
192.168.100.25 | VIP |
2.1.3配置参数文件
- 配置主机:
Keepalived 的主配置文件位于 /etc/keepalived/keepalived.conf。以下是一个基本的配置示例:
#vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { route_id process-01 #每个keepalived节点的唯一标识,建议设置为当前主机名 } vrrp_script check_process { script "/app/keepalived/script/check_process.sh" #脚本绝对路径 interval 2 #脚本执行间隔 weight -10 #脚本执行错误优先级减10 } vrrp_instance VI_1 { #配置虚拟路由器 state MASTER #虚拟路由器的初始状态,MASTER或者BACKUP interface ens33 #绑定当前虚拟路由器所使用的物理接口 virtual_router_id 51 #虚拟路由器的唯一标识 priority 100 #当前物理节点在此虚拟路由器中的优先级 advert_int 1 #可设置VRRP通告的时间间隔 authentication { #设置认证机制 auth_type PASS # PASS为简单密码认证 auth_pass 1111 #共享秘钥设置 } track_script { check_process # 检测脚本 } virtual_ipaddress { #虚拟路由器的VIP 192.168.100.25 } } |
2.配置备机:
Keepalived 的主配置文件位于 /etc/keepalived/keepalived.conf。以下是一个基本的配置示例:
! Configuration File for keepalived global_defs { route_id process-02 } vrrp_script check_process { script "/app/keepalived/script/check_process.sh" interval 2 weight -10 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_process } virtual_ipaddress { 192.168.100.25 } } |
备注:
标红段根据实际情况修改
2.1.4编写检查脚本并启动服务
- 编写检查脚本
#vim /app/keepalived/script/check_process.sh #!/bin/bash count=$(ps -C process --no-heading | wc -l) if [ "$count" -eq 0 ];then systemctl stop keepalived fi |
2.check_process.sh文件赋权
#chmod u+x /etc/keepalived/script/check_process.sh |
3.启动keepalived服务
#systemctl start keepalived |
2.1.5测试Keepalived服务IP
- 主服务器显示配置服务IP
# ip addr |
2.停止主服务器
#systemctl stop process #ip addr |
VIP漂移至备服务器
2.2配置Keepalived双主模式部署
2.2.1目录规划
目录位置 | 备注 |
/app/keepalived | Keepalived安装目录 |
/app/keepalived/script | 脚本目录 |
2.2.2服务规划
目录位置 | 备注 |
192.168.100.20 | 主服务器 |
192.168.100.30 | 备服务器 |
192.168.100.25 | VIP |
192.168.100.26 | VIP |
2.2.3配置参数文件
- 配置主机:
Keepalived 的主配置文件位于 /etc/keepalived/keepalived.conf。以下是一个基本的配置示例:
#vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { route_id process-01 #每个keepalived节点的唯一标识,建议设置为当前主机名 } vrrp_script check_process { script "/app/keepalived/script/check_process.sh" #脚本绝对路径 interval 2 #脚本执行间隔 weight -10 #脚本执行错误优先级减10 } vrrp_instance VI_1 { #配置虚拟路由器 state MASTER #虚拟路由器的初始状态,MASTER或者BACKUP interface ens33 #绑定当前虚拟路由器所使用的物理接口 virtual_router_id 51 #虚拟路由器的唯一标识 priority 100 #当前物理节点在此虚拟路由器中的优先级 advert_int 1 #可设置VRRP通告的时间间隔 authentication { #设置认证机制 auth_type PASS # PASS为简单密码认证 auth_pass 1111 #共享秘钥设置 } track_script { check_process # 检测脚本 } virtual_ipaddress { #虚拟路由器的VIP 192.168.100.25 } } vrrp_instance VI_2 { #配置虚拟路由器 state BACKUP #虚拟路由器的初始状态,MASTER或者BACKUP interface ens33 #绑定当前虚拟路由器所使用的物理接口 virtual_router_id 52 #虚拟路由器的唯一标识 priority 90 #当前物理节点在此虚拟路由器中的优先级 advert_int 1 #可设置VRRP通告的时间间隔 authentication { #设置认证机制 auth_type PASS # PASS为简单密码认证 auth_pass 1111 #共享秘钥设置 } track_script { check_process # 检测脚本 } virtual_ipaddress { #虚拟路由器的VIP 192.168.100.26 } } |
2.配置备机:
Keepalived 的主配置文件位于 /etc/keepalived/keepalived.conf。以下是一个基本的配置示例:
! Configuration File for keepalived global_defs { route_id process-02 } vrrp_script check_process { script "/app/keepalived/script/check_process.sh" interval 2 weight -10 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_process } virtual_ipaddress { 192.168.100.25 } } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_process } virtual_ipaddress { 192.168.100.26 } } |
备注:
标红段根据实际情况修改;后面脚步编写与测试参考4.1章节中的内容。
3.Keepalived参数配置最佳实践
Keepalived 参数配置最佳实践指南,供您参考和调优。以下内容主要分为 VRRP 高可用、LVS 负载均衡和系统内核优化三大部分,每个部分都给出了一些建议参数和配置示例。
3.1VRRP 高可用配置最佳实践
3.1.1基础配置
全局定义,确保每个节点的 router_id 唯一,便于识别和邮件通知。Keepalived 的主配置文件位于:/etc/keepalived/keepalived.conf。
例如:
global_defs { router_id LVS_NODE1 } |
3.1.2VRRP 实例配置
1.广告间隔(advert_int)
建议值:1 秒。
说明:较短的间隔有助于快速发现故障,但会增加网络流量。
2.优先级(priority)
主节点可设为较高值(如 150),备节点设为较低值(如 100),确保主备角色明确。
3.抢占设置
使用 nopreempt 可避免主节点恢复时频繁抢占,保持切换稳定性。
示例配置:
vrrp_instance VI_1 { state MASTER # 主机状态(备机设置为 BACKUP) interface eth0 # 绑定的网卡 virtual_router_id 51 # VRRP 组 ID,所有节点必须一致 priority 150 # 主节点优先级(备节点可设为 100) advert_int 1 # 广告间隔,单位秒 nopreempt # 启用非抢占模式,防止主机恢复时频繁切换
authentication { auth_type PASS auth_pass 123456 # 主备认证密码必须一致 }
virtual_ipaddress { 192.168.1.100/24 # 配置 VIP }
track_interface { eth0 # 监控物理网卡,网卡故障时降低优先级 } } |
3.1.3Gratuitous ARP(GARP)设置
通过合理配置 GARP 参数,可以显著提高 Keepalived 在虚拟 IP 切换时的可靠性,确保网络流量的连续性和稳定性。以下是一个完整的 Keepalived 配置示例,展示了如何配置 GARP 参数:
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 advert_int 1 # GARP 配置 vrrp_garp_master_delay 10 vrrp_garp_master_repeat 3 vrrp_garp_lower_prio_repeat 2 vrrp_garp_master_refresh 60 vrrp_garp_master_refresh_repeat 2 vrrp_garp_interval 0.001 virtual_ipaddress { 192.168.200.1/24 } } |
参数说明:
- vrrp_garp_master_delay:延迟 10 秒后发送第二组 Gratuitous ARP。
- vrrp_garp_master_repeat:每次发送 3 组 Gratuitous ARP。
- vrrp_garp_lower_prio_repeat:当接收到低优先级广播时,发送 2 组 Gratuitous ARP。
- vrrp_garp_master_refresh:每隔 60 秒发送一次 Gratuitous ARP。
- vrrp_garp_master_refresh_repeat:每次发送 2 组 Gratuitous ARP。
- vrrp_garp_interval:每组 Gratuitous ARP 之间延迟 0.001 秒。
3.2LVS 负载均衡配置
在 Keepalived 中,LVS 负载均衡的配置主要位于 keepalived.conf 配置文件中。以下是具体的配置方法
virtual_server 192.168.1.100 80 { delay_loop 5 lb_algo rr lb_kind DR persistence_timeout 180 protocol TCP real_server 192.168.1.101 80 { weight 3 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 2 connect_port 80 } } real_server 192.168.1.102 80 { weight 2 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 2 connect_port 80 } } } |
参数说明:
负载均衡模式(lb_kind)
推荐使用 DR(直接路由)模式,性能较好,但要求后端服务器能处理 VIP。
3.3调度算法
- 调度算法(lb_algo)
可选择轮询(rr)、加权轮询(wrr)、最小连接(lc)等,根据业务负载调整。
2.会话保持
设置 persistence_timeout(如 180 秒),保证客户端的会话连续性
3.4系统内核及网络优化
3.4.1内核参数调整(sysctl 优化)
编辑 /etc/sysctl.conf,添加以下内容:
net.ipv4.ip_nonlocal_bind = 1 # 允许绑定非本地 IP,VIP绑定需要 net.ipv4.ip_forward = 1 # 启用 IP 转发,支持 LVS 模式 net.ipv4.tcp_tw_reuse = 1 # 允许 TIME-WAIT 套接字复用 net.core.somaxconn = 65535 # 提高并发连接上限 net.ipv4.tcp_keepalive_time = 600 # 调整 TCP 保活时间 |
使配置生效:
#sysctl -p |
3.4.2ARP 参数优化
防止 VIP 与本地接口冲突,配置 ARP 参数:
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce |