CentOS 7.9安装DRBD共享存储

一、DRBD简介

DRBD(Distributed Replicated Block Device)是一款基于Linux平台实现分布式复制存储系统,DRBD可以理解为就是Linux内核的驱动程序通过用户空间的管理工具实现管理,广泛用于高可用集群

DRBD内核驱动程序向Linux内核提供虚拟的块设备文件,他是DRBD的重要组成部分,用于实现读写数据到本地块设备和(1个或多个)远程镜像节点。

DRBD存在于文件系统和内核底层的I/O协议栈附近,当有io操作请求需要写入本地磁盘设备的时候,优先经过DRBD内核程序,通过其特定的算法实现数据过滤从而实现基于块设备数据同步解决方案

DRBD的三个协议:

协议A:异步复制协议

一旦本地磁盘发生写操作,同步的数据已经放置本地的tcp发送的缓冲区,则主节点的本地写操作就认为完成,继续处理新的请求

优点:效率高

缺点:当发生强制故障转移,易容易丢失数据

协议B:半同步复制协议

一旦本地本地磁盘发生写操作,且同步的数据已经通过本地的tcp/ip协议栈通道发送到Scondary节点则主节点认为本地写操作已经完成

优点:效率相对较高,丢失数据的概率低于异步方式

缺点:还是会产生数据库丢失的可能性

协议C:同步复制协议

主要当本地磁盘设备和远程的磁盘设备同时完成数据写操作之后,主节点才认为这一次的数据本地写操作成功

优点:数据安全性高,易失性小,当然如果两块磁盘在写的过程中同时发生不可逆故障则还是会产生数据丢失的可能性。

缺点:效率低

关于DRBD的主备节点(Primary/Secondary)

Primary节点对外可以实现文件系统格式化挂载,读写操作。

Scondary节点对外不能提供任何操作。不能直接进行挂载访问(除非角色切换)

参考官方文档:https://www.linbit.com/drbd-user-guide/drbd-guide-9_0-cn/

二、DRBD安装配置

1、准备工作

1)准备两台Linux Centos7机器

2)每台机挂载1个独立的磁盘

3)关闭防火墙、Selinux、完成时间同步、主机名解析

2、机器初始化(两台机相同操作)

1)关闭防火墙Selinux

[root@localhost ~]# yum -y install epel-release

[root@localhost ~]# yum -y install bash-completion bash-completion-extras

[root@localhost ~]# systemctl disable firewalld.service

[root@localhost ~]# sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config

2)设置时间同步

[root@localhost ~]# echo “*/5 * * * * /sbin/ntpdate ntp.aliyun.com &>/dev/null &” >>/var/spool/cron/root

3)设置主机名解析

# Node1

[root@localhost ~]# hostnamectl set-hostname node1

[root@localhost ~]# su –

[root@node1 ~]# echo -e “192.168.3.128\tnode1” >>/etc/hosts

[root@node1 ~]# echo -e “192.168.3.129\tnode2” >>/etc/hosts

# Node2

[root@localhost ~]# hostnamectl set-hostname node2

[root@localhost ~]# su –

[root@node2 ~]# echo -e “192.168.3.128\tnode1” >>/etc/hosts

[root@node2 ~]# echo -e “192.168.3.129\tnode2” >>/etc/hosts

3、安装DRBD(两台机相同操作)

1)安装DRBD

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

2)安装依赖和内核包

[root@node1 ~]# yum -y install make gcc glibc kernel-devel kernel-headers kernel* flex flex-doc docbook-style-xsl

[root@node1 ~]# reboot

[root@node1 ~]# wget -c https://linbit.gateway.scarf.sh//downloads/drbd/8.4/drbd-8.4.11-1.tar.gz

[root@node1 ~]# tar xf drbd-8.4.11-1.tar.gz

[root@node1 ~]# cd drbd-8.4.11-1

[root@node1 drbd-8.4.11-1]# make clean all

[root@node1 drbd-8.4.11-1]# make install

[root@node1 drbd-8.4.11-1]# modinfo drbd

[root@node1 drbd-8.4.11-1]# modprobe drbd

3)安装完成后

[root@node1 drbd-8.4.11-1]# lsmod |grep drbd

CentOS 7.9安装DRBD共享存储

[root@node2 drbd-8.4.11-1]# lsmod |grep drbd

CentOS 7.9安装DRBD共享存储

4)配置SSH免密钥

# Node1

[root@node1 drbd-8.4.11-1]# ssh-keygen -t rsa

[root@node1 drbd-8.4.11-1]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1

[root@node1 drbd-8.4.11-1]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2

# Node2

[root@node2 drbd-8.4.11-1]# ssh-keygen -t rsa

[root@node2 drbd-8.4.11-1]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1

[root@node2 drbd-8.4.11-1]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2

5)开始配置drbd资源(全局配置)

[root@node2 drbd-8.4.11-1]# cd /etc/drbd.d

[root@node1 drbd.d]# cp global_common.conf{,_bak}

[root@node1 drbd.d]# vim /etc/drbd.d/global_common.conf

global {
    usage-count yes;
}
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”;

        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 {

        wfc-timeout 120;

        degr-wfc-timeout 120;

    }

    options {

    }

    disk {

        on-io-error detach;

        resync-rate 100M;

    }

    net {

        cram-hmac-alg “sha1”;

        shared-secret “mydrbd”;

    }

}

