如何通过CentOS Overlay实现高可用性配置,保障系统稳定运行?
- 内容介绍
- 文章标签
- 相关推荐
网络中断往往导致业务停摆,运维成本飙升甚至引发客户投诉。要解决这些痛点,必须在CentOS上建立一套Overlay网络 + 高可用集群方案。让每一次故障都能被快速检测、自动切换、及时告警,从而保障程序稳定运行。
1. 准备工作:确保程序环境健康
在开始之前先确认两点:
- 内核版本 & 内核模块
- 文件程序完整性
执行这方面,
# 检查并修复文件程序
sudo fsck -Af -V
# 查看内核版本
uname -r
2. 安装必要的软件包
a. OpenVSwitch
OVS是实现Overlay桥接的主要组件。
# 安装OVS
sudo yum install -y openvswitch
# 启动并开机自启
sudo systemctl enable --now openvswitch
b. Pacemaker & Corosync
# 安装 Pacemaker 与 Corosync
sudo yum install -y pacemaker corosync
# 开启服务
sudo systemctl enable --now corosync
sudo systemctl start pacemaker
c. Keepalived
# 安装 Keepalived
sudo yum install -y keepalived
# 开启服务
sudo systemctl enable --now keepalived
3. 配置 Overlay 网络
Overlay 网络让容器与宿主机之间实现虚拟化互联,避免直接暴露物理链路。
a. 创建 OVS 桥接与 VXLAN 隧道
# 创建物理桥 ovsbr0 并绑定 eth0 接口
ovs-vsctl add-br ovsbr0 -- set Bridge ovsbr0 or-config:hwaddr=00:11:22:33:44:55
ovs-vsctl add-port ovsbr0 eth0
ovs-vsctl add-br vxlanbr0
ovs-vsctl add-port vxlanbr0 vxlan0 \
-- set Interface vxlan0 type=vxlan options:key=42 options:remote_ip=10.1.1.2 options:nocsum=yes
**说明**
- `key` 是 VXLAN 隧道 ID。- `remote_ip` 指定对端节点 IP。
b. 配置 Overlay 文件程序
如果你需要将容器镜像层与宿主机共享,可使用 overlayfs:
# 安装 overlayfs 工具
sudo yum install -y fuse-overlayfs
mkdir -p /mnt/overlay/{upper,work,lower。merged}
mount -t overlay overlay \
-o lowerdir=/path/to/lower,upperdir=/path/to/upper,workdir=/path/to/work \
/mnt/overlay/merged
4. Pacemaker 集群资源配置示例
“多台服务器手工配资源太麻烦”,下面给出一套自动化脚本示例,使用 crmsh 管理资源。
# 添加 OVS 桥接资源
crm configure primitive ovsbr0 ocf::heartbeat:openvswitch \
params bridge_name=ovsbr0 interface=eth0 op monitor interval=30s timeout=120s
crm configure primitive vxlanbr0 ocf::heartbeat:openvswitch \
params bridge_name=vxlanbr0 interface=vxlan0 op monitor interval=30s timeout=120s
crm configure colocation lvs_with_ovsinfrastructure inf:
ovsbr0 vxlanbr0
crm configure order lvs_after_ovsinfrastructure inf:
ovsbr0 n vxlanbr0
5. Keepalived 虚拟 IP 配置示例
“单点故障导致 VIP 不可用”,Keepalived 提供 VRRP 实现 VIP 自动漂移。
router_id LVS_DEVEL
vrrp_instance VI_1 {
state MASTER # 初始状态为 MASTER 或 BACKUP 可自行调整
interface eth1 # 与 OVS 桥相连的物理接口或 VLAN 接口名
virtual_router_id 51 # VRRP Router ID 必须唯一且同一网段内保持一致
priority 101 # 主节点优先级高于 Backup 节点
advert_int 1 # 广播间隔秒数
auntication {
auth_type PASS # 简单密码验证
auth_pass secret123 # 与 Backup 节点保持一致
}
virtual_ipaddress {
192.168.100.100 # 要漂移的 VIP 地址
label vip01 # 可选标识符。用于区分多个 VIP
dev eth1 # 指定 VIP 所属接口
mask 255.255.255.255 # 子网掩码,一般为 /32
advskew 5 # 若需要优先级更细粒度,可使用 advskew 调整漂移顺序
advert_delay 5 # 延迟时间防止闪烁
}
}
6. 日志与监控建议
-
Kube-state-metrics + Promeus + Grafana:`promeus.yml` 中加入 `node_exporter`,`cAdvisor`,`keepalived-exporter` 等指标采集器。
-
CAdvisor:`docker run -d --name=cadvisor ...` 用来收集 Docker 容器性能指标。
-
EBS/GFS 报警:`systemd-analyze plot | grep 'failed'` 检测失败单位。
-
/var/log/messages、/var/log/kern.log:`journalctl -u keepalived`,`journalctl -u pacemaker` 查看实时日志。话说回来,
-
Alerter:`alertmanager` 配合 Slack / Teams 通知。不过,
-
SLA 检测脚本:`curl http://192.168.100.100/vip-status?
老实说,format=json"` 定时查询 VIP 是否正常响应。
7. 故障演练 & 恢复计划
-
"我从未尝试过灾难恢复": 在测试环境里模拟节点离线、网络中断、VIP 漂移等场景,并记录恢复时间。
-
"我担心数据丢失": 定期备份 `/etc/openvswitch`。`/etc/pacemaker`,`/etc/keepalived` 等配置文件;使用 rsnapshot 或 restic 做增量备份。
-
"我不确定谁负责何时切换": 建立明确的 SOP 文档,并给运维团队做演练培训;其实,每次演练后更新 SOP 并做复盘。
-
"我害怕操作错误导致业务停顿": 所有修改都写入 Ansible Playbook 或 Terraform 模块。通过 CI/CD 自动化部署,并开启 rollback 回滚机制。
恢复步骤简述
-
检查 A 的状态:
{% raw %}

