简介
DRBD(Distributed Replicated Block Device,分布式复制块设备)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。DRBD是镜像块设备,是按数据位镜像成一样的数据块。

通常将两个节点的整块磁盘(或者分区,LVM逻辑卷等设备)规划为DRBD设备。
如果primary节点宕机,secondary节点可以在高可用集群中提升成为primary节点。
当接收到数据,内核判断是发往到drbd设备的数据,存储到本机,同时将一份副本网络传输到secondary节点。
传输过程包括三种方式:异步(A),半同步(B),同步(C)。

通常作为双节点环境保持数据一致性的一种解决方案。

一 环境准备

1 操作系统
准备两个操作系统环境

建议使用多块网卡环境,将drbd的网络流量独立出来减缓业务网卡压力。
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.90.172 test1
172.16.90.174 test2

192.168.1.11  test11
192.168.1.13  test22

# cat /etc/openEuler-release
openEuler release 20.03 (LTS-SP1)
# uname -a
Linux test3 4.19.90-2012.5.0.0054.oe1.x86_64 #1 SMP Tue Dec 22 15:58:47 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/yum.repos.d/openEuler.repo
[everything]
name=everything
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler

[EPOL]
name=EPOL
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/EPOL/$basearch/
enabled=1
gpgcheck=1

# dnf install -y drbd drbd-kernel drbd-utils drbd-pacemaker drbd-udev drbd-xen drbd-bash-completion
# rpm -qa |grep drbd
drbd-bash-completion-9.5.0-5.oe1.x86_64
drbd-utils-9.5.0-5.oe1.x86_64
drbd-udev-9.5.0-5.oe1.x86_64
drbd-xen-9.5.0-5.oe1.x86_64
drbd-9.5.0-5.oe1.x86_64
drbd-kernel-9.0.27-1.oe1.x86_64
drbd-pacemaker-9.5.0-5.oe1.x86_64

# cat /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted

# systemctl stop firewalld
# systemctl disable firewalld

2 磁盘
每个操作系统中存在一个单独的磁盘用于DRBD,本文档中均为/dev/sdb设备,大小为1G
# fdisk -l /dev/sdb
Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

二 配置

说明:
磁盘设备:         /dev/sdb  1G
DRBD设备:         /dev/drbd
DRBD resource名称:r0
DRBD设备挂载点:   /test

/etc/drbd.d目录中,创建一个以.res结尾的资源文件,本文档中为/etc/drbd.d/r0.res。
两个节点上DRBD相关配置文件内容保持一致,本文档中仅增加了r0.res资源文件。
# cat /etc/drbd.d/r0.res
resource r0 {
    on test1 {
        device /dev/drbd0;
        disk /dev/sdb;
        address 192.168.1.11:7789;
        meta-disk internal;
    }
    on test3 {
        device /dev/drbd0;
        disk /dev/sdb;
        address 192.168.1.13:7789;
        meta-disk internal;
    }
}
注意:文件中使用的test1和test3分别是主机名称。

