1.
准备与选型
- 目标:低成本 + 高可用,优先考虑带 CN2 路由的新加坡 VPS。
- 建议:至少准备两台不同运营商(或不同机房)的 CN2 VPS(例如 1 台主,1 台备)。每台配置 1-2 核、1-2GB 内存、40GB 磁盘 起步。
- 核心考量:带宽线路(CN2),IP 池稳定性,价格(月付/年付),是否支持快照和备份,能否开防火墙规则。
2.
购买与基础连通性验证
- 步骤:在商家后台选择新加坡机房、CN2 路由并下单;获取公网 IP、SSH 账号。
- 验证命令:本地终端执行 ping、traceroute(traceroute -n IP)确认 CN2 路由跃点;ssh root@IP 登录。
- 若遇到路由不通:联系供应商确认是否启用 CN2 与 BGP,或更换 IP/机房。
3.
系统初始化
- 更新与用户:apt (Debian/Ubuntu) 或 yum (CentOS)。例如:apt update && apt -y upgrade。创建非 root 用户并禁止密码登录:adduser deploy && usermod -aG sudo deploy。
- SSH 安全:编辑 /etc/ssh/sshd_config,关闭 PermitRootLogin,设置 AllowUsers,重启 sshd:systemctl restart sshd。
- 防火墙:使用 ufw 或 iptables,只开放必要端口(22, 80, 443, 8080 等)。ufw 示例:ufw allow 22/tcp; ufw allow 80/tcp; ufw enable。
4.
网络优化(提高稳定与吞吐)
- 启用 BBR:echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf; echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf; sysctl -p。
- TCP 参数优化(示例):在 /etc/sysctl.conf 添加 net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=15、net.ipv4.tcp_max_syn_backlog=4096;sysctl -p。
- MTU 与 MSS:若经过 ISP 有丢包,调整 /etc/network/interfaces 或使用 ip route change,测试性能用 iperf3。
5.
应用部署与反向代理(Nginx)
- 安装 Nginx:apt install -y nginx。部署站点:在 /etc/nginx/sites-available/ 创建配置并链接到 sites-enabled。
- 示例 proxy 配置:server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; ... } }。
- 自动 TLS:使用 certbot:apt install -y certbot python3-certbot-nginx; certbot --nginx -d yourdomain.com。
6.
负载均衡与高可用方案(HAProxy + Keepalived)
- 架构:每个机房一台 VPS 运行应用与 nginx,前端再部署两台小型 VPS 做 HAProxy + Keepalived(或利用同台作为反向 LB)。
- HAProxy 安装与基础配置(/etc/haproxy/haproxy.cfg):frontend http_front bind *:80 default_backend nodes backend nodes balance roundrobin server node1 10.0.0.1:80 check server node2 10.0.0.2:80 check。
- Keepalived 用于虚拟 IP(VIP)漂移配置示例(/etc/keepalived/keepalived.conf):vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 101; authentication { auth_type PASS; auth_pass 1111; } virtual_ipaddress { 1.2.3.4 } }。把 VIP 指向当前 Master 的 HAProxy。
7.
数据同步与会话保持
- 文件同步(静态文件):rsync + cron。示例 crontab:*/5 * * * * rsync -az --delete /var/www/static/ backup@backup-ip:/var/www/static/。也可用 lsyncd 做实时同步。
- 会话共享:使用 Redis 做会话存储,部署在独立小机或使用托管 Redis。PHP 可用 php-redis,Node 用 connect-redis。
- 数据库:主从或主主复制,建议把数据库放在单独托管或云 DB,配置定期备份与异地备份。
8.
故障转移与健康检查
- 健康检查:HAProxy 配置 check 参数并设置 timeout、inter。可配合自定义 /health 接口返回 200。
- 自动故障脚本:Keepalived 可以通过 notify-script 调用脚本在主备切换时执行 DNS/API 更新(如云解析同步)。示例:notify "/usr/local/bin/keepalived_notify.sh"。
- 演练:定期进行切换演练(停掉主机网卡或服务),验证 VIP 漂移、流量切换、数据一致性。
9.
监控与告警
- 基础监控:node_exporter + Prometheus + Grafana,或使用云监控。部署 node_exporter:systemd 服务并在 Prometheus 上抓取。
- 告警:Prometheus Alertmanager 或使用邮件/钉钉/Slack 告警。设置关键指标:响应时间、错误率、CPU、磁盘、网络包丢失。
- 日志集中:使用 Filebeat -> Elasticsearch -> Kibana 或 Loki + Grafana,便于故障排查。
10.
成本控制与扩展建议
- 成本策略:优先用 1 核低配节点 + 规模化水平扩展;利用按流量计费或包年折扣;把冷数据放到对象存储。
- 自动扩缩容:结合 Prometheus 警报与脚本 / 云 API 自动拉起/销毁实例;或使用容器编排(Kubernetes)在节点池里弹性伸缩。
- 备份成本:定期快照 + 异地对象存储,保留策略按 RPO/RTO 设定。
11.
运维脚本与常用命令汇总
- 常用命令:ssh root@IP;rsync -avz /src/ user@dest:/dst/;systemctl restart nginx;journalctl -u keepalived -f。
- 自动化:把初始化、部署、监控 agent 安装写成 Ansible playbook,一键构建多台服务器环境。
- 备份验证:定期恢复演练,确保备份可用。
12.
安全合规与日志审计
- 安全检查:定期扫描(如 vuln scanner),关闭无用端口,限制管理 IP。
- 日志审计:保留 SSH 登录记录,启用两步验证(如支持),对敏感操作做审计。
- 合规性:根据目标用户国家/地区要求处理数据(如隐私与备案)。
13.
常见问题:如何保证跨国网络稳定?
- 答:多点部署并使用 CN2 路由能显著降低中国到新加坡的延迟。结合智能 DNS(例如多个 A 记录 + 健康检查)和 BGP/云解析实现近端就近接入。使用 TCP 优化(BBR、MTU)与定期监控链路质量,遇到连续丢包即切换备用节点。
14.
常见问题:单点故障如何避免?
- 答:避免单点故障的关键是冗余:至少两台独立机房的 VPS 做主备,前端使用 Keepalived + HAProxy 做 VIP 漂移;数据层使用主从/复制与异地备份;静态文件用 rsync/对象存储同步,确保任何一台宕机时服务可立即切换。
15.
常见问题:成本预算如何估算?
- 答:估算方法:基础计算 = (VPS 每台月费 × 台数) + 带宽超额费用 + 对象存储与备份费用 + 监控/备份服务。示例低成本方案:2 台 1 核 CN2 VPS(每台约 $5-10/月)+ 对象存储 $1-3/月,月成本可控制在 $15-30 左右,随流量与高可用级别增长。
来源:如何借助新加坡vps cn2构建低成本高可用的海外服务架构