1.
准备与前提
部署前的准备工作与检查:
- 确认在新加坡(或 ap-southeast-1、asia-southeast1 等)已申请好云主机、浮动IP或LB以及域名解析权限;
- 服务器建议最少3台(2台应用 + 1台负载均衡/反向代理或采用云LB两节点),系统常用 CentOS/Ubuntu;
2.
网络与DNS设计
实际操作要点:
- 为站群规划子域/域名(例如 site1.example.sg ...),为每组站点设立相同的健康检查路径(/healthz);
- DNS 使用短 TTL(60-300s)以便切换,若高可用建议使用 GeoDNS 或云厂商的全球负载均衡。
3.
内容与配置同步
同步方案与命令:
- 静态文件:使用 rsync+ssh 定时同步,示例 crontab:*/5 * * * * rsync -az --delete /var/www/site/ user@10.0.0.2:/var/www/site/;
- 配置/代码:使用 Git + CI(在推送后通过脚本部署),或使用 Ansible 对多机并行下发配置。
4.
选择负载均衡器与部署
常见选择与配置示例:
- Nginx 反向代理(适合HTTP/HTTPS),示例 upstream 与 location 配置;
- HAProxy 用于更细粒度的 L4/L7 策略,示例 frontend/backend 配置;
- 如使用 Keepalived 实现 VIP 高可用:示例 keepalived.conf 配置启用 VRRP。
5.
Nginx 示例配置
直接可用的配置片段:
- /etc/nginx/conf.d/loadbalancer.conf:
upstream backend { server 10.0.0.11:80; server 10.0.0.12:80; }
server { listen 80; server_name example.sg; location / { proxy_pass http://backend; proxy_set_header Host $host; } }
6.
HAProxy & Keepalived 示例
生产级建议与示例:
- haproxy.cfg 中设置 health check:server app1 10.0.0.11:80 check inter 2000 fall 3 rise 2;
- keepalived.conf 设定 VRRP,让两台 HAProxy 共享 VIP,保证单点故障切换。
7.
SSL 与证书管理
自动化与命令示例:
- 使用 certbot 获取证书:certbot certonly --nginx -d example.sg -d *.example.sg;
- 将证书部署到 Nginx/HAProxy 并设置自动续期(/etc/cron.d/certbot)。
8.
监控、日志与健康检查
确保可观测性与自动化恢复:
- 配置健康检查端点(/healthz 返回200、简单校验数据库连通性),LB 对该路径进行探测;
- 部署 Prometheus + Grafana 或云监控,收集CPU、响应时间、后端不可用率与LB状态。
9.
演练故障切换与发布流程
验证高可用与回滚步骤:
- 人为关闭后端节点,观察 LB 是否剔除并自动恢复流量;
- 发布新版本先上灰度节点,确认无误后再同步到其它节点,并保留回滚脚本。
10.
问:在新加坡站群部署,如何保证低延迟与稳定性?
答:使用新加坡本地机房或靠近 SEA 的区域,开启 CDN 前置静态资源、配置短 TTL 的 DNS、部署多 AZ 并使用健康检查与自动剔除故障节点,结合监控告警与自动伸缩策略。
11.
问:站群内容同步频繁,如何避免数据冲突?
答:静态文件用 rsync 单向同步并加锁,动态内容使用集中式存储(例如 RDS/managed DB)或使用分布式文件系统/对象存储,并通过应用层实现乐观锁或消息队列异步同步。
12.
问:若使用云厂商负载均衡,应注意哪些配置?
答:启用跨可用区健康检查、配置会话保持或无状态处理方案、合理设定超时与重试策略、并确保后端安全组与健康检查端口一致,同时配置日志与监控以便追踪请求链路。
来源:站群整合与负载均衡在新加坡站群部署中的部署流程详解