1. 采购与网络准备
选择提供
越南原生IP的云厂商;确认数据中心(河内/胡志明)与带宽。
购买建议:至少两台不同可用区的云服务器(A/B),每台配置独立原生公网IP。
操作要点:获取控制台API密钥、确认安全组/防火墙策略允许 80/443/TCP 以及健康检查端口(例如 9000)。
2. 系统初始化与安全加固
在每台服务器上安装基本组件(以Ubuntu为例):apt update && apt install -y curl nginx haproxy keepalived rsync mysql-client。
安全配置:设置SSH密钥登录、关闭root远程密码登录、配置ufw/iptables仅开放必要端口,设置Fail2Ban防爆破。
3. 绑定原生IP与路由确认
在云控制台确认公网IP已绑定到实例并能ping通。
在实例内验证路由:ip addr / ip route;确认默认网关由云厂商配置,无需手动做SNAT。若多网卡,设置ip rule以保证响应出站走公网IP。
4. 部署负载均衡器(HAProxy)
安装:apt install -y haproxy。
配置示例(/etc/haproxy/haproxy.cfg)要点:定义frontend监听80/443,backend列出两台后端服务器健康检查参数(option httpchk、server ip:port check)。
重载服务:systemctl enable --now haproxy && systemctl reload haproxy。
5. 使用Nginx作为反向代理的替代方案
安装:apt install -y nginx。
配置方式:在sites-enabled中定义upstream 节点,使用proxy_pass转发,并开启proxy_next_upstream与健康检查模块(需要nginx-plus或第三方模块)或用Lua脚本实现简单探测。
优点:静态加速与TLS卸载配置灵活。
6. Keepalived实现LVS/虚拟IP主动被动切换
安装:apt install -y keepalived。
配置(/etc/keepalived/keepalived.conf)示例:定义vrrp_instance,设置virtual_ipaddress为浮动VIP,priority主为高、备为低,并写track_script调用curl访问本地HAProxy健康接口。
启动并验证:systemctl enable --now keepalived;在主节点故障时,备节点应自动拿取VIP。
7. 健康检查与自动化脚本
编写健康检查脚本(例如 /usr/local/bin/check_app.sh),内容:curl -sS --fail http://127.0.0.1:9000/health || exit 1。
在Keepalived和HAProxy中引用此脚本,出现连续失败时自动从后端池移除实例并触发告警(配合邮件或钉钉Webhook)。
8. 数据库与文件层的容灾策略
数据库:采用主从或主主(MySQL/MariaDB)复制,推荐异地从库放在另一可用区;配置自动故障转移工具(MHA、Orchestrator)。
文件同步:使用rsync+cron或lsyncd实现实时/分钟级同步;关键目录加入一致性校验(md5sum)并定期触发快照。
9. 备份与恢复演练
备份策略:数据库做全量+增量(mysqldump或xtrabackup),文件使用快照与对象存储备份。
演练:每月一次恢复演练,记录RTO/RPO,验证DNS切换、VIP迁移及数据一致性。
10. DNS与故障切换设计
方案一:VIP+Keepalived在同一外网段内部做透明切换。
方案二:使用公网DNS权重/健康检查(如DNSPod/Cloudflare)实现主备CNAME切换,TTL设置为低(30-60s)以加快切换;结合自动化脚本在检测到主不可达时修改DNS记录。
11. 监控、告警与日志聚合
监控:部署Prometheus + node_exporter 或使用云监控,配置关键指标(CPU、连接数、后端请求失败率、DB复制延迟)。
告警:设定阈值并通过邮件/微信/钉钉告警;日志集中到ELK或Loki便于故障定位。
12. 运维流程与权限管理
制订运维Runbook:包括故障判断步骤、VIP强制迁移、DNS回滚、数据库主从切换命令。
权限:控制台API密钥、SSH密钥管理和审计,重要操作要求双人确认并记录变更日志。
13. 常见问题与优化建议
网络抖动:增加健康检查间隔和容错阈值,避免误判下线。
性能瓶颈:对静态资源使用CDN,调整HAProxy连接数与超时参数,水平扩容后端服务。
14. 问:为什么要在越南使用原生IP而不是代理IP?
答:原生IP与数据中心的路由直连可降低延迟、减少被封禁风险并保证反向DNS和证书申请稳定性,适合对延迟和合规有要求的业务。
15. 问:主备切换后如何保证会话不丢失?
答:通过会话黏性(sticky session)+共享会话存储(Redis/session数据库或把会话存到cookie)或使用无状态设计来避免丢失;对于必须持久化的状态,建议同步到中央存储。
16. 问:如何进行故障后快速恢复与演练频率?
答:建立自动化恢复脚本(VIP迁移、DNS切换、DB提权脚本),并每季度至少做一次全流程演练,记录RTO/RPO并优化流程与脚本。
来源:技术实操越南原生IP云服务器负载均衡与容灾方案解析