date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Nov 10, 2025 10:02 PM
是否已更新
orginal_page
是否推荐
- 参考资料
- 需要有至少两台物理服务器才能实现高可用
网络配置
- 假设两台路由器内网 lan 口地址分别为
192.168.1.1和192.168.1.2,在虚拟地址192.168.1.3上提供负载均衡
- 如果为 NAT 网络,外网 wan 口地址则分别为
192.168.0.2/24和192.168.0.3/24
(可选)Alpine 系统网络优化
cat /proc/$(pgrep haproxy)/limits | grep "Max open files”
vim /etc/sysctl.d/loadbalancer.conf
sysctl -p /etc/sysctl.d/loadbalancer.conf
安装 haproxy, keepalived
apk update && apk add haproxy keepalived
apk add fail2ban- 可选,提供防御
配置 keepalived
mkdir -p /etc/keepalived
touch /etc/keepalived/keepalived.conf
全局定义 global_defs
vim /etc/keepalived/keepalived.confrouter_id当前 keepalived 实例路由标识,可以改成主机名- VRRP 协议优化
vrrp_skip_check_adv_addr跳过对 VRRP 通告报文源地址的检查vrrp_strict启用严格模式,强制遵循 VRRP 协议规范vrrp_garp_interval 0设置免费 ARP(Gratuitous ARP)报文发送间隔- 默认值为
0,表示仅在切换为主节点时发送一次 GARP 消息 vrrp_gna_interval 0设置 IPv6 邻居通告(Gratuitous NA)间隔- 默认值为
0,表示仅在切换为主节点时发送一次 GNA 消息 - 剩余主要涉及邮件通知和 SMTP 服务设置,可以忽略
旁路由(单臂路由)的配置样例
vim /etc/keepalived/keepalived.conf
- 网络组
haproxy-vip绑定eth0接口 virtual_router_id 51局域网内唯一虚拟路由ID,不同接口可以重复state <STATE>区分主备# MASTER on lb-1, BACKUP on lb-2priority <PRIORITY>定义优先级# 200 on lb-1, 100 on lb-2virtual_ipaddress对局域网设备展示的虚拟 IP 地址track_script使用检测脚本chk_haproxyauthentication认证方式,可选 PASS 或 AH- PASS 安全性较弱,无法防止中间人攻击
- 超过8字符会截断
- IPsec 的 Authentication Header (AH) 协议对整个 VRRP 报文(包括负载内容)进行完整性校验和身份验证
- 不加密数据,但生成哈希值防止篡改
- 需要设备支持含 AH 头的 VRRP 报文
- 检测脚本
chk_haproxy,用以实现某个检测功能 interval 2,timeout 1每间隔 2 秒检测 haproxy 进程,超时 1 s 算失败rise 1连续成功 1 次视为健康fall 2连续成功 2 次视为不健康- 失败时根据
weight -20调整优先级数值使其掉至备份
对称双网关(内部网关 + 外部路由)的配置样例
vim /etc/keepalived/keepalived.conf
- VRRP 同步组
G1确保内部网络组I1和外部网络组E1同步切换
- 内部网络组
I1绑定br-lan接口 virtual_router_id 51局域网内唯一虚拟路由ID,不同接口可以重复state backup,priority 101初始状态均为备份- 对称,priority 更高的成为 master
advert_int 1VRRP 通告间隔为 1snopreempt禁止抢占,即使优先级更高也不抢回 Master 状态virtual_ipaddress对内部设备展示的虚拟 IP 地址authentication认证方式,可选 PASS 或 AH- PASS 安全性较弱,无法防止中间人攻击
- 超过8字符会截断
- IPsec 的 Authentication Header (AH) 协议对整个 VRRP 报文(包括负载内容)进行完整性校验和身份验证
- 不加密数据,但生成哈希值防止篡改
- 需要设备支持含 AH 头的 VRRP 报文
- 外部网络组
E1绑定eth0.2接口 virtual_routes定义虚拟路由- 通知该路由成为 master 时,流量通过
eth0.2的网关192.168.0.1转发 - 其余与内部网络组
I1类似
配置 haproxy
- 默认已创建 haproxy 用户组和用户
cat /etc/passwd | grep haproxycat /etc/group | grep haproxy
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
vim /etc/haproxy/haproxy.cfg
- 全局配置及默认配置
- nbthread 根据设备核心数进行调整
haproxy 添加对应前后端
- 参数解释
mode tcp支持传输层(第4层)流量透传- SSL 由对应服务器自行处理
balance first按服务器在配置文件中定义的顺序选择第一个可用的服务器- 其他常用负载均衡算法
roundrobin:轮询分发,适合无状态服务leastconn:选择连接数最少的服务器,适合长连接场景source:基于客户端 IP 哈希,适合需要会话保持的场景inter 10s:每 10 秒执行一次健康检查downinter 5s:当服务器标记为 DOWN 后,每 5 秒重试检查option tcp-check,server op-1 192.168.1.1:443 check- 对
op-1服务器执行健康检查,方式为tcp-check
(可选)添加监控页面查看统计数据
- 自行修改密码
haproxy -c -f /etc/haproxy/haproxy.cfg- 检查配置语法
启动 keepalived 和 haproxy
rc-update add keepalived default
rc-update add haproxy default
rc-status default
rc-service haproxy start
rc-service keepalived start
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/alpine_ha_net
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
