目标:在海腾数据香港机房/云平台上实现水平可扩展、快速故障恢复(RTO 小于 15 分钟、RPO 满足业务要求)。
前提:你有该服务器的 root/管理员权限,能创建镜像、配置防火墙规则,并能通过 API 或控制面板调整 DNS 或浮动 IP。
步骤 1:收集基线指标:在现有服务器上安装 metric 收集器(例如 node_exporter)并启动 Prometheus 抓取。命令示例:systemctl enable --now node_exporter。
步骤 2:计算容量:统计 CPU/内存/磁盘 IOPS 使用的 95% 峰值,按业务增长(例如 30%)计算未来 3~6 个月所需资源。
步骤 3:制定扩容阈值:设置触发规则(如 CPU > 70% 持续 10 分钟或磁盘 IOPS 达 80%),写入运行手册并在监控中实现告警。
部署方案:两台或多台后端应用服务器 + 一层 HAProxy 负载均衡 + keepalived 实现 VIP 漂移。
实操步骤:安装 HAProxy(apt/yum install haproxy),配置 /etc/haproxy/haproxy.cfg,示例 backend:server app1 10.0.0.11:80 check。
keepalived 配置要点:在 /etc/keepalived/keepalived.conf 配置 vrrp_instance,priority 高的一台为 MASTER,设置 health_check 脚本检测 haproxy;启动后验证:ip addr show 可见 VIP。
水平扩展(推荐):使用镜像/模板快速克隆新节点。步骤:制作 golden image(清理 SSH keys,cloud-init 配置),通过控制面板或 API 批量创建实例并加入 LB。
自动化示例:用 Ansible 写 playbook:ansible-playbook -i inventory deploy.yml,deploy.yml 包含安装依赖、拉取配置、注册监控。
垂直扩展:短期增加 CPU/RAM,注意停机或 live-resize 的风险,变更记录写入变更单并通知团队。
MySQL(常见方案):部署主从(或组复制/GTID)。实操:在主库执行 mysqldump 或用 xtrabackup 备份,配置从库 my.cnf 指向 master_host。示例:CHANGE MASTER TO MASTER_HOST='10.0.0.10', MASTER_USER='repl', MASTER_PASSWORD='pwd'; START SLAVE;。
读写分离:在应用层或使用 Proxy(如 ProxySQL)实现读写路由,配置 Pool 并测试。
水平分库:根据业务拆表策略,先进行逻辑划分并准备迁移脚本(pt-online-schema-change 等)。
文件备份:使用 rsync + rclone 将 /var/www /etc 同步到对象存储(示例脚本:rsync -az /var/www/ backup:/www/;rclone copy /backup s3:bucket/ --encrypt)。
数据库备份:MySQL 使用 xtrabackup 做热备份,命令示例:xtrabackup --backup --target-dir=/data/backup/$(date +%F)。定期验证备份可恢复性(每周恢复一次到测试环境)。
快照策略:若使用 VPS,启用磁盘快照并保留策略(每日/每周/每月),并在脚本中记录 snapshot id 与创建时间。
制定 DR 文档:定义 RTO/RPO、优先级业务列表、联系人、步骤与回滚点。
演练步骤(一次完整演练示例):1) 切换 VIP:在备用机通过 keepalived 强制变更 priority;2) 切换数据库到只读副本并提升为主(CHANGE MASTER / RESET SLAVE);3) 使用 DNS 提供商 API 缩短 TTL 并更新 A 记录到备用 IP(示例用 curl 调用);4) 验证业务流量并记录耗时。
恢复验证:检查日志、监控面板、应用事务完整性,确认所有指示器恢复到正常阈值。
部署链路:Prometheus + node_exporter + mysqld_exporter + Alertmanager + Grafana。
关键告警:主机不可达、磁盘使用 > 85%、MySQL 主从延迟 > 5s、服务 5xx 增长等。配置示例:alert rule 当 instance:node_cpu:ratio > 0.8 且持续 10m 则触达邮件/钉钉/短信。
告警演练:人为触发阈值(例如临时占满磁盘或停止数据库 replication),验证告警触达与应答流程。
网络安全:启用主机防火墙(ufw/iptables),只开放必要端口(80/443/22 限定来源)。
备份加密与密钥管理:使用 gpg 或 s3 客户端的 SSE,请把密钥保存在 KMS 或硬件安全模块。备份脚本示例:mysqldump | gzip | gpg --encrypt -r ops@company.com。
权限与审计:使用 sudo 日志、SSH key 管理、定期轮换管理密码并保存变更记录。
Q: 如果海腾香港机房某台主机故障,如何在 15 分钟内恢复流量?
A: 首先确保有至少两台后端和一个浮动 VIP(keepalived)及 HAProxy,若主机故障,VIP 会漂移到备用主机;若 DB 主库故障,提前在 runbook 中准备自动提升脚本:停止 slave,reset master,CHANGE MASTER TO... 并在 DNS(或负载均衡)层面重定向流量;演练中需要把这些步骤时间控制在 15 分钟内。
Q: 如何在海腾数据上做跨机房/跨区域容灾?
A: 策略为异地复制与 DNS+Anycast 配合:数据库采用主从或双主复制到异地(使用 GTID 或 binlog 同步),文件通过 rclone/rsync 同步到对象存储;建议使用低 TTL 的 DNS、健康检查和自动化脚本在主站不可达时将流量切换到二级站点,并定期做全量恢复演练。
Q: 运维团队如何保证扩展和故障恢复操作可重复且可审计?
A: 把所有操作写成 IaC(Ansible/Terraform)和自动化脚本,所有变更必须通过 Git 管理并有 CI 校验;运行时使用 runbook(包含命令、回滚点、联系人)并在每次演练后做事后复盘,记录耗时与异常,持续改进流程。
