1. 架构准备与需求确认
- 确认数据量、同步频率(实时/分钟/小时/每日)与链路带宽。
- 确定合规要求(越南与中国大陆的数据出境/入境限制),若疑问请咨询法律合规团队。
- 选择传输方式:安全隧道(WireGuard/IPsec/OpenVPN)+ 文件同步(rsync/SFTP/HTTP API)或数据库异步复制(MySQL binlog/Cassandra replication)。
2. 搭建安全传输隧道(推荐WireGuard)
- 在越南服务器与大陆边缘服务器安装WireGuard:apt/yum install wireguard iproute2.
- 生成密钥:wg genkey | tee private.key | wg pubkey > public.key。
- 服务端(大陆)示例 /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.0.1/24
PrivateKey = <服务端私钥>
ListenPort = 51820
[Peer]
PublicKey = <越南公钥>
AllowedIPs = 10.200.0.2/32
- 客户端对称配置,启动:systemctl enable --now wg-quick@wg0。
- 在 /etc/sysctl.conf 启用转发:net.ipv4.ip_forward=1,并设防火墙允许51820/udp。
3. 基于SSH的文件同步(rsync over SSH)实操
- 在越南端生成密钥并把公钥加入大陆目标用户的~/.ssh/authorized_keys。
- rsync命令示例:rsync -azP --delete -e "ssh -i /root/.ssh/id_rsa -p 22" /data/ user@10.200.0.1:/backup/data/。
- 为自动化写cron:*/15 * * * * /usr/bin/rsync -az --delete -e "ssh -i /root/.ssh/id_rsa" /data/ user@10.200.0.1:/backup/data/ >/var/log/rsync-cron.log 2>&1。
- 若需增量且节省带宽,可先用 --link-dest 实现硬链接增量备份。
4. 数据库同步与延迟控制
- 对MySQL建议使用主从(binlog)或使用Maxwell/Canal推送到Kafka再消费写入大陆。
- 配置主从:在越南主库启用 binlog_format=ROW,server-id=1;在大陆从库设置CHANGE MASTER TO MASTER_HOST='越南IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_PORT=3306; START SLAVE;。
- 监控延迟:show slave status\G 中 Seconds_Behind_Master,若延迟高,检查链路丢包/MTU并开启压缩或批量提交。
5. 网络优化与故障切换(HA)
- 测试链路性能:安装 iperf3,iperf3 -s 在一端,iperf3 -c server 在另一端,观察带宽与丢包。
- 若需高可用,部署两条隧道(不同运营商/不同出口),使用 keepalived 或 VRRP 做虚拟IP切换,配合 healthcheck脚本检测WireGuard/ssh可用性。
- 路由与防火墙:使用 ip route add/metric 控制优先路由,iptables/nftables 只放必要端口,限制来源IP并开启限速。
6. 安全加固与监控运维
- 证书与密钥管理:使用短期密钥、定期更换并在Vault中管理。对Web/API传输使用TLS mutual authentication。
- 日志与告警:部署Prometheus + node_exporter采集流量/延迟,Grafana展示面板;设置Alertmanager告警链路中断/延迟过高。
- 流量加密与合规:对敏感文件先在源端做AES-256加密(openssl enc -aes-256-cbc),再通过隧道传输;保留传输证据以备审计。
7. 问:为什么推荐WireGuard而不是OpenVPN/IPsec?
答:WireGuard实现简单、建立连接快、加密现代且效率高,CPU占用低,易于穿透NAT并支持多路径切换。OpenVPN配置复杂、IPsec在不同厂商设备间兼容性问题较多。但若企业已有IPsec/MPLS预算与SLAs,也可以沿用原有方案。
8. 问:如何保证同步过程中文件一致性与原子性?
答:对文件同步,先在源端写入临时目录并完成后重命名为目标名(原子重命名),rsync使用 --temp-dir 与 --partial 调优。数据库层面使用binlog或逻辑解耦(事务提交后推送事件),并在目标端做校验(校验sum或逐表行数对比)。
9. 问:一旦链路中断,如何快速恢复并补同步缺失数据?
答:建立断点续传策略:rsync带--partial,数据库启用binlog保留策略(足够保存中断期间日志)。链路恢复后,先用校验脚本比较源/目标差异(rsync --dry-run 或 mysqldump 对比),再触发增量同步。若数据量巨大,考虑用物理快照+离线传输或CDN/对象存储跨域同步。
来源:越南云服务器数据分析 对接大陆数据中心的同步与安全传输方案