Drbd的基本概念及简单的Drbd安装配置

Drbd(Distributed Replicated Block Device)为分布式复制块设备 是内核中的一个模块,要想让其工作起来要借助drbdadm等命令工具

Drbd类似于Raid1(mirror模式),但是Raid1的磁盘位于同一个主机上,通过总线直接连接主机,且两块磁盘必须一样大,因为所谓的镜像是按位对应同步存储的,Raid有控制芯片叫控制器(Controller),直接内置在在主板上;而通过PCI插槽提供的叫适配器(adaptor)

Drbd将位于两个主机上的不同磁盘或分区做成镜像设备,当向主节点写入时,会通过TCP/IP协议从网络上复制一份存储在备节点上

Drbd只允许两个节点,主从(primary/secondary)

主节点可以进行读写操作;而从节点不能挂载文件系统,不能进行读写

但是主从角色可以切换,且可以借助HA集群+集群文件系统构成双主模型

DRBD结构图

Drbd工作流程图分析:service服务,File System是任何进程要读取磁盘,都要向内核发起文件系统级别的调用来实现,文件系统能把数据等存入磁盘。Buffer Cache是service将数据缓存在内存中,并由Disk Scheduler取出调度排序,发往Disk Driver支配Disk Storage存储。而Raw Device则是不经由文件系统调用,直接块级别存储。DRBD则是直接在内核空间的内存与硬盘驱动之间加入一层,将从Buffer Cache提取的数据镜像一份,源数据继续经由Disk Driver支配Disk Storage存储,而镜像的数据经由TCP/IP网络通过本地网卡发往从drbd主机的drbd层交由Disk Driver支配Disk Storage存储。

DRBD的用户空间管理工具,用于管理主从drbd节点。主要使用drbdadm命令,因其更符合用户的使用习惯。而drbdsetup和drbdmeta为较接近底层的设备,所以使用较少。

DRBD的工作特性:实时,透明,设置数据同步类型

Drbd协议类型

A:数据发出去不管对方有没有收到(异步)性能好可靠性差

B:半同步

C: 数据发出去后要管对方收到后再发(同步)可靠性好但性能差

Drbd资源:定义Drbd的各种必须设置

1:资源名称

2:Drbd设备一般为/dev/drdbX 其主设备号为147,次设备号从0开始用于区分同一类型的不同设备

3:磁盘或者分区,在双方节点上,各自提供的存储设备

4:网络设备的配置,双方数据同步时所使用的网络属性如:是否加密,带宽多少。。。

命令