-
- `
` 确认 A 正在跑 Master 模式;其实,
-
- `
` 确认 VIP 已绑定;不过,
-
- `
` 验证 OVS 桥接正常;
注:若 A 离线,则执行接下来;
{% endraw %}
bash
ssh root@nodeB <'EOF'
systemctl stop keepalived # 停止 Keepalived,以防冲突
systemctl restart pacemaker # 确保资源调度器重新评估
systemctl start keepalived # 启动 Keepalived 后会自动切换到 MASTER
EOF
curl http://192.168.100.100/status?format=json"
只要按上述流程配置并持续监控。你可以把原本繁琐、易错的手工维护变成自动化、高可靠性的运维程序,让 CentOS Overlay 网络真正成为业务稳健运行的底座。
网络中断往往导致业务停摆,运维成本飙升甚至引发客户投诉。要解决这些痛点,必须在CentOS上建立一套Overlay网络 + 高可用集群方案。让每一次故障都能被快速检测、自动切换、及时告警,从而保障程序稳定运行。
1. 准备工作:确保程序环境健康
在开始之前先确认两点:
- 内核版本 & 内核模块
- 文件程序完整性
执行这方面,
# 检查并修复文件程序
sudo fsck -Af -V
# 查看内核版本
uname -r
2. 安装必要的软件包
a. OpenVSwitch
OVS是实现Overlay桥接的主要组件。
# 安装OVS
sudo yum install -y openvswitch
# 启动并开机自启
sudo systemctl enable --now openvswitch
b. Pacemaker & Corosync
# 安装 Pacemaker 与 Corosync
sudo yum install -y pacemaker corosync
# 开启服务
sudo systemctl enable --now corosync
sudo systemctl start pacemaker
c. Keepalived
# 安装 Keepalived
sudo yum install -y keepalived
# 开启服务
sudo systemctl enable --now keepalived
3. 配置 Overlay 网络
Overlay 网络让容器与宿主机之间实现虚拟化互联,避免直接暴露物理链路。
a. 创建 OVS 桥接与 VXLAN 隧道
# 创建物理桥 ovsbr0 并绑定 eth0 接口
ovs-vsctl add-br ovsbr0 -- set Bridge ovsbr0 or-config:hwaddr=00:11:22:33:44:55
ovs-vsctl add-port ovsbr0 eth0
ovs-vsctl add-br vxlanbr0
ovs-vsctl add-port vxlanbr0 vxlan0 \
-- set Interface vxlan0 type=vxlan options:key=42 options:remote_ip=10.1.1.2 options:nocsum=yes
**说明**
- `key` 是 VXLAN 隧道 ID。- `remote_ip` 指定对端节点 IP。
b. 配置 Overlay 文件程序
如果你需要将容器镜像层与宿主机共享,可使用 overlayfs:
# 安装 overlayfs 工具
sudo yum install -y fuse-overlayfs
mkdir -p /mnt/overlay/{upper,work,lower。merged}
mount -t overlay overlay \
-o lowerdir=/path/to/lower,upperdir=/path/to/upper,workdir=/path/to/work \
/mnt/overlay/merged
4. Pacemaker 集群资源配置示例
“多台服务器手工配资源太麻烦”,下面给出一套自动化脚本示例,使用 crmsh 管理资源。
# 添加 OVS 桥接资源
crm configure primitive ovsbr0 ocf::heartbeat:openvswitch \
params bridge_name=ovsbr0 interface=eth0 op monitor interval=30s timeout=120s
crm configure primitive vxlanbr0 ocf::heartbeat:openvswitch \
params bridge_name=vxlanbr0 interface=vxlan0 op monitor interval=30s timeout=120s
crm configure colocation lvs_with_ovsinfrastructure inf:
ovsbr0 vxlanbr0
crm configure order lvs_after_ovsinfrastructure inf:
ovsbr0 n vxlanbr0
5. Keepalived 虚拟 IP 配置示例
“单点故障导致 VIP 不可用”,Keepalived 提供 VRRP 实现 VIP 自动漂移。
router_id LVS_DEVEL
vrrp_instance VI_1 {
state MASTER # 初始状态为 MASTER 或 BACKUP 可自行调整
interface eth1 # 与 OVS 桥相连的物理接口或 VLAN 接口名
virtual_router_id 51 # VRRP Router ID 必须唯一且同一网段内保持一致
priority 101 # 主节点优先级高于 Backup 节点
advert_int 1 # 广播间隔秒数
auntication {
auth_type PASS # 简单密码验证
auth_pass secret123 # 与 Backup 节点保持一致
}
virtual_ipaddress {
192.168.100.100 # 要漂移的 VIP 地址
label vip01 # 可选标识符。用于区分多个 VIP
dev eth1 # 指定 VIP 所属接口
mask 255.255.255.255 # 子网掩码,一般为 /32
advskew 5 # 若需要优先级更细粒度,可使用 advskew 调整漂移顺序
advert_delay 5 # 延迟时间防止闪烁
}
}
6. 日志与监控建议
-
Kube-state-metrics + Promeus + Grafana:`promeus.yml` 中加入 `node_exporter`,`cAdvisor`,`keepalived-exporter` 等指标采集器。
-
CAdvisor:`docker run -d --name=cadvisor ...` 用来收集 Docker 容器性能指标。
-
EBS/GFS 报警:`systemd-analyze plot | grep 'failed'` 检测失败单位。
-
/var/log/messages、/var/log/kern.log:`journalctl -u keepalived`,`journalctl -u pacemaker` 查看实时日志。话说回来,
-
Alerter:`alertmanager` 配合 Slack / Teams 通知。不过,
-
SLA 检测脚本:`curl http://192.168.100.100/vip-status?
老实说,format=json"` 定时查询 VIP 是否正常响应。
7. 故障演练 & 恢复计划
-
"我从未尝试过灾难恢复": 在测试环境里模拟节点离线、网络中断、VIP 漂移等场景,并记录恢复时间。
-
"我担心数据丢失": 定期备份 `/etc/openvswitch`。`/etc/pacemaker`,`/etc/keepalived` 等配置文件;使用 rsnapshot 或 restic 做增量备份。
-
"我不确定谁负责何时切换": 建立明确的 SOP 文档,并给运维团队做演练培训;其实,每次演练后更新 SOP 并做复盘。
-
"我害怕操作错误导致业务停顿": 所有修改都写入 Ansible Playbook 或 Terraform 模块。通过 CI/CD 自动化部署,并开启 rollback 回滚机制。
恢复步骤简述
-
检查 A 的状态:
{% raw %}

-
- `
` 确认 A 正在跑 Master 模式;其实,
-
- `
` 确认 VIP 已绑定;不过,
-
- `
` 验证 OVS 桥接正常;
注:若 A 离线,则执行接下来;
{% endraw %}
bash
ssh root@nodeB <'EOF'
systemctl stop keepalived # 停止 Keepalived,以防冲突
systemctl restart pacemaker # 确保资源调度器重新评估
systemctl start keepalived # 启动 Keepalived 后会自动切换到 MASTER
EOF
curl http://192.168.100.100/status?format=json"
只要按上述流程配置并持续监控。你可以把原本繁琐、易错的手工维护变成自动化、高可靠性的运维程序,让 CentOS Overlay 网络真正成为业务稳健运行的底座。