分别在两个节点初始化元数据信息
# drbdadm create-md r0
initializing activity log
initializing bitmap (32 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.

注意:
如果设备非首次使用,初始化之前使用如下命令进行清理。
# dd if=/dev/zero of=/dev/sdb bs=1M count=100

# systemctl is-enabled drbd
disabled
注意:
如果是在类似pacemaker的场景中使用DRBD作为集群资源,drbd服务的启动停止等由pacemaker控制,保持drbd服务开机自启动为disabled状态。
如果是在单独使用drbd的场景中,设置drbd服务为enable状态。

# systemctl start drbd
# systemctl status drbd

# lsmod | grep drbd
drbd_transport_tcp     24576  1
drbd                  532480  2 drbd_transport_tcp
libcrc32c              16384  4 nf_conntrack,nf_nat,drbd,sctp

通过命令 drbdsetup show 可以直接查看资源配置情况

在其中一个节点上执行如下命令,强制设置为primary,使其开始同步:
# drbdsetup primary r0 --force

primary节点上状态:
# drbdsetup status
r0 role:Primary
  disk:UpToDate
  test3 role:Secondary
    peer-disk:UpToDate

secondary节点状态:
# drbdadm status
r0 role:Secondary
  disk:UpToDate
  test1 role:Primary
    peer-disk:UpToDate

primary节点上查看详细状态:

# drbdsetup status r0 --verbose --statistics
r0 node-id:1 role:Secondary suspended:no
    write-ordering:flush
  volume:0 minor:0 disk:UpToDate quorum:yes
      size:1048508 read:1053541 written:94793 al-writes:13 bm-writes:0 upper-pending:0 lower-pending:0 al-suspended:no blocked:no
  test3 node-id:0 connection:Connected role:Secondary congested:no ap-in-flight:0 rs-in-flight:0
    volume:0 replication:Established peer-disk:UpToDate resync-suspended:no
        received:2070 sent:1069039 out-of-sync:0 pending:0 unacked:0

primary节点上格式化设备:
# mkfs.xfs -f /dev/drbd0
meta-data=/dev/drbd0             isize=512    agcount=4, agsize=65532 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=262127, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1566, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

两个节点上创建挂载目录:
mkdir -p /test

primary节点上:
# mount /dev/drbd0 /test
# mount |grep test
/dev/drbd0 on /test type xfs (rw,relatime,attr2,inode64,noquota)
# echo "hello" > /test/a.txt
# cat /test/a.txt
hello

# umount /dev/drbd0      
# drbdsetup secondary r0

secondary节点上执行操作提升为primary节点:
# drbdsetup primary r0
# drbdsetup status
r0 role:Primary
  disk:UpToDate
  hatest1 role:Secondary
    peer-disk:UpToDate

# mount /dev/drbd0 /test
# cat /test/a.txt
hello

至此,DRBD设备可以确认正常工作。

openEuler 20.03 LTS SP1发行版本DRBD初体验相关推荐

  1. 体验华为操作系统 openEuler 20.03 LTS linux

    安装华为linux openEuler 20.03 LTS 一直在用centos ,但redhat马上不再对其支持更新了,刚好华为发行了社区版linux(ps:难道是centos倒下,华为openEu ...

  2. openEuler 20.03 LTS面向RK3399移植系列(4)—验证和问题分析openEuler 20.03 LTS面向Firefly RK3399的第一个版本

    任务动机:验证openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4),分析现存问题,提炼下一步移植工作的需求. 任务描述:按照<o ...

  3. openEuler 20.03 LTS的第一个4.19内核RK3399移植版发布

    任务动机:openEuler 20.03 LTS的4.19内核版本移植开发取得阶段性成果,发布第一个版本.该版本于2020.11.24日完成,已在Firefly RK3399和OrangePi RK3 ...

  4. linux欧拉强制修改root密码,openEuler 20.03 LTS安装图文教程

    本文以图文的方式介绍安装openEuler 20.03 LTS的方法,以光盘安装为例,其他安装方式除在启动安装时的引导方式不同外,待启动安装后则安装流程相同.在安装开始前,需要保证服务器启动选项为光驱 ...

  5. 【参赛作品11】openGauss2.1.0在openEuler 20.03 LTS SP2 安装后,yum无法使用的问题解决

    作者:姜殿斌 一.环境描述 操作系统: openEuler 20.03 LTS openEuler 20.03 LTS SP2 数据库: openGauss2.1.0 软件包: openGauss-2 ...

  6. 长城 世恒DF716 openEuler 20.03 LTS SP3 FT2000 4核 升级linux-5.10.38 报错

    故障 解决 修改.config,开启配置 CONFIG_DRM_VIRTIO_GPU=m 重新编译安装 make modules -j4 make modules_install make insta ...

  7. 华为openEuler 20.03 LTS SP3 安装Docker

    两种方式: 一.方式1() 1.添加Centos源和docker镜像源: wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyu ...

  8. 循序渐进丨在openEuler 20.03操作系统上安装部署MogDB 2.1.1数据库

    关于MogDB MogDB是云和恩墨基于openGauss开源数据库的内核进行研发,推出的一款安稳易用的企业级关系型数据库,具备金融级高可用和全密态计算的极致安全.面向多核处理器的极致性能.AI自诊断 ...

  9. Kubeadm 快速搭建 k8s v1.24.1 集群(openEuler 22.03 LTS)

    kubeadm 简介 kubeadm 是 Kubernetes(以下简称 k8s)官方提供的用于快速安装部署 k8s 集群的工具,伴随 k8s 每个版本的发布都会同步更新,kubeadm 会对集群配置 ...

最新文章

  1. 北邮计算机科学技术是学硕吗,【计算机考研】2020北京邮电大学计算机科学与技术考研初试科目、参考书目、复试详情汇总...
  2. MVC的Model Binder总结
  3. 随便聊一些编程开发工具
  4. 【渝粤教育】广东开放大学 电路分析基础 形成性考核 (59)
  5. XAF-BI.Dashboard模块概述 web/win
  6. 开热点给电脑消耗大吗_你试过爬楼梯减肥吗?热量消耗大,选对姿势很重要!...
  7. 一台2003服务器上怎样设置2个网站,服务器怎样设置多站点 服务器程序 win2003+apache...
  8. Android报错:java.lang.ClassCastException: com.github.mikephil.charting.charts.PieChart cannot be cast
  9. 2016年第3本:启示录----打造用户喜爱的产品
  10. 信息与通信的数学基础——Mathematic入门
  11. bootstrap中如何使div上下、垂直居中
  12. r语言 svycoxph_生存分析的Cox回归模型(比例风险模型)R语言实现及结果解读
  13. 终结符与非终结符详述
  14. Git cherry-pick 指令总结
  15. 【Linux】gcc/g++
  16. ORACLE中分钟用mm和mi 标示区别
  17. Android 反编绎工具JEB简介及下载
  18. Install cf v6
  19. win10 安装redis 及启动命令
  20. 全国省市区县 MySQL 数据库 含行政区划编码 名称 父级行政区划编码 基于国家统计局2017年3月发布数据

热门文章

  1. 程序员应该懂的经济学概念(一)
  2. 苹果cms第三方登录QQ互联正确回调设置方法
  3. 索引的优缺点以及如何创建索引
  4. 猎豹清理大师波浪动画实现
  5. shell脚本函数返回数组
  6. mysql concat 性能_mysql 函数 concat() concat_ws()
  7. 太帅了,我用炫酷大屏展示爬虫数据
  8. CC2541的BLE协议栈构成
  9. 2021最新 SpringBoot面试题精选(附刷题小程序)
  10. jquery逼真模仿flash导航条