6)配置resource资源

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

resource drbd {
  on node1 {
    device /dev/drbd0;
    disk /dev/sdb;
    address 192.168.3.128:7789;
    meta-disk internal;

  }

on node2 {

  device /dev/drbd0;

    disk /dev/sdb;

    address 192.168.3.129:7789;

    meta-disk internal;

  }

}

[root@node1 drbd.d]# scp global_common.conf drbd.res root@node2:/etc/drbd.d/

7)创建设备元数据

[root@node1 drbd.d]# drbdadm create-md drbd

8)启用资源

[root@node1 drbd.d]# drbdadm up drbd

[root@node1 drbd.d]# drbdadm status

CentOS 7.9安装DRBD共享存储

9)启动初始化全量同步(只能在其中一个节点执行)

[root@node1 drbd.d]# drbdadm primary drbd –force

[root@node1 drbd.d]# drbdadm status

CentOS 7.9安装DRBD共享存储

# 初始化完成

CentOS 7.9安装DRBD共享存储

10)格式化文件系统并挂载至服务器中

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

CentOS 7.9安装DRBD共享存储

[root@node1 drbd.d]# mkdir -p /data/drbd/

[root@node1 drbd.d]# mount /dev/drbd0 /data/drbd/

[root@node1 drbd.d]# df -Th

CentOS 7.9安装DRBD共享存储

11)验证DRBD数据同步

操作步骤:

1、创建测试文件

[root@node1 drbd.d]# mkdir -p /data/drbd/{a,b}{c,d}

[root@node1 drbd.d]# cp /etc/passwd /data/drbd/

[root@node1 drbd.d]# ll /data/drbd/

CentOS 7.9安装DRBD共享存储

2、卸载文件系统并将Node1切换为备节点

[root@node1 drbd.d]# umount /data/drbd/

[root@node1 drbd.d]# drbdadm secondary drbd

3、Node2执行以下命令确认文件

[root@node2 drbd.d]# drbdadm primary drbd

[root@node2 drbd.d]# drbdadm status

[root@node2 drbd.d]# mkdir -p /data/drbd/

[root@node2 drbd.d]# mount /dev/drbd0 /data/drbd/

CentOS 7.9安装DRBD共享存储

4、Node1升为主节点

# 先卸载Node2,然后降为备节点

[root@node2 ~]# drbdadm secondary drbd

[root@node2 ~]# drbdadm status

CentOS 7.9安装DRBD共享存储

[root@node1 drbd.d]# drbdadm primary drbd –force

[root@node1 drbd.d]# mount /dev/drbd0 /data/drbd/

[root@node1 drbd.d]# df -Th

[root@node1 drbd.d]# ll /data/drbd/

[root@node1 drbd.d]# drbdadm status

CentOS 7.9安装DRBD共享存储

原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/1932.html

(0)
admin的头像admin
上一篇 2025年1月15日 上午11:34
下一篇 2025年1月16日 下午4:34

相关推荐

  • Linux服务器PHP添加Curl扩展

    一、PHP扩展管理 1、什么是php扩展 php扩展就是php核心并不支持的功能,然后可以通过扩展的方式进行扩展PHP的功能,常见的扩展如MYSQL,gb2等等。 2、查看PHP安…

    2019年6月24日
    000
  • Linux流量监控工具iftop

    在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用i…

    2018年11月12日
    000
  • Linux系统LVM磁盘扩容(EXT4文件系统)

    一、LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个…

    2020年1月13日
    000
  • 在Linux操作系统下正确安装OpenCV的保姆级教程

    前言 我是在虚拟机上跑的 Linux 5.8.0-44-generic。 配置如下: 第一步:下载依赖文件 这一步非常重要,如果是缺少某个依赖文件,编译 过程也不会出错,但是在使用…

    2025年8月22日
    000
  • CentOS配置多个IP地址

    一、配置子网卡 1、查看当前网卡信息 [root@localhost ~]# ifconfig 2、复制网卡配置文件,创建一个新的子接口配置文件 注:网卡配置文件通常位于/etc/…

    2023年11月7日
    000
  • Linux从fork到exec揭秘进程替换的全流程

    前言 关于进程控制,从创建进程的fork,进程等待对子进程进行回收在前面的博客中都有谈到。fork创建进程:子进程与父进程共用一份代码和数据,修改时进行写实拷贝。那如果我不希望创建…

    2025年8月11日
    000
  • Linux文件权限解析

    Linux权限的用途  权限是OS用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特…

    2017年12月14日
    000
  • Linux中Netcat命令整理

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。…

    2024年6月15日
    000
  • 在Linux上安装向日葵远程工具的详细教程

    背景 有时候客户或者维护商要远程我们的Linux服务器,此时我们就可以使用向日葵远程工具来完成。安装过程也是十分的Easy!可以说有手就行,一起来看看吧。 软件下载 用你的Linu…

    2025年6月11日
    000
  • Linux系统yumdownloader命令

    一、yumdownloader简介 yumdownloader命令来自英文词组”Yum downloader”的拼写,其功能是用于从Yum存储库下载软件包。…

    2024年10月17日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注