1.
选型与网络拓扑设计
- 目标:确定业务需求(吞吐、并发、带宽、存储IO)。
- 步骤:先列出CPU核数、内存、SSD容量、出站带宽和公网/私网需求;选择有新加坡机房且支持私网/浮动IP及快照功能的供应商(例如:AWS Lightsail、DigitalOcean、Linode或本地供应商)。
- 小提示:企业建议至少两台VPS跨可用区部署,并预留一个跳板(bastion)用于运维。
2.
操作系统与基础初始化
- 目标:构建安全、可运维的基础镜像(以Ubuntu 22.04为例)。
- 实操命令:ssh 登录后执行:
apt update && apt upgrade -y
adduser deployer && usermod -aG sudo deployer
mkdir -p /home/deployer/.ssh && chmod 700 /home/deployer/.ssh
echo "你的公钥" > /home/deployer/.ssh/authorized_keys && chmod 600 /home/deployer/.ssh/authorized_keys && chown -R deployer:deployer /home/deployer/.ssh
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config && systemctl reload sshd
- 小分段:设置时区timedatectl set-timezone Asia/Singapore;安装基础工具:apt install -y curl git vim ufw fail2ban。
3.
网络安全与防火墙规则
- 目标:仅开放必要端口并启用DDoS防护策略。
- 步骤与命令:启用UFW并允许SSH(建议改端口)、HTTP、HTTPS与内部管理端口:
ufw default deny incoming && ufw default allow outgoing
ufw allow 22022/tcp comment 'ssh' && ufw allow 80/tcp && ufw allow 443/tcp
ufw enable
- 小分段:如使用私网,限制管理端来自私网网段的访问;启用fail2ban:systemctl enable --now fail2ban。
4.
磁盘、快照与备份策略
- 目标:保证数据持久化并能快速演练恢复。
- 操作:将数据库部署到独立块存储(附加卷),挂载并配置fstab:
mkfs.ext4 /dev/vdb && mkdir /data && mount /dev/vdb /data && blkid /dev/vdb >> /etc/fstab(建议使用UUID)
- 备份:使用每日快照 + 异地同步到对象存储(s3/兼容)的策略,示例脚本:使用 rclone 同步 /data 到 s3 桶;定时任务通过 crontab 管理;定期做快照并验证恢复流程。
- 小提示:快照和备份都需要测试恢复,至少每月一次做演练。
5.
容器化与应用部署(Docker + docker-compose)
- 目标:用容器提高部署一致性。
- 步骤:安装Docker与docker-compose:
curl -fsSL https://get.docker.com | sh
apt install -y docker-compose
- 实际部署示例:在 /srv/myapp 下放置 docker-compose.yml,使用Nginx做反向代理,示例命令:docker-compose up -d --build。
- 小分段:将敏感配置放入环境变量或Secrets管理(例如HashiCorp Vault或Docker Swarm secrets);CI/CD流水线(GitLab CI或GitHub Actions自托管Runner)自动构建镜像并推送到私有Registry。
6.
负载均衡与高可用设计
- 目标:实现无单点故障与会话保持/SSL终止。
- 架构与操作:两台以上后端VPS + Nginx/HAProxy作为反向代理/负载均衡器;主节点采用Keepalived实现VIP漂移(VRRP)。
- Keepalived基本配置要点:在两台负载均衡器上安装 keepalived,并配置虚拟IP、优先级、健康检查脚本;在后端配置Nginx upstream,开启proxy_set_header X-Forwarded-For等头。
- 小分段:为静态资源启用CDN(Cloudflare或商用CDN),减少源站带宽与并发压力。
7.
安全加固、合规与监控告警
- 目标:满足企业合规(数据落地新加坡)并及时告警。
- 安全措施:安装并配置fail2ban、定期安全补丁、启用AppArmor或SELinux策略(依据OS);开启SSH密钥登录并限制sudo日志审计。
- 监控部署:Prometheus + node_exporter 采集主机指标,cAdvisor 采集容器指标,Grafana 可视化并设置报警(邮件/Slack/PagerDuty)。
- 日志集中化:使用Fluentd/Logstash收集日志到Elasticsearch或对象存储,并配置Kibana/Grafana Loki做检索与告警。
- 小分段:监控要覆盖:CPU、内存、磁盘IO、网络带宽、连接数、应用响应时间与错误率。
8.
故障演练与业务连续性
- 目标:通过演练验证RTO/RPO是否达到SLA。
- 步骤:制定演练计划(例:切换主数据库到从库、切换浮动IP到备份LB、从快照恢复磁盘),并在非生产环境演练。
- 小分段:记录每次演练的时长与问题清单,持续改进Runbook(包含切换步骤、回滚步骤、联系人清单)。
9.
运维自动化与CI/CD集成
- 目标:将部署、回滚、迁移纳入自动化流程。
- 实操:用Ansible管理机器配置(playbook示例:install_docker.yml、deploy_app.yml),在CI中触发Ansible或Terraform完成基础设施变更;为重大变更设定金丝雀发布或蓝绿发布策略。
- 小分段:配置审计流水线(每次变更产生可回溯的日志与审批记录),并将变更纳入变更窗口管理。
10.
问:为什么选择新加坡VPS作为企业部署节点?
答:新加坡地理位置优越,网络延迟低,可覆盖东南亚主要市场;本地法规与云服务成熟,且多供应商支持私网、快照和对象存储,方便实现数据主权与高可用部署。
11.
问:如何保证在新加坡VPS上的数据安全和合规?
答:使用独立块存储并加密(LUKS),严格限定安全组和防火墙规则;启用审计与日志集中化,定期做合规性扫描(例如CIS基线),并把备份异地存储到受信任的对象存储中以满足RPO/RTO。
12.
问:从单机部署升级到企业级高可用有什么关键步骤?
答:关键在于按层次演进:先拆分数据与应用(独立数据库节点与块存储),引入负载均衡(HAProxy/NGINX+Keepalived),实现自动化部署(Ansible/CI)和监控告警(Prometheus/Grafana),最后通过跨可用区、多实例与快照/备份策略完成演练与验证。
来源:企业级部署案例 新加坡的vps服务器实践与经验分享