双活数据中心搭建防止数据丢失:双活数据中心搭建全流程

双活数据中心搭建全流程:零基础也能防止数据丢失

数据丢失对企业来说是灾难。
双活数据中心通过让两个站点同时对外服务并实时同步数据,即使一个站点完全故障,另一个也能立刻接管,从架构层面彻底消除单点故障
本文从零开始,带你把这套方案落地。

为什么双活数据中心能防数据丢失?

传统主备模式中,备机平时不干活,切换时有延迟,容易丢数据。
双活(Active-Active)的两个站点都在运行,数据通过同步复制协议实时写入两边。任何一个站点的数据损坏或硬件故障,另一个站点仍然持有完整的最新数据,业务不中断,数据不丢失。

搭建前必须准备的条件

硬件层面:

  • 两台性能相近的服务器(建议同品牌同配置),每台至少两块网卡,一块用于业务,一块用于心跳同步。
  • 共享存储或各自本地存储(推荐使用分布式存储软件如 Ceph、GlusterFS 配合同步机制)。
  • 网络最低要求:两个站点间专线或 VPN,延迟 ≤ 10ms,带宽 ≥ 10Gbps(取决于写入量)。

软件层面:

  • 操作系统(本文以 CentOS 7.9 为例),确保内核版本 ≥ 3.10。
  • 同步工具:推荐 DRBD(块设备复制)+ Pacemaker(集群资源管理器)。
  • 数据库或应用层双活兼容性确认(例如 MySQL 需用 Group Replication 或 Galera)。

核心搭建步骤:从零到双活

第一步:配置两个站点的操作系统

在两台机器上分别执行基础配置(以 SiteA 和 SiteB 为例):

# 关闭防火墙和 SELinux(生产环境按需放行端口)
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

配置主机名和 hosts 文件:

# SiteA
hostnamectl set-hostname sitea.example.com
# SiteB
hostnamectl set-hostname siteb.example.com
# 两机都写入 hosts
echo "192.168.1.10 sitea.example.com" >> /etc/hosts
echo "192.168.1.20 siteb.example.com" >> /etc/hosts

第二步:安装并配置 DRBD 数据同步

在两台机器上都安装 DRBD:

yum install -y epel-release
yum install -y drbd90-utils kmod-drbd90

加载内核模块:

modprobe drbd
echo "drbd" > /etc/modules-load.d/drbd.conf

创建 DRBD 配置文件 /etc/drbd.d/disk0.res

resource disk0 {
    protocol C;                    # 同步模式,保证数据写入两边才返回
    on sitea.example.com {
        device    /dev/drbd0;
        disk      /dev/sdb1;       # 假设 /dev/sdb1 是数据盘
        address   192.168.1.10:7788;
    }
    on siteb.example.com {
        device    /dev/drbd0;
        disk      /dev/sdb1;
        address   192.168.1.20:7788;
    }
}

初始化 DRBD 资源并启用:

# 在两台机器上都执行
drbdadm create-md disk0
drbdadm up disk0

设置 SiteA 为主节点(首次同步):

# 只在 SiteA 执行
drbdadm primary --force disk0

验证同步状态:

cat /proc/drbd

看到 cs:Connectedro:Primary/Secondary 表示连接正常。

第三步:用 Pacemaker 管理自动切换

安装 Pacemaker 和 Corosync:

yum install -y pacemaker corosync pcs

配置 Corosync(以单播模式为例,编辑 /etc/corosync/corosync.conf):

totem {
    version: 2
    cluster_name: dual-cluster
    transport: udpu
    interface {
        ringnumber: 0
        bindnetaddr: 192.168.1.0
        mcastaddr: 226.94.1.1
        mcastport: 5405
    }
}
nodelist {
    node {
        nodeid: 1
        ring0_addr: 192.168.1.10
        name: sitea.example.com
    }
    node {
        nodeid: 2
        ring0_addr: 192.168.1.20
        name: siteb.example.com
    }
}

在两台机器上启动并设置开机自启:

systemctl start pcsd corosync pacemaker
systemctl enable pcsd corosync pacemaker

设置集群用户密码并认证:

# 设置 hacluster 用户密码(两边都执行)
passwd hacluster
# 在 SiteA 上认证
echo "123456" | pcs cluster auth sitea.example.com siteb.example.com -u hacluster
# 启动集群
echo "123456" | pcs cluster setup --name dual-cluster --start sitea.example.com siteb.example.com

创建 DRBD 资源并绑定到集群:

pcs resource create drbd_data ocf:linbit:drbd drbd_resource=disk0 --group storage
pcs resource create fs_data Filesystem device="/dev/drbd0" directory="/mnt/dual_active" fstype="xfs" --group storage

第四步:配置文件系统并挂载

在主节点格式化(只执行一次):

mkfs.xfs /dev/drbd0

在两台机器上都创建挂载点:

mkdir -p /mnt/dual_active

Pacemaker 会自动挂载测试。
如果需要应用层双写,需配合应用自己的集群(如 MySQL Group Replication),这里略。

避坑指南:常见问题与解决办法

现象1:DRBD 同步卡在 SyncSourceWFConnection
原因:网络防火墙或 IP 未放通 7788 端口。解决办法:在两台机器上执行 iptables -I INPUT -p tcp --dport 7788 -j ACCEPT 并保存。

现象2:Pacemaker 资源无法启动,报 Failed to start: Input/output error
原因:DRBD 设备未升级为主。手动执行 drbdadm primary disk0 后重试 pcs resource cleanup

现象3:双活但数据写入时,其中一台写失败。
检查磁盘空间和文件系统权限,确保 /dev/sdb1 在两台机器上容量一致。

如何验证双活防丢数据效果?

基础验证:在两台机器上分别查看 DRBD 状态:

cat /proc/drbd

输出中 ro: Primary/Primary 才是真正的双活。
注意:DRBD 标准版不支持 Primary/Primary,需要使用 DRBD9 或配合 OCFS2/GFS2 分布式文件系统。
如果仅用此方案,实际是主备模式,但 Pacemaker 可自动故障切换,数据不丢(最后写入的数据会被同步)。

破坏性测试

  1. 在 /mnt/dual_active 下创建一个测试文件 echo "test" > /mnt/dual_active/test.txt
  2. 直接拔掉 SiteA 电源。
  3. 登录 SiteB,检查 cat /mnt/dual_active/test.txt 内容是否完整。
  4. 同时检查应用是否自动切换到 SiteB(需应用层配合)。

监控建议

  • 部署 Nagios 或 Zabbix 监控 DRBD 连接状态和磁盘 IO 延迟。
  • 每天自动执行 drbdadm verify disk0 检查数据一致性。

完成以上步骤后,你的业务就拥有了一个能自动容灾、从底层保障数据不丢失的双活数据中心基础架构。
后续可根据实际业务调整资源参数,如内存、缓存大小等。
遇到异常时先看服务日志(/var/log/messages),再对照本文的避坑清单排查。

分享到:
上一篇
服务器异地多活容灾架构搭建:零基础完整教程
下一篇
流量调度配置分担服务器压力教程
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意