DRBD(Distributed Replicated Block Device)是一种分布式存储系统,它允许在网络中的两个或多个节点之间复制数据。在本例中,我们为两个节点(node1和node2)设置DRBD,使其运行在双主模式下。
注意:
- 确保在运行脚本之前,两个节点都预先安装了DRBD,并且内核模块已经正确加载。
- 确保两个节点上都具有root权限或具有执行相应命令的权限。
- 确保两个节点可以通过SSH互相通信,并配置了密钥认证以免脚本执行时需要密码交互。
- 确保在运行脚本之前,DRBD未在节点上运行,并且存储设备(本示例中假设为/dev/sdb)未被挂载或用作其他目的。
以下是为DRBD设置的两个脚本,一个用于主节点,另一个用于备用节点。
主节点脚本(node1_setup_drbd.sh):
保存为 node1_setup_drbd.sh
并在node1(192.168.41.101)上运行此脚本。
bash
#!/bin/bash# 设置环境变量
NODE1_IP=192.168.41.101
NODE2_IP=192.168.41.102
DRBD_RESOURCE_NAME=mydrbd
DRIVE=/dev/sdb# 安装必要的软件包
apt-get update
apt-get install -y drbd-utils# 创建DRBD资源配置文件
cat <<EOF > /etc/drbd.d/${DRBD_RESOURCE_NAME}.res
resource ${DRBD_RESOURCE_NAME} {protocol C;startup {wfc-timeout 0; # 设为'0'以进行无限期的等待连接。degr-wfc-timeout 120; # 如果AllPrimary,等待120秒。}net {allow-two-primaries yes; # 允许双主模式after-sb-0pri discard-zero-changes;after-sb-1pri discard-secondary;after-sb-2pri call-pri-lost-after-sb;}on node1 {device /dev/drbd0;disk ${DRIVE};address ${NODE1_IP}:7788;meta-disk internal;}on node2 {device /dev/drbd0;disk ${DRIVE};address ${NODE2_IP}:7788;meta-disk internal;}
}
EOF# 创建元数据
drbdadm create-md ${DRBD_RESOURCE_NAME}# 启动DRBD资源
drbdadm up ${DRBD_RESOURCE_NAME}# 等待节点同步完成
echo '请在备用节点上运行对应脚本,然后在主节点上运行drbdadm -- --overwrite-data-of-peer primary mydrbd启动主模式'
备用节点脚本(node2_setup_drbd.sh):
保存为 node2_setup_drbd.sh
并在node2(192.168.41.102)上运行此脚本。
bash
#!/bin/bash# 设置环境变量
NODE1_IP=192.168.41.101
NODE2_IP=192.168.41.102
DRBD_RESOURCE_NAME=mydrbd
DRIVE=/dev/sdb# 安装必要的软件包
apt-get update
apt-get install -y drbd-utils# 创建DRBD资源配置文件
cat <<EOF > /etc/drbd.d/${DRBD_RESOURCE_NAME}.res
resource ${DRBD_RESOURCE_NAME} {protocol C;startup {wfc-timeout 0; # 设为'0'以进行无限期的等待连接。degr-wfc-timeout 120; # 如果AllPrimary,等待120秒。}net {allow-two-primaries yes;after-sb-0pri discard-zero-changes;after-sb-1pri discard-secondary;after-sb-2pri call-pri-lost-after-sb;}on node1 {device /dev/drbd0;disk ${DRIVE};address ${NODE1_IP}:7788;meta-disk internal;}on node2 {device /dev/drbd0;disk ${DRIVE};address ${NODE2_IP}:7788;meta-disk internal;}
}
EOF# 创建元数据
drbdadm create-md ${DRBD_RESOURCE_NAME}# 启动DRBD资源
drbdadm up ${DRBD_RESOURCE_NAME}
保存脚本之后,请将它们分别标记为可执行文件:
bash
chmod +x node1_setup_drbd.sh
chmod +x node2_setup_drbd.sh
然后,在Node1先执行第一个脚本(node1_setup_drbd.sh),在Node2执行第二个脚本(node2_setup_drbd.sh)。
在两个节点上创建配置文件和元数据后,您需要在两个节点上分别设置DRBD资源为主模式,可以通过以下命令进行:
bash
drbdadm -- --overwrite-data-of-peer primary mydrbd
请确保在执行以上操作前,您精确理解每一步骤的作用,尤其是在生产环境下使用时。还需要调整防火墙设置,以允许两个节点上的7788端口进行通讯。