drbdadm 一个管理工具,配置文件为 /etc/drbd.conf 或/etc/drbd.d/*

Drbd的官方站点 https://www.linbit.com/

安装 Drbd + Corosync 实现高可用的MySql

drbd的rpm在内核版本2.6.33以上才自动加入内核功能,本文的系统版本为CentOS6.7,内核版本为2.6.32-573.el6.x86_64,所以要想使用drbd,只能编译源码,或是使用三方提供的rpm包。

[[email protected] mail]# uname -r  %%而红帽6是2.6.32的内核,最好使用第三方的RPM包

2.6.32-573.el6.x86_64

ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/

直接用yum源安装drbd

CentOS 6.x

[[email protected] mail]rpm -ivh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

[[email protected] mail]yum -y install drbd83-utils kmod-drbd83

CentOS 7.x

[[email protected] mail]rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

[[email protected] mail]yum install -y drbd84-utils kmod-drbd84

加载模块:
[[email protected] mail]modprobe drbd

准备一个大小为1G的/dev/sda5分区,但不要格式化

[[email protected] drbd-8.4.3]# vim /etc/drbd.conf %%drbd的配置文件

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf"; %包含drbd.d/global_common.conf文件
include "drbd.d/*.res"; %包含drbd.d/*.res,所有res结尾的文件都独立第一了一个drbd资
                        %源

[[email protected] drbd-8.4.3]# vim /etc/drbd.d/global_common.conf  %%此文件为主配置文件的一部分

global {   %global段为全局配置,#开头则没有启用

usage-count yes; %收集用户的drbd装机信息

# minor-count dialog-refresh disable-ip-verification

}

common {  %common段为不同的Drbd资源定义默认属性

protocol C; %默认的Drbd协议类型为C(同步)

handlers {

# These are EXAMPLE handlers only.

# They may have severe implications,

# like hard resetting the node under certain circumstances.

# Be careful when chosing your poison.

%%启动以下三项

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";

# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";

# split-brain "/usr/lib/drbd/notify-split-brain.sh root";

# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";

# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";

# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;

}

startup {

# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb

}

disk {      on-io-error detach; %%节点故障就移除

# on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes

# no-disk-drain no-md-flushes max-bio-bvecs

}

net {

cram-hmac-alg "sha1"; %数据同步时要加密,加密算法为sha1

shared-secret "mydrbdlab"; %加密的共享密钥,可以自己生成一段随机数

# sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers

# max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret

# after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork

}

syncer {

rate 100M; %数据同步的带宽为100M

}

}

要想知道更多的参数可以

[[email protected] drbd-8.4.3]# man drbd.conf

这样主配置文件就配置好了,接下来定义Drbd资源

[[email protected] drbd-8.4.3]# vim /etc/drbd.d/mydrbd.res

resource web { %%web为自己定义的Drbd资源名称

on www.rs1.com{ %%定义节点rs1

device  /dev/drbd0;%%在rs1上drbd设备名为drbd0,一般从0排起

disk /dev/sda5; %%在rs1上磁盘为sda5

address 192.168.139.2:7789; %%drbd监听在rs1的7789端口

meta-disk internal; %%drbd的元数据就在本节点内部

}

on www.rs2.com{ %%定义节点rs2

device  /dev/drbd0;

disk /dev/sda5;

address 192.168.139.4:7789;

meta-disk internal;

}

}

[[email protected] drbd-8.4.3]# scp -r /etc/drbd.* rs2:/etc/ %%将配置文件及其资源定义的文件复制到节                                    %%点rs2上

drbd.conf                  0.1KB/s   00:00

global_common.conf            1.3KB/s   00:00

mydrbd.res                  0.6KB/s   00:00

在两个节点上初始化资源

192.168.139.2

[[email protected] drbd-8.4.3]# drbdadm create-md web

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.


192.168.139.4

[[email protected] drbd-8.4.3]# drbdadm create-md web

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.


192.168.139.2 和192.168.139.4两个节点同时启动drbd


[[email protected] drbd-8.4.3]# service drbd start

[[email protected] drbd-8.4.3]# service drbd start


启动服务后两节点都处于Secondary状态,将其中一个节点设置为Primary

192.168.139.2上

[[email protected] drbd-8.4.3]# drbdadm primary --force web

或者

[[email protected] drbd-8.4.3]# drbdadm -- --overwrite-data-of-peer primary web


查看状态信息


[[email protected] drbd-8.4.3]# drbd-overview %%查看状态信息

  0:mystore  SyncSource Primary/Secondary UpToDate/Inconsistent C r----- 

    [======>.............] sync‘ed: 39.7% (3096/5128)M


同步完毕,rs1为主,rs2为从

[[email protected] drbd-8.4.3]# drbd-overview  %%查看状态信息

  0:mystore  Connected Primary/Secondary UpToDate/UpToDate C r----- 

  

也可使rs1为从节点,rs2为主节点


[[email protected] drbd-8.4.3]# drbdadm secondary web %%将192.168.139.2变为从节点

[[email protected] drbd-8.4.3]# drbdadm primary --force web %%将192.168.139.4变为主节点

 

格式化为ext4文件系统并分区

  [[email protected] drbd-8.4.3]# mke2fs -t ext4 /dev/drbd0

挂载并测试drbd

[[email protected] drbd-8.4.3]# mount /dev/drbd0 /mnt %%将drbd0进行挂载

[[email protected] drbd-8.4.3]# cd /mnt

[[email protected] drbd-8.4.3]# cp /etc/hosts ./ %%复制文件测试

[[email protected] drbd-8.4.3]# ls %%挂载成功

hosts  lost+found

这样一个简单的Drbd就制作完成

如果用Corosync+Pacemaker再配置一个HA高可用集群,将Drbd配置成一个资源,就可以实现双主模型,或者实现主从节点自动切换(可以用crm命令配置)

时间: 2024-12-24 04:34:09

Drbd的基本概念及简单的Drbd安装配置的相关文章

简单操作Zabbix安装配置与邮件报警(centos 7.4)

Zabbix官网下载地址:https://www.zabbix.com/download 实验拓扑:zabbix server端: 192.168.80.101 公网环境 centos 7.4 LAMP架构zabbix angent端: 192.168.80.102 公网环境 centos 7.4注:zabbix(音同 z?bix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix由2部分构成,zabbix server与可选组件zabbix agent

RabbitMQ简单介绍及安装使用

一.RabbitMQ简单介绍 二.安装配置1.安装环境 CentOS7 server1 190.168.3.250安装包依赖[[email protected] ~]# yum -y install gcc gcc-c++ m4 ncurses-devel openssl-devel2.安装RabbitMQ 按顺序安装:3.配置[[email protected] ~]# vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.14/ebin/rabbit.a

安装配置DRBD

定义: DRBD(Distributed Replicated Block Device) 分布式块设备复制:是linux内核存储层中的一个分布式存储系统,可利用DRBD在两台linux服务器之间共享块设备,文件系统和数据,类似于一个网络RAID1的功能 两台服务器间就算某台服务器出现断电或者宕机也不会对数据有任何影响 当将数据写入到本地主节点的文件系统时,这些数据会通过网络发送到远端另一台从节点上:本地节点和远端从节点数据通过TCP/IP协议保持同步,主节点发生故障时,远端从节点保存着相同的数

基于CentOS6.7的DRBD安装配置过程详解

一.DRBD简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.你可以把它看作是一种网络RAID.它允许用户在远程机器上建立一个本地块设备的实时镜像. 二.DRBD是如何工作的呢? (DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary).另一个主机再将数据存到自己的磁盘中.目

DRBD编译安装配置

一.简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.它允许用户在远程机器上建立一个本地块设备的实时镜像.与心跳连接结合使用,也可以把它看作是一种网络RAID. DRBD是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. DRBD Logo数据镜像:实时.透明.同步(所有服务器都成功后返回).异步(本地

DRBD源码安装配置

DRBD简介 DRBD实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核模块和相关程序而组成,通过网络通信 来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台 主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的).本地节点(主机)与远程节点(主机)的数据可 以保证实时的同步,并保证IO的一致性.所以当本地节点的主机出现

DRBD的主备安装配置

1.使用的资源:1.1 系统centos6.9 mini1.2 两台节点主机node1.node2 192.168.1.132 node1 192.168.1.124 node21.3 DRBD disk: /dev/sdb1 10G DRBD device: /dev/drbd1 DRBD resource: vz1 挂载目录 /vz/vz1 2.设置hostname,ip地址,关闭iptables,selinux 2.1 node1[[email protected] ~]# hostnam

DRBD 安装配置、工作原理及故障恢复

DRBD 安装配置.工作原理及故障恢复 一.DRBD 简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.你可以把它看作是一种网络RAID.它允许用户在远程机器上建立一个本地块设备的实时镜像. 1. DRBD是如何工作的呢? (DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondar

运维神器Chef简单介绍和安装笔记

首先大概解释一下Chef Chef有三个重要的概念:(如上图所示) 它们的合作关系大致是这样的, Workstation把资源或者说是一些要被运行的命令上传到Chef-Server上, Nodes自动通过Chef-Server拿到属于自己的执行任务到本地执行,这样可达到一个将军指挥千军万马的效果:smirk:. Chef Server 存放所有通过Workstation上传的资源,和用户等公共数据(用PostgreSQL). 可以干脆叫它为资源服务器,大家都可以与它通讯(用RabbitMQ ),