1.
总体设计目标与前置准备
说明目标:保证越南CN2上业务在网络/机房/主机故障时可在可控窗口内恢复(RTO <= 30min,RPO <= 15min)。准备:两套或以上节点(越南主、香港/新加坡备),公网IP与内网直连或VPN,SSH密钥互信,监控与告警系统(Prometheus/Alertmanager 或 Zabbix),以及备份存储(对象存储或远端NFS)。
2.
网络与路由冗余配置
在越南CN2环境建议使用双出口或BGP多线(若带宽与费用允许),若无BGP则至少配置双网络供应商或VPN链路到备机房。操作步骤:在两端建立IPSec/IKEv2或WireGuard隧道(示例:WireGuard配置互换公钥并启用PersistentKeepalive),并验证iperf3延迟和丢包。
3.
主机级高可用:Keepalived+HAProxy/Nginx
在应用层使用Keepalived提供虚拟IP漂移(VIP),HAProxy或Nginx做负载均衡。配置要点:在/etc/keepalived/keepalived.conf定义state MASTER/BACKUP、virtual_router_id、auth和virtual_ipaddress;设置notify脚本在切换时同步后端流量。启动:systemctl enable --now keepalived haproxy。
4.
文件同步:rsync、lsyncd 与增量策略
对于应用静态文件(/var/www、配置文件),建议实时或近实时同步:快速方案用rsync + cron(示例:rsync -az --delete -e "ssh -i /root/.ssh/id_rsa" /var/www/ backup@backup-host:/data/www),实时方案用lsyncd(配置lsyncd.lua监控目录并调用rsync)。保留期按业务设定,定期生成快照目录如 /backups/daily/YYYYMMDD。
5.
块级同步与实时复制:DRBD 或 Ceph
对需要一致性的块设备采用DRBD(主从)或分布式存储Ceph。DRBD基本步骤:apt install drbd-utils,编辑 /etc/drbd.d/r0.res 指定 device、disk、net、resource、on host 址块,生成证书并启动 drbdadm create-md r0; drbdadm up r0; drbdadm -- --overwrite-data-of-peer primary r0。注意心跳与 fencing 配置以防脑裂。
6.
数据库备份策略:MySQL
对于MySQL推荐主从复制+物理备份。步骤:在主库开启 binary_log,设置 server-id,创建复制用户。在备库执行 mysqldump 或 xtrabackup 物理备份:使用 Percona XtraBackup:xtrabackup --backup --target-dir=/data/xbk && xtrabackup --prepare --target-dir=/data/xbk,然后恢复到备库并启动复制。增量恢复用mysqlbinlog配合位置恢复。定期测试 failover。
7.
数据库备份策略:PostgreSQL
PostgreSQL 推荐流复制 + basebackup。主库配置postgresql.conf开启 wal_level = replica,max_wal_senders,archive_mode = on,并配置 pg_hba.conf 允许备库连接。备库执行 pg_basebackup -h 主机 -D /var/lib/postgresql/12/main -U replicator -P -X stream。设置 recovery.conf(或postgresql.auto.conf)配置 primary_conninfo 与 restore_command。
8.
对象存储与冷备份:rclone/s3cmd 同步
将每日快照和数据库备份推到对象存储(如S3、MinIO或厂商提供的OSS)。安装 rclone,配置远端 rclone config,示例上传脚本:rclone sync /backups s3:bucket/vn-cn2-backups --delete --min-age 1m。并在远端开启生命周期策略保存多版本与归档。
9.
自动化与运维工具:Ansible Playbook
将以上操作用Ansible模块自动化:编写 playbook 管理用户、SSH key 分发、rsync 定时任务、备份脚本部署、DRBD/Keepalived/HAProxy 配置模板。执行示例:ansible-playbook -i hosts site.yml --limit vietnam。通过CI/CD触发灾备配置变更。
10.
监控与告警:指标与健康检查
监控点包括磁盘使用、IOPS、延迟、网络丢包、备份任务退出码、复制延迟(Seconds_Behind_Master)、keepalived 状态。实现方法:Prometheus node_exporter + mysqld_exporter + custom exporter;配置 Alertmanager 触发SMS/钉钉告警。定期检查备份完整性(校验MD5、恢复演练)。
11.
恢复演练与SOP
制定SOP并定期演练:演练步骤示例(单节点故障切换):1) 切换 VIP(keepalived failover) 2) 启动备机服务 3) 验证 DB 复制/回放 4) 切换 DNS (TTL 短)或更新负载均衡 5) 监控业务链路。演练后记录RTO/RPO并优化不达标项。
12.
数据一致性与回滚策略
针对分布式事务,可采用应用侧幂等设计或使用消息队列缓冲。数据库回滚策略:保留binlog/WAL至少7-30天,根据合规决定。测试回滚时先在隔离环境恢复快照并验证数据一致性再对生产恢复。
13.
安全与权限控制
备份传输加密(SSH、TLS),备份存储上启用服务器端加密。限制备份用户权限,使用KMS管理密钥,定期轮换SSH密钥与DB复制用户密码。对外链路使用VPN或私有链路,避免在公网裸露数据库。
14.
成本与SLA 平衡建议
越南CN2到境外备份存在带宽成本,建议归类数据:热数据采用实时复制(DRBD/lsyncd),冷数据用每日同步到对象存储。在预算有限时优先保证数据库与配置、核心业务文件,次要日志可延迟同步或压缩存储。
15.
常用脚本示例与Cron任务
示例:每日全备脚本 backup_daily.sh 包含:停止业务短暂冻结(若需),执行 xtrabackup,打包并上传 rclone,同步成功则保留本地备份7天。Cron例子:0 2 * * * /usr/local/bin/backup_daily.sh >> /var/log/backup_daily.log 2>&1。脚本中加入锁文件避免重叠执行。
16.
异地恢复步骤(从对象存储恢复至新节点)
步骤:1) 在备机创建相同分区与LVM 2) 使用 rclone/ossutil 下载备份并校验 3) 恢复数据库:对MySQL执行 xtrabackup --copy-back 并调整 owner;对Postgres使用 pg_restore 或 basebackup 恢复 4) 启动服务并检查复制链路 5) 执行流量切换并验证业务。
17.
测试用例与验收指标
构建测试用例:断网故障、主机宕机、数据误删+回滚、单库故障扩展。验收指标包括恢复时间、数据丢失量、主备切换成功率、自动化脚本可靠率。每次改动后必须执行至少一次全流程演练。
18.
问:在越南CN2上做异地备份遇到网络不稳定,如何保证RPO?
答:优先采用本地实时复制(如DRBD或lsyncd)保证短时内副本一致,同时将关键数据定期增量推送到境外对象存储。对网络抖动场景,使用断点续传工具(rclone/s3cmd支持分片续传),并缩短本地日志保留窗口(保留binlog/WAL足够回放到最近一次成功同步点)。
19.
问:如何在越南CN2环境快速进行切换以减少业务中断?
答:实现自动化VIP漂移(keepalived)+后台自动启动服务(systemd unit),预先准备好DNS低TTL并结合负载均衡(HAProxy),编写切换脚本自动检测主节点失败并完成VIP切换、数据同步状态检查与流量转发。定期演练确保切换步骤熟练。
20.
问:常见误区与避免策略有哪些?
答:常见误区包括仅依赖单一备份方式、未测试恢复、忽视网络成本与延迟。避免策略:采用多层备份(文件+块+数据库),自动化并定期验证恢复流程,按业务分类分配备份频率,使用加密与权限管理保护备份数据。
来源:高可用架构下越南cn2服务器备份与容灾方案设计