- 作用:在香港部署站群服务器能减少面向中国大陆及东南亚用户的延迟、规避大陆带宽高峰和跨境链路抖动,同时便于多IP多站点策略、SEO优化与流量分散。
- 适用场景:大量静态站点、营销着陆页、需要多IP投放或CDN接入前的源站、跨境电商与国际用户访问。
- 本文目标:给出从准备、部署到高可用与负载均衡的实操步骤,能直接在Ubuntu/Debian/ CentOS环境复刻。
- 基本拓扑:公网负载层(负载均衡器 LB)-> 应用节点组(多台Web服务器)-> 后端数据库/缓存。
- 建议部署:2台或以上LB(HA)、3~8台应用服务器,根据流量横向扩展;数据库建议主从或云托管服务。
- 高可用设计要点:LB用Keepalived或云厂商的弹性LB,后端做健康检查、会话持久化或使用集中会话(Redis)。
- 带宽:根据并发和资源,常见站群每台应用节点建议10~100Mbps带宽起步,流量大时按峰值+30%预留。
- CPU/内存:静态站点2-4核、2-8GB内存即可;动态站点按并发和应用类型调整。
- 存储与IO:若大量静态文件建议用SSD并启用Nginx静态缓存;备份使用对象存储(例如S3兼容)。
- 系统准备:更新系统并安装必要工具:
sudo apt update && sudo apt upgrade -y sudo apt install -y nginx haproxy keepalived certbot redis-server- 网络与安全组:开放80/443,LB与后端可通过内网(私有IP)通信,防火墙仅允许必要端口:
sudo ufw allow 80,443/tcp
sudo ufw allow from {LB_IP} to any port 22
- 内核调优(并发/连接):
sudo sysctl -w net.core.somaxconn=65535 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
- 目录结构:/var/www/siteX 为站点根目录,权限设置:
sudo mkdir -p /var/www/site1 sudo chown -R www-data:www-data /var/www/site1- 部署静态:将站点文件放入/var/www/site1,Nginx配置引用该目录。
/etc/systemd/system/site1.service [Unit]... ExecStart=/usr/bin/node /var/www/site1/app.js
- 安装:Ubuntu上sudo apt install nginx。
- 基础upstream配置示例(/etc/nginx/conf.d/upstream.conf):
upstream site_pool {
server 10.0.0.11 weight=5;
server 10.0.0.12 weight=5;
server 10.0.0.13 backup;
keepalive 32;
}
- 站点配置(/etc/nginx/sites-available/site.conf)要点:
server {
listen 80;
server_name example.hk;
location / {
proxy_pass http://site_pool;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
- 健康检查:Nginx本身需用第三方模块或结合HAProxy做健康检查,或采用curl脚本+systemd定期检测并从upstream做动态调整。
- 安装:sudo apt install haproxy。
- 基本配置(/etc/haproxy/haproxy.cfg):
frontend http-in
bind *:80
mode http
default_backend webservers
backend webservers
mode http
balance roundrobin
option httpchk GET /health
server web1 10.0.0.11:80 check
server web2 10.0.0.12:80 check
- 粘性会话(cookie)示例:
backend webservers
cookie SERVERID insert indirect nocache
server web1 10.0.0.11:80 cookie s1 check
server web2 10.0.0.12:80 cookie s2 check
- 重载配置:sudo systemctl reload haproxy,检查日志/状态:sudo ss -ltnp | grep haproxy。
- 安装:sudo apt install keepalived。
- 基本配置示例(/etc/keepalived/keepalived.conf):
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication { auth_type PASS; auth_pass 1111; }
virtual_ipaddress { 203.0.113.100 }
}
- 实操要点:两台LB分别设置MASTER/SLAVE,优先级不同。测试漂移:在MASTER上停掉keepalived服务确认VIP漂移到SLAVE。- 获取证书:安装certbot并使用webroot验证:
sudo apt install certbot sudo certbot certonly --webroot -w /var/www/site1 -d example.hk- Nginx启用证书示例:
server {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.hk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.hk/privkey.pem;
...
}
- 自动续期:配置cron或systemd定时任务:
sudo crontab -e 0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"- HSTS/安全性:为生产环境添加安全头并禁用TLS1.0/1.1。
- 答:两者各有侧重。Nginx在处理静态内容、反向代理缓存和作为应用前端更方便(配置简单、配合缓存模块);HAProxy以稳定的四层/七层负载能力、精细健康检查和性能著称,适合高并发纯转发场景。实际建议:在站群场景中常见的做法是HAProxy负责流量分发与健康检查,Nginx用于接收外部流量、处理SSL与缓存,两者结合可兼顾功能与性能。
- 答:带宽选择应按峰值流量评估并预留冗余,建议与宿主机/机房确认上游链路质量。DNS策略上,使用较短TTL以便快速切换(例如60-300秒),并结合多A记录或GeoDNS分流;若使用虚拟IP+Keepalived需在DNS端指向VIP或者使用云厂商弹性LB并配置健康探测,避免单点故障和DNS缓存导致的切换延迟。
- 答:建议部署Prometheus + node_exporter + cAdvisor + Grafana进行指标采集与可视化,日志集中采用ELK/EFK。关键监控项包括:LB的连接数、后端响应时间、HTTP 5xx比率、TCP重传率和链路丢包。故障定位流程:1) 检查LB健康状态与VIP;2) 验证后端/应用服务是否存活(curl /health);3) 查看监控面板的突增点;4) 回滚最近配置变更或临时移出异常节点;5) 按需要通过DNS/路由快速绕过故障节点。