1.
总体架构与部署原则
架构要点:将前端反向代理(Nginx/缓存)与应用层(PHP/Node)分离,后端使用Redis做对象缓存,负载均衡用HAProxy+Keepalived实现高可用VIP,外层加CDN和DNS负载。原则:靠近越南用户选机房、控制带宽延迟、降低跨境请求。
2.
步骤:1) 选河内/胡志明机房或新加坡近岸节点,带宽至少100Mbps,支持防护;2) 系统优化:Ubuntu 22.04,执行 sudo apt update && apt upgrade;3) 网络调优:修改 /etc/sysctl.conf 开启 tcp_tw_reuse、tcp_fin_timeout 和 net.core.somaxconn(示例:net.ipv4.tcp_tw_reuse=1)。
3.
Nginx反向代理+proxy_cache配置实操
步骤:1) 安装 nginx: sudo apt install nginx;2) 在 nginx.conf 添加 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=pcache:100m max_size=10g inactive=60m;3) 在 server/location 中启用:proxy_cache pcache; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;4) 设置缓存控制:add_header X-Cache-Status $upstream_cache_status;
4.
PHP/fastcgi_cache 与缓存清除策略
步骤:1) 在 php-fpm 后端使用 fastcgi_cache_path 同 proxy_cache,配置 fastcgi_cache_key $scheme$request_method$host$request_uri;2) 在 location ~ \.php$ 中启用 fastcgi_cache 和 fastcgi_cache_valid;3) 缓存过期与主动清除:实现基于 purge 的接口(使用 ngx_cache_purge 模块)或在应用中通过 Redis 发布/订阅通知 Nginx 清理特定 URI。
5.
对象缓存 Redis/Memcached 实操
步骤:1) 安装 redis-server: sudo apt install redis-server,调整 maxmemory 和 eviction 策略(maxmemory 512mb,maxmemory-policy allkeys-lru);2) 在应用中使用持久连接和短过期策略缓存DB查询和会话;3) PHP: sudo apt install php-redis 并在代码中使用 Redis::setex 保存带TTL的缓存键。
6.
CDN与DNS策略(越南延迟优化)
步骤:1) 使用 Cloudflare 或 BunnyCDN,开启缓存静态资源、Page Rule 缓存 HTML(必要时);2) DNS 使用 GeoDNS 或多个 A 记录将流量导向近岸节点;3) 配置 CDN 缓存策略时保留动态页面回源规则并设置缓存级别与压缩(Brotli/Gzip)。
7.
分布式负载均衡:HAProxy 实战配置
步骤:1) 安装 haproxy: sudo apt install haproxy;2) 简单 HTTP 配置示例:frontend http_in bind *:80 default_backend webnodes backend webnodes balance leastconn option httpchk GET /health check server web1 10.0.0.2:80 check server web2 10.0.0.3:80 check;3) 会话粘滞:使用 cookie SRV insert indirect nocache maxidle 30m。
8.
高可用 VIP:Keepalived / VRRP 部署
步骤:1) 安装 keepalived: sudo apt install keepalived;2) 配置 /etc/keepalived/keepalived.conf,定义 vrrp_instance、state MASTER/BACKUP、virtual_router_id 和 virtual_ipaddress,例如 virtual_ipaddress { 10.0.0.100/24 };3) 添加 vrrp_script 执行 haproxy 健康检查并在失败时切换。
9.
监控、告警与容量计划
步骤:1) 部署 Prometheus + node_exporter 与 nginx_exporter,采集 cache_hit_ratio、upstream_time、conn metrics;2) Grafana 创建面板并设置告警(cache hit < 60%,upstream_latency > 300ms);3) 日志与巡检:启用 logrotate,设置定期缓存命中率分析并按流量扩容或加边缘节点。
10.
问:如何安全且快速地清理 Nginx 缓存而不影响线上流量?
答:使用 ngx_cache_purge 插件或在 proxy_cache_key 使用可预测的键,然后用脚本逐条删除(例如通过 find /var/cache/nginx -name '*uri*' -delete),生产环境优先通过发布/订阅在应用层通知 Nginx 节点逐台清理,避免同时大规模回源造成流量陡增;若必须全站刷新,先提升后端容量并限速回源。
11.
问:会话粘滞与无状态认证如何在负载均衡中兼容?
答:推荐使用无状态 JWT 或把 session 存 Redis(中央化)。若必须粘滞,可在 HAProxy 使用 cookie 粘滞;若使用 JWT,后端任何节点都能验证,方便横向扩展并减少负载均衡粘滞压力。
12.
问:若越南节点出现高丢包/延迟,排查顺序与快速缓解措施是什么?
答:排查顺序:1) 使用 ping/traceroute 确认链路;2) 检查 VPS 带宽与丢包(iftop, mtr);3) 查看后端响应时间与队列(nginx stub_status、haproxy stats);快速缓解:启用 CDN 缓存更多内容,增加备用机房/多线路 DNS,临时提升带宽或增加更多反向代理节点以分散负载。
来源:性能优化越南站群vps 缓存策略与分布式负载均衡实操要点