插件窝 干货文章 如何在Linux上配置高可用的数据同步

如何在Linux上配置高可用的数据同步

sudo DRBD 同步 Lsyncd 98    来源:    2025-04-16

Linux高可用数据同步配置指南

一、常见高可用数据同步方案

在Linux环境下,有几种主流的高可用数据同步方案可供选择:

  1. DRBD (Distributed Replicated Block Device)

    • 块设备级别的同步
    • 主从架构,实时同步
    • 可与Heartbeat/Pacemaker配合实现自动故障转移
  2. GlusterFS

    • 分布式文件系统
    • 支持多节点复制
    • 无单点故障
  3. Ceph

    • 统一的分布式存储系统
    • 高扩展性和可靠性
    • 支持对象、块和文件存储
  4. Rsync + Lsyncd

    • 文件级别的同步
    • 适合非实时性要求较高的场景
    • 配置简单

二、DRBD配置示例

1. 安装DRBD

# Ubuntu/Debian
sudo apt-get install drbd8-utils

# CentOS/RHEL
sudo yum install drbd kmod-drbd

2. 配置DRBD

编辑/etc/drbd.d/global_common.conf:

global {
    usage-count no;
}

common {
    protocol C;
    handlers {
        pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
    }
}

创建资源配置文件/etc/drbd.d/r0.res:

resource r0 {
    device /dev/drbd0;
    disk /dev/sdb1;
    meta-disk internal;

    on node1 {
        address 192.168.1.100:7788;
    }

    on node2 {
        address 192.168.1.101:7788;
    }
}

3. 初始化并启动DRBD

# 在两个节点上执行
sudo drbdadm create-md r0
sudo drbdadm up r0

# 在主节点(node1)上执行
sudo drbdadm primary --force r0

# 查看同步状态
sudo drbdadm status r0

三、GlusterFS配置示例

1. 安装GlusterFS

# Ubuntu/Debian
sudo apt-get install glusterfs-server

# CentOS/RHEL
sudo yum install glusterfs-server
sudo systemctl start glusterd
sudo systemctl enable glusterd

2. 配置信任池

# 在节点1上执行
sudo gluster peer probe node2

# 验证对等状态
sudo gluster peer status

3. 创建复制卷

sudo gluster volume create gv0 replica 2 node1:/data/brick1/gv0 node2:/data/brick1/gv0
sudo gluster volume start gv0

4. 挂载卷

sudo mount -t glusterfs node1:/gv0 /mnt/glusterfs

四、Rsync + Lsyncd实时同步配置

1. 安装必要软件

sudo apt-get install rsync lsyncd  # Debian/Ubuntu
sudo yum install rsync lsyncd    # CentOS/RHEL

2. 配置SSH免密登录(主从节点间)

ssh-keygen -t rsa
ssh-copy-id user@remote-server

3. 配置Lsyncd

编辑/etc/lsyncd.conf:

settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd-status.log",
    statusInterval = 20
}

sync {
    default.rsync,
    source = "/data/",
    target = "user@remote-server:/backup/",
    rsync = {
        archive = true,
        compress = true,
        verbose = true,
        rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
    }
}

4. 启动Lsyncd

sudo systemctl start lsyncd
sudo systemctl enable lsyncd

五、高可用集群配置(以Pacemaker+Corosync为例)

1. 安装集群软件

# CentOS/RHEL
sudo yum install pacemaker corosync pcs

# Ubuntu/Debian
sudo apt-get install pacemaker corosync cluster-glue

2. 配置Corosync

编辑/etc/corosync/corosync.conf:

totem {
    version: 2
    cluster_name: mycluster
    transport: udpu
    interface {
        ringnumber: 0
        bindnetaddr: 192.168.1.0
        mcastport: 5405
        ttl: 1
    }
}

quorum {
    provider: corosync_votequorum
    two_node: 1
}

nodelist {
    node {
        ring0_addr: node1
        nodeid: 1
    }
    node {
        ring0_addr: node2
        nodeid: 2
    }
}

logging {
    to_logfile: yes
    logfile: /var/log/corosync/corosync.log
    to_syslog: yes
}

3. 启动集群服务

sudo systemctl start corosync
sudo systemctl start pacemaker

4. 配置集群资源

sudo pcs resource create drbd0 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s
sudo pcs resource master ms-drbd0 drbd0 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

六、监控与维护

  1. 监控同步状态

    • DRBD: cat /proc/drbddrbd-overview
    • GlusterFS: gluster volume status
    • Lsyncd: 查看/var/log/lsyncd.log
  2. 常见问题处理

    • 网络中断后的重新同步
    • 脑裂(Split-brain)情况的处理
    • 性能调优(同步速率限制等)
  3. 定期测试故障转移

    • 模拟主节点故障
    • 验证数据完整性和服务连续性

七、方案选择建议

  1. DRBD适合:

    • 需要块设备级别同步
    • 对数据一致性要求高
    • 配合集群管理软件实现自动故障转移
  2. GlusterFS/Ceph适合:

    • 需要多节点读写
    • 大规模存储需求
    • 高扩展性场景
  3. Rsync+Lsyncd适合:

    • 文件级别同步
    • 非关键业务数据
    • 简单易用的解决方案

根据您的具体业务需求、性能要求和预算,选择最适合的高可用数据同步方案。