1.
背景与目标:面向台湾及周边用户,使用分布在台湾的多台云服务器或多公网IP,可以降低单点失效、分散流量并改善路径冗余;结合负载均衡可实现健康检查与自动流量分配。
适用场景:电商、媒体、API 服务、跨境业务以及需要高可用的区域部署。
2.
选择供应商:可选择 AWS(台北区域)、Google Cloud(台北近区)、阿里云台湾节点或本地云厂商。对比网络延迟、带宽、弹性公网IP(EIP)购买策略。
建议:至少准备 2–3 个不同可用区或不同供应商的实例,每台绑定独立公网 IP;若同一实例需要多IP,可申请额外EIP绑定到不同网卡。
3.
基本拓扑:前端使用负载均衡器(云托管 LB 或自建 LB),后端为多台台湾服务器(不同 IP)。DNS 层可采用多 A 记录或 GSLB(带健康检查)。
冗余原则:避免单供应商依赖,若预算允许跨供应商部署以提高 BGP 路径冗余。
4.
系统准备:在每台服务器上执行:apt/yum 更新、禁用不必要服务、配置时区(Asia/Taipei)、同步 NTP(ntp/chrony)。
安全与端口:仅开放必要端口(80/443、后端管理端口),使用 ufw/iptables 或云安全组限制来源 IP。
5.
应用部署:部署 web 服务(如 Nginx/Apache/Node),确保每台机器上都能通过 /health 或 /status 返回 200 简单 JSON,例如 {"status":"ok"}。
说明:健康检查接口应快速、低开销,并且能检测上游依赖(数据库连接、缓存)。
6.
云托管 LB:优点是便捷、有 SLA、自动扩缩,支持健康检查与证书管理;缺点是成本与可定制性有限。
自建 LB(HAProxy/Nginx/LVS):灵活、可自定义健康检查与路由策略,适合跨供应商或自定义策略场景。
7.
安装(Ubuntu 举例):sudo apt update && sudo apt install -y haproxy。备份原配置:sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak。
示例 haproxy.cfg(简化版,放到 /etc/haproxy/haproxy.cfg):
global log /dev/log local0 daemon defaults mode http timeout connect 5s timeout client 30s timeout server 30s frontend http-in bind *:80 bind *:443 ssl crt /etc/haproxy/certs/site.pem option forwardfor default_backend web-backend backend web-backend balance roundrobin option httpchk GET /health server web1 1.2.3.4:80 check server web2 5.6.7.8:80 check
重启并检查:sudo systemctl restart haproxy; sudo systemctl status haproxy。查看日志以确认健康检查结果。
8.
证书选择:建议使用 Let's Encrypt + certbot 自动续期,或使用云厂商托管证书到负载均衡器上。
HAProxy 中使用:将 fullchain 和 privkey 合并为 PEM:sudo cat fullchain.pem privkey.pem > /etc/haproxy/certs/site.pem,并设置文件权限。
9.
多 A 记录:简单,将域名指向多个台湾 IP(负载均衡器 IP 或各服务器 IP)。缺点:无法感知健康状态,DNS 缓存导致切换慢。
GSLB/带健康检查的 DNS:推荐使用带健康探测的 DNS 服务(如 DNSPod、Cloudflare Load Balancer、NS1),能自动从健康节点返回 IP 并实现地域路由。
10.
负载均衡层:配置月级或秒级健康检查(HAProxy/云LB),检查返回码及响应时间,失败次数阈值设置为 2–3。
DNS 层故障转移:使用 DNS 提供商的 API,结合监控脚本或第三方监控(UptimeRobot、Datadog)在检测到全节点异常时切换到备用 IP 或 CDN。
11.
会话方案:避免使用本地内存会话,改用 Redis/Memcached 或数据库共享会话;若必须使用粘性,会在 HAProxy 配置 cookie 或 source-based stickiness。
数据库同步:主从复制或主主(谨慎使用),使用跨机房复制方案并确保延迟在可控范围内。
12.
推荐栈:Prometheus 抓取 HAProxy、Nginx 指标,Grafana 可视化;Filebeat/ELK 用于集中日志分析。
告警规则:设置错误率、延迟、健康检查失败及带宽异常的告警阈值,并配置短信/微信/邮件通知。
13.
演练步骤:1) 在非高峰期模拟单节点故障;2) 验证负载均衡自动剔除并恢复流量;3) 检查会话迁移与数据一致性。
回滚策略:将 DNS TTL 设为较短(例如 60s)以便快速回退;记录变更步骤并保持配置版本控制(git)。
14.
防火墙与健康检查端口:确保健康检查来源 IP 在安全组允许范围内,否则会误判下线。
流量计费与带宽:多 IP/多节点会增加公网出入流量,注意带宽计费与计费峰值。
15.
问:为什么选择台湾多IP而不是单一大带宽服务器?
答:多IP多节点能消除单点故障、分散网络路径风险并提升可用性;单一大带宽虽然吞吐能力高,但存在单实例宕机和网络路径被中断的风险,多IP配合负载均衡能实现更高冗余。
16.
问:如何在多IP环境下保证 SSL 正确运作与证书管理?
答:最佳做法是在负载均衡层终止 TLS(LB 上安装证书)并自动续签(Let's Encrypt 或云证书托管);若在后端做 TLS,则在每台主机部署相同证书并确保证书链一致。
17.
问:成本与维护上有哪些建议?
答:建议先用 2 台不同 IP 的小型实例+云托管 LB 做最低成本多节点部署,随着流量增长再横向扩容;将配置自动化(Terraform/Ansible)并使用集中监控以降低运维成本。