drbd9-基于rockylinux8安装部署双主模式

drbd9-基于rockylinux8安装部署双主模式 目录1.环境描述1.1更改计算机名1.2添加hosts信息1.3查看空闲磁盘2.安装2.1首先导入elrepo安装源2.2安装DRBD软件包2.3启动DRBD内核模块3.配置磁盘4.配置4.1移除默认配置4.2创建全局配置4.3创建资源配置文件4.4初始化设备元文件4.5启动系统服务4.6设置主节点4.7在drbd02上操作启动设备4.8查看同步进程4.9如果启用了防火墙需打开7789端口5.使用5.1在drbd01上执行以下命令创建文件系统并挂载5.2卸载brdb01上文件系统并切换为备节点5.3在drbd02上执行以下命令确认文件1.环境描述安装DRBD分布式复制块设备以配置分布式存储系统。DRBD同步的对象包括磁盘分区、lvm逻辑卷、整块磁盘等。drbd官方网站http://drbd.linbit.com本示例基于如下环境。主机名public network角色OSdrbd0110.9.254.135DRBD9RockyLinux8.7drbd0210.9.254.136DRBD9RockyLinux8.7您要安装DRBD的服务器必须具有空闲的块设备。1.1更改计算机名[rootlocalhost ~]# hostnamectl set-hostname drbd01[rootlocalhost ~]# hostnamectl set-hostname drbd021.2添加hosts信息cat /etc/hosts10.9.254.135 drbd0110.9.254.136 drbd02 EOF[rootdrbd01 ~]# cat /etc/hosts 10.9.254.32 drbd01 10.9.254.33 drbd02 EOF[rootdrbd01 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.9.254.32 drbd0110.9.254.33 drbd021.3查看空闲磁盘[rootdrbd01 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 150G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 149G 0 part├─rl-root 253:0 0 111G 0 lvm /├─rl-swap 253:1 0 8G 0 lvm [SWAP]└─rl-home 253:2 0 30G 0 lvm /homesdb 8:16 0 200G 0 disksr0 11:0 1 1024M 0 rom[rootdrbd02 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 150G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 149G 0 part├─rl-root 253:0 0 111G 0 lvm /├─rl-swap 253:1 0 8G 0 lvm [SWAP]└─rl-home 253:2 0 30G 0 lvm /homesdb 8:16 0 200G 0 disksr0 11:0 1 1024M 0 rom2.安装在两个节点上都需要执行以下操作2.1首先导入elrepo安装源[rootdrbd01 ~]# yum clean all[rootdrbd01 ~]# yum makecache[rootdrbd01 ~]# yum repolistrepo id repo nameappstream Rocky Linux 8 - AppStreambaseos Rocky Linux 8 - BaseOSepel Extra Packages for Enterprise Linux 8 - x86_64extras Rocky Linux 8 - Extras[rootdrbd01 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org[rootdrbd01 ~]# yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpmInstalled:elrepo-release-8.3-1.el8.elrepo.noarchComplete![rootdrbd01 ~]# yum repolistrepo id repo nameappstream Rocky Linux 8 - AppStreambaseos Rocky Linux 8 - BaseOSelrepo ELRepo.org Community Enterprise Linux Repository - el8epel Extra Packages for Enterprise Linux 8 - x86_64extras Rocky Linux 8 - Extras2.2安装DRBD软件包[rootdrbd01 ~]# yum install -y drbd90-utils kmod-drbd90Installed:drbd90-utils-9.28.0-1.el8.elrepo.x86_64kernel-core-4.18.0-553.8.1.el8_10.x86_64kmod-drbd90-9.1.21-1.el8_10.elrepo.x86_64Complete![rootdrbd01 ~]# yum -y install wget vim net-tools lvm2Upgraded:device-mapper-8:1.02.181-14.el8.x86_64device-mapper-event-8:1.02.181-14.el8.x86_64device-mapper-event-libs-8:1.02.181-14.el8.x86_64device-mapper-libs-8:1.02.181-14.el8.x86_64lvm2-8:2.03.14-14.el8.x86_64lvm2-libs-8:2.03.14-14.el8.x86_64wget-1.19.5-11.el8.x86_64Complete![rootdrbd01 ~]# yum -y install kernel*Installed:annobin-11.13-2.el8.x86_64atk-2.28.1-1.el8.x86_64avahi-libs-0.7-27.el8.x86_64bison-3.0.4-10.el8.x86_64cairo-1.15.12-6.el8.x86_64cups-libs-1:2.2.6-60.el8_10.x86_64dejavu-fonts-common-2.35-7.el8.noarchdejavu-sans-fonts-2.35-7.el8.noarchdwz-0.12-10.el8.x86_64efi-srpm-macros-3-3.el8.noarchflex-2.6.1-9.el8.x86_64fontconfig-2.13.1-4.el8.x86_64fontpackages-filesystem-1.44-22.el8.noarchfribidi-1.0.4-9.el8.x86_64gcc-plugin-annobin-8.5.0-22.el8_10.x86_64gdk-pixbuf2-2.36.12-6.el8_10.x86_64gdk-pixbuf2-modules-2.36.12-6.el8_10.x86_64ghc-srpm-macros-1.4.2-7.el8.noarchgo-srpm-macros-2-17.el8.noarchgraphite2-1.3.10-10.el8.x86_64gtk-update-icon-cache-3.22.30-11.el8.x86_64gtk2-2.24.32-5.el8.x86_64harfbuzz-1.7.5-4.el8.x86_64hicolor-icon-theme-0.17-2.el8.noarchjasper-libs-2.0.14-5.el8.x86_64jbigkit-libs-2.1-14.el8.x86_64kernel-4.18.0-553.8.1.el8_10.x86_64kernel-abi-stablelists-4.18.0-553.8.1.el8_10.noarchkernel-cross-headers-4.18.0-553.8.1.el8_10.x86_64kernel-debug-4.18.0-553.8.1.el8_10.x86_64kernel-debug-core-4.18.0-553.8.1.el8_10.x86_64kernel-debug-devel-4.18.0-553.8.1.el8_10.x86_64kernel-debug-modules-4.18.0-553.8.1.el8_10.x86_64kernel-debug-modules-extra-4.18.0-553.8.1.el8_10.x86_64kernel-devel-4.18.0-553.8.1.el8_10.x86_64kernel-doc-4.18.0-553.8.1.el8_10.noarchkernel-modules-4.18.0-553.8.1.el8_10.x86_64kernel-modules-extra-4.18.0-553.8.1.el8_10.x86_64kernel-rpm-macros-131-1.el8.noarchkernelshark-2.7-10.el8.x86_64libX11-1.6.8-8.el8.x86_64libX11-common-1.6.8-8.el8.noarchlibXau-1.0.9-3.el8.x86_64libXcomposite-0.4.4-14.el8.x86_64libXcursor-1.1.15-3.el8.x86_64libXdamage-1.1.4-14.el8.x86_64libXext-1.3.4-1.el8.x86_64libXfixes-5.0.3-7.el8.x86_64libXft-2.3.3-1.el8.x86_64libXi-1.7.10-1.el8.x86_64libXinerama-1.1.4-1.el8.x86_64libXrandr-1.5.2-1.el8.x86_64libXrender-0.9.10-7.el8.x86_64libdatrie-0.2.9-7.el8.x86_64libjpeg-turbo-1.5.3-12.el8.x86_64libthai-0.1.27-2.el8.x86_64libtiff-4.0.9-31.el8.x86_64libxcb-1.13.1-1.el8.x86_64m4-1.4.18-7.el8.x86_64make-1:4.2.1-11.el8.x86_64ocaml-srpm-macros-5-4.el8.noarchopenblas-srpm-macros-2-2.el8.noarchpango-1.42.4-8.el8.x86_64perl-Carp-1.42-396.el8.noarchperl-Data-Dumper-2.167-399.el8.x86_64perl-Digest-1.17-395.el8.noarchperl-Digest-MD5-2.55-396.el8.x86_64perl-Encode-4:2.97-3.el8.x86_64perl-Errno-1.28-422.el8.x86_64perl-Exporter-5.72-396.el8.noarchperl-File-Path-2.15-2.el8.noarchperl-File-Temp-0.230.600-1.el8.noarchperl-Getopt-Long-1:2.50-4.el8.noarchperl-HTTP-Tiny-0.074-3.el8.noarchperl-IO-1.38-422.el8.x86_64perl-IO-Socket-IP-0.39-5.el8.noarchperl-IO-Socket-SSL-2.066-4.moduleel8.9.01517e71a7a62.noarchperl-MIME-Base64-3.15-396.el8.x86_64perl-Mozilla-CA-20160104-7.moduleel8.9.015210101edce.noarchperl-Net-SSLeay-1.88-2.moduleel8.9.01517e71a7a62.x86_64perl-PathTools-3.74-1.el8.x86_64perl-Pod-Escapes-1:1.07-395.el8.noarchperl-Pod-Perldoc-3.28-396.el8.noarchperl-Pod-Simple-1:3.35-395.el8.noarchperl-Pod-Usage-4:1.69-395.el8.noarchperl-Scalar-List-Utils-3:1.49-2.el8.x86_64perl-Socket-4:2.027-3.el8.x86_64perl-Storable-1:3.11-3.el8.x86_64perl-Term-ANSIColor-4.06-396.el8.noarchperl-Term-Cap-1.17-395.el8.noarchperl-Text-ParseWords-3.30-395.el8.noarchperl-Text-TabsWrap-2013.0523-395.el8.noarchperl-Time-Local-1:1.280-1.el8.noarchperl-URI-1.73-3.el8.noarchperl-Unicode-Normalize-1.25-396.el8.x86_64perl-constant-1.33-396.el8.noarchperl-interpreter-4:5.26.3-422.el8.x86_64perl-libnet-3.11-3.el8.noarchperl-libs-4:5.26.3-422.el8.x86_64perl-macros-4:5.26.3-422.el8.x86_64perl-parent-1:0.237-1.el8.noarchperl-podlators-4.11-1.el8.noarchperl-srpm-macros-1-25.el8.noarchperl-threads-1:2.21-2.el8.x86_64perl-threads-shared-1.58-2.el8.x86_64pixman-0.38.4-4.el8.x86_64python-rpm-macros-3-45.el8.noarchpython-srpm-macros-3-45.el8.noarchpython3-rpm-macros-3-45.el8.noarchqt5-srpm-macros-5.15.3-1.el8.noarchredhat-rpm-config-131-1.el8.noarchrust-srpm-macros-5-2.el8.noarchtrace-cmd-2.7-10.el8.x86_64zip-3.0-23.el8.x86_64Complete![rootdrbd01 ~]# uname -aLinux drbd01 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 17:10:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux2.3启动DRBD内核模块[rootdrbd01 ~]# modprobe drbd[rootdrbd01 ~]# echo drbd /etc/modules-load.d/drbd.conf3.配置磁盘[rootdrbd01 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 150G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 149G 0 part├─rl-root 253:0 0 111G 0 lvm /├─rl-swap 253:1 0 8G 0 lvm [SWAP]└─rl-home 253:2 0 30G 0 lvm /homesdb 8:16 0 200G 0 disksr0 11:0 1 1024M 0 rom[rootdrbd01 ~]# fdisk /dev/sdb[rootdrbd01 ~]# pvcreate /dev/sdb1Physical volume /dev/sdb1 successfully created.[rootdrbd01 ~]# vgcreate datavg /dev/sdb1Volume group datavg successfully created[rootdrbd01 ~]# lvcreate -l 100%free -n datalv datavgLogical volume datalv created.[rootdrbd01 ~]# mkfs.xfs -K /dev/datavg/datalv4.配置4.1移除默认配置在两个节点上都需要执行以下操作[rootdrbd01 ~]# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig4.2创建全局配置在两个节点上都需要执行以下操作cat /etc/drbd.d/global_common.confglobal {usage-count no;}common {net {protocol C;}}EOF[rootdrbd01 ~]# vim /etc/drbd.d/global_common.confglobal {usage-count no;}common {net {protocol C;}}4.3创建资源配置文件在两个节点上都需要执行以下操作cat /etc/drbd.d/drbd0.resresource drbd0 {disk /dev/sdb;device /dev/drbd0;meta-disk internal;on drbd01 {address 10.9.254.32:7789;}on drbd02 {address 10.9.254.33:7789;}}EOF[rootdrbd01 ~]# vim /etc/drbd.conf# You can find an example in /usr/share/doc/drbd.../drbd.conf.examplebecome-primary-on both;# You can find an example in /usr/share/doc/drbd.../drbd.conf.example#include drbd.d/global_common.conf;#include drbd.d/*.res;global { usage-count no; }common { protocol C;}resource r0 {net {protocol C;allow-two-primaries yes;#fencing resource-and-stonith;}startup {become-primary-on both;}disk {#fencing resource-and-stonith;}handlers {# Make sure the other node is confirmed# dead after this!outdate-peer /sbin/kill-other-node.sh;}on drbd01 {device /dev/drbd0;disk /dev/datavg/datalv;address 10.9.254.135:7789;meta-disk internal;}on drbd02 {device /dev/drbd0;disk /dev/datavg/datalv;address 10.9.254.136:7789;meta-disk internal;}}4.4初始化设备元文件在两个节点上都需要执行以下操作[rootdrbd01 ~]# drbdadm create-md r0md_offset 214744166400al_offset 214744133632bm_offset 214737580032Found some data This might destroy existing data!Do you want to proceed?[need to type yes to confirm] yesinitializing activity loginitializing bitmap (6400 KB) to all zeroWriting meta data...New drbd meta data block successfully created.4.5启动系统服务在两个节点上都需要执行以下操作[rootdrbd01 ~]# systemctl start drbd[rootdrbd01 ~]# systemctl enable drbdCreated symlink from /etc/systemd/system/multi-user.target.wants/drbd.service to /usr/lib/systemd/system/drbd.service.4.6设置主节点在两个节点上执行以下操作[rootdrbd01 ~]# drbdadm down drbd0[rootdrbd01 ~]# drbdadm up drbd0[rootdrbd01 ~]# drbdadm primary drbd0drbd0: State change failed: (-2) Need access to UpToDate dataCommand drbdsetup primary drbd0 terminated with exit code 17如果启用主节点命令失败需要使用以下命令[rootdrbd01 ~]# drbdadm primary drbd0 --force4.7在drbd02上操作启动设备在drbd02节点上执行以下操作[rootdrbd02 ~]# drbdadm down drbd0[rootdrbd02 ~]# drbdadm up drbd04.8查看同步进程在两个节点上都需要执行以下操作[rootdrbd01 ~]# cat /proc/drbdversion: 9.0.20-1 (api:2/proto:86-115)GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild, 2019-10-17 20:27:56Transports (api:16): tcp (9.0.20-1)4.9如果启用了防火墙需打开7789端口在两个节点上都需要执行以下操作[rootdrbd01 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source addressip_address port port7789 protocoltcp accept[rootdrbd01 ~]#firewall-cmd --reload5.使用5.1在drbd01上执行以下命令创建文件系统并挂载在drbd01节点上执行以下操作[rootdrbd01 ~]# mkfs.xfs /dev/drbd0meta-data/dev/drbd0 isize512 agcount4, agsize3276698 blks sectsz512 attr2, projid32bit1 crc1 finobt0, sparse0data bsize4096 blocks13106791, imaxpct25 sunit0 swidth0 blksnaming version 2 bsize4096 ascii-ci0 ftype1log internal log bsize4096 blocks6399, version2 sectsz512 sunit0 blks, lazy-count1realtime none extsz4096 blocks0, rtextents0[rootdrbd01 ~]# mount /dev/drbd0 /mnt[rootdrbd01 ~]# mount/dev/drbd0 on /mnt type xfs (rw,relatime,attr2,inode64,noquota)创建测试文件[rootdrbd01 ~]# touch /mnt/file{1..3}[rootdrbd01 ~]# ls -l /mnttotal 0-rw-r--r-- 1 root root 0 Feb 26 17:23 file1-rw-r--r-- 1 root root 0 Feb 26 17:23 file2-rw-r--r-- 1 root root 0 Feb 26 17:23 file35.2卸载brdb01上文件系统并切换为备节点[rootdrbd01 ~]# umount /mnt[rootdrbd01 ~]# drbdadm secondary drbd05.3在drbd02上执行以下命令确认文件[rootdrbd02 ~]# drbdadm primary drbd0[rootdrbd02 ~]# mount /dev/drbd0 /mnt[rootdrbd02 ~]# ls -l /mnttotal 0-rw-r--r-- 1 root root 0 Feb 26 17:23 file1-rw-r--r-- 1 root root 0 Feb 26 17:23 file2-rw-r--r-- 1 root root 0 Feb 26 17:23 file3