上一篇 下一篇 分享链接 返回 返回顶部

1Panel多可用区主备搭建与自动故障切换实践

发布人: 发布时间:4 天前 阅读量:33

背景与需求

在IDC服务器运维中,单可用区部署存在物理机故障、网络中断等单点风险。利用1Panel开源面板,可在不同可用区的服务器上搭建主备架构,并通过健康检查与DNS切换实现故障自动转移,提升业务连续性。本文介绍一种基于1Panel + Keepalived + 云DNS API的通用实现思路,不依赖特定云厂商。

整体架构

  • 主节点(可用区A):运行业务服务,1Panel管理容器或应用,Keepalived负责VIP漂移。
  • 备节点(可用区B):与主节点数据同步(如数据库主从),Keepalived处于待命状态。
  • 健康检查:通过脚本检测主节点服务端口、进程或HTTP状态。
  • 自动切换:当主节点故障时,备节点接管VIP,并调用云DNS API将域名解析切换到备节点公网IP。

配置步骤

1. 准备服务器与1Panel环境

  1. 在两个可用区各准备一台Linux服务器,分别安装1Panel。
  2. 在1Panel中创建相同的应用编排(如Nginx + PHP/Java应用),并同步配置文件与代码。
  3. 确保数据库或缓存层配置为主从同步,并记录各节点内网IP与公网IP。

2. 安装并配置Keepalived

在两台服务器上安装keepalived,主节点配置优先级较高(如100),备节点优先级较低(如50)。使用脚本监控业务端口(例如80/443),一旦不可用则降低优先级或终止keepalived进程,触发VIP切换。

# 主节点示例(节选)
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    unicast_src_ip 主节点内网IP
    unicast_peer {
        备节点内网IP
    }
    virtual_ipaddress {
        内网VIP/24
    }
    track_script {
        chk_http
    }
}

备节点配置中state设为BACKUP,priority设为50,其余保持一致。注意:若跨可用区组播不通,务必使用单播(unicast_peer)。

3. 实现DNS自动切换

备节点接管VIP后,需要将对外访问的域名解析到新公网IP。可使用云厂商提供的DNS API,或自建DNS服务。推荐在1Panel中编写定时任务或使用脚本实现:

  • 当Keepalived状态切换为MASTER后,触发脚本调用云DNS API,将A记录值修改为当前服务器公网IP。
  • 将API调用逻辑写入/etc/keepalived/master.sh和backup.sh,并在配置中引用notify_masternotify_backup

4. 数据同步与回切策略

若业务使用MySQL,可在1Panel中配置容器间的主从复制。故障切换后,原主节点恢复时建议先作为新主节点的从库,手动校验数据一致后再调整角色回切,避免脑裂或数据冲突。

验证与注意事项

  1. 模拟主节点宕机(强制断电或停止服务),观察备节点是否在约2~5秒内接管VIP,并验证域名解析是否更新。
  2. 建议设置最小TTL(如60秒)以加快DNS生效,但需权衡解析压力。
  3. Keepalived本身存在脑裂风险,可增加仲裁脚本或使用两台以上节点配合检测。
  4. 跨可用区网络延迟与带宽需纳入监控,避免数据同步滞后导致切换后数据丢失。
  5. 所有脚本与密钥需妥善保管,建议存于1Panel的“计划任务”或加密环境变量中。

总结

通过1Panel统一管理应用程序,结合Keepalived的VIP漂移与DNS API实现公网入口切换,可以低成本构建跨可用区主备架构。该方案不依赖特定云厂商的LB产品,适合已使用1Panel的用户快速落地。生产环境仍需结合自身业务进行容灾演练,并定期备份数据。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com