当前位置: 首页 > 工具软件 > DRBD > 使用案例 >

共享存储DRBD的部署和配置

苏宜人
2023-12-01

一.  环境部署:

主机名主机地址角色磁盘
node1192.168.188.11主服务器

系统盘sda:20G

存储盘sdb:20G

node2192.168.188.12备服务器

系统盘sda:20G

存储盘sdb:20G

二.  部署DRBD,主备节点同时操作:

        1.  配置两个节点的域名解析:

两个节点都要配置
[root@node1 ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.188.11 node1
192.168.188.12 node2

        2.  配置两个节点的ssh免密钥登录:

[root@node1 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q

[root@node1 ~]# ssh-copy-id node2

[root@node2 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q

[root@node2 ~]# ssh-copy-id node1

        3.  导入源:

##两个节点同时配置
[root@node1 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

[root@node1 ~]# yum localinstall -y https://mirrors.tuna.tsinghua.edu.cn/elrepo/elrepo/el7/x86_64/RPMS/
elrepo-release-7.0-6.el7.elrepo.noarch.rpm

[root@node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com
/repo/epel-7.repo

        4.  安装DRBD软件包:

[root@node1 ~]# yum install -y drbd90-utils kmod-drbd90

        5.  启动DRBD内核模块:

[root@node1 ~]# modprobe drbd

[root@node1 ~]# echo drbd > /etc/modules-load.d/drbd.conf

        6.  查看DRBD内核是否启动:

[root@node1 ~]# lsmod | grep drbd
drbd                  606840  0 
libcrc32c              12644  2 xfs,drbd

三:在主备节点配置DRBD

        1.  配置DRBD主配置文件,主备配置文件一致:

##过滤出文件中不以"#"开头的行和空行
[root@node1 ~]# egrep -v "#|^$" /etc/drbd.d/global_common.conf 
global {
	usage-count no;
}
common {
	protocol C;  ##表示使用DRBD 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";
		local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/
notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
	}
	startup {
	}
	options {
	}
	disk {
		on-io-error detach;  ##表示发生I/O错误的节点将放弃底层设备
	}
	net {
	}
}

配置解析:
1. global 部分:此部分在配置中只允许使用一次。它通常位于 /etc/drbd.d/global_common.conf 
文件中。在单个文件配置中,它应该位于配置文件的最顶端。
2. usage-count:DRBD项目保存关于各种DRBD版本使用情况的统计信息。这是通过每次在系统上
安装新的DRBD版本时联系官方HTTP服务器来完成的。这可以通过设置 usage count no; 禁用。
默认值是 usage count ask;,每次升级DRBD时都会提示。

注意:DRBD复制模式: 1.  Protocol A:异步复制协议。一旦本地磁盘写入完成,并且复制数据包已放置在本地TCP发送缓冲区中,则认为主节点上的本地写入操作已完成。在强制故障转移的情况下,可能会发生数据丢失。备用节点上的数据在故障转移后是一致的;但是,在崩溃之前执行的最新更新可能会丢失。

                                         2.  Protocol B:内存同步(半同步)复制协议。一旦本地磁盘写入发生,并且复制数据包已到达对等节点,则认为主节点上的本地写入操作已完成。通常,在强制故障转移的情况下不会丢失任何写操作。但是,如果同时在主备节点同时 发生了电源故障,则主节点的数据存储可能会丢失最新完成的写入操作。

                                         3.  Protocol C:同步复制协议。只有在确认本地和远程磁盘写入之后,主节点上的本地写入操作才被视为完成。因此,单个节点的丢失不会导致任何数据丢失。数据丢失当然是不可避免的,即使采用这个复制协议,如果所有节点 (例如:它们的存储子系统)同时遭到不可逆转的破坏, 数据也可能丢失。

          2.  配置DRBD资源文件,主备配置文件一致:

注意:资源配置文件通常我们以" .res "结尾。

[root@node1 ~]# vim /etc/drbd.d/nfs.res 

resource nfs {  ##资源名字,必须与资源文件名一致
  disk /dev/sdb;  ##要存储的分区
  device /dev/drbd0;  ##一共有16个设备,编号为0-15
  meta-disk internal;

  on node1 {  ##节点名称,地址
    address 192.168.188.11:7789;
  }

  on node2 {  ##节点名称,地址
    address 192.168.188.12:7789;
  }
}

        3.  首次启用资源:

                1>.  创建主备节点设备元数据:

[root@node1 ~]# drbdadm create-md nfs
initializing activity log
initializing bitmap (640 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.

[root@node1 ~]# ssh node2 drbdadm create-md nfs
initializing bitmap (640 KB) to all zero
initializing activity log
Writing meta data...
New drbd meta data block successfully created.

                2>.  启动主备节点资源:

[root@node1 ~]# drbdadm up nfs 

[root@node1 ~]# ssh node2 drbdadm up nfs 

                3>.  初始设备同步,只在主节点操作

[root@node1 ~]# drbdadm primary --force nfs

                4>.  等到资源同步完成,查看资源状态:

[root@node1 ~]# drbdadm status nfs
nfs role:Primary
  disk:UpToDate
  node2 role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:64.52

[root@node1 ~]# drbdadm status nfs
nfs role:Primary
  disk:UpToDate
  node2 role:Secondary
    peer-disk:UpToDate

##到达该种状态则表示同步完成

              5>.  drbdadm命令常见操作:

[root@node1 ~]# drbdadm status resourceName  ##查看资源状态

[root@node1 ~]# drbdadm dstate resourceName  ##查看资源磁盘状态

[root@node1 ~]# drbdadm cstate resourceName  ##查看资源连接状态

[root@node1 ~]# drbdadm role resourceName  ##查看资源角色

[root@node1 ~]# drbdadm primary resourceName  ##升级资源角色

[root@node1 ~]# drbdadm secondary resourceName  ##降级资源角色

四:验证DRBD是否配置成功:

        1.  主备节点创建挂载点:

[root@node1 ~]# mkdir /data

        2.  格式化设备:

[root@node1 ~]# mkfs.xfs /dev/drbd0

        3. 将设备挂载到挂载点上:     

[root@node1 ~]# mount /dev/drbd0 /data/

        4.  向挂载的目录中放入文件:

[root@node1 ~]# cp /etc/c* /data/

[root@node1 ~]# ls /data
centos-release  centos-release-upstream  cron.deny  crontab  crypttab  
csh.cshrc  csh.login

        5.  卸载文件系统并切换为备节点,先卸载,在降级

[root@node1 ~]# umount /data 

[root@node1 ~]# drbdadm secondary nfs 

       6.  从节点上切换为主节点,先升级,再挂载

[root@node2 ~]# drbdadm primary nfs

[root@node2 ~]# mount /dev/drbd0 /data

 注意:主节点先挂载,载写入数据;先卸载,在降级。

            从节点先升级,再挂载。

      7.  在从节点上查看数据是否同步:

[root@node2 ~]# ls /data/
centos-release  centos-release-upstream  cron.deny  crontab  crypttab  
csh.cshrc  csh.login

五:主备节点设置服务开机自启服务:

[root@node1 ~]# systemctl start drbd

[root@node1 ~]# systemctl enable drbd

 类似资料: