当前位置: 澳门新濠3559 > 操作系统 > 正文

使之互相解析的test01和test02为eth2接口IP,DRBD需要

时间:2019-12-08 05:50来源:操作系统
drbd的简要介绍、同步机制和装置见另生机勃勃篇文章:drbd(后生可畏卡塔尔国:简单介绍、同步机制和设置。 CentOS 6.5安装配备DRBD DRBD(Distributed Replicated Block Device) Distributed Replicated Blo

drbd的简要介绍、同步机制和装置见另生机勃勃篇文章:drbd(后生可畏卡塔尔国:简单介绍、同步机制和设置。

CentOS 6.5安装配备DRBD

DRBD(Distributed Replicated Block Device)

Distributed Replicated Block Device(DRBD卡塔尔(قطر‎是二个用软件完毕的、无分享的、服务器之间镜像块设备内容的积攒复制施工方案。

1.条件介绍

两台Centos6.5

test01 eth0 192.168.1.88

ech1 192.168.10.88(用作DRBD)

两硬盘 /dev/sda /dev/sdb

test01 eth0 192.168.1.99

ech1 192.168.10.99(用作DRBD)

两硬盘 /dev/sda /dev/sdb

##添加yum源(163yum)

cd /etc/yum.repos.d/

使之互相解析的test01和test02为eth2接口IP,DRBD需要构建在底层设备之上。wget

sed -i '/mirrorlist/d' CentOS-Base-163.repo

sed -i '/[addons]/,/^$/d' CentOS-Base-163.repo

sed -i 's/$releasever/6/' CentOS-Base-163.repo

sed -i 's/RPM-GPG-KEY-CentOS-5/RPM-GPG-KEY-CentOS-6/' CentOS-Base-163.repo

#清理同仁一视复生成yum缓存

yum clean metadata

yum makecache

#######注意事项

(1) 改正/etc/hosts文件 。使之并行深入分析的test01和test02为eth2接口IP。

(2) 关闭selinux(setenforce 0)关闭iptables (service iptables stop)或然写入法规。

2.DRBD安装

(1) 首先大家要晋升内核,进级之后大家重启 yum -y update kernel*

yum install kernel-devel 这里请小心要加载新的根本

(2) rpm -Uvh

(3) 安装DRBD yum -y install drbd83-utils kmod-drbd8

(4) 加载DRBD模块到内核 modprobe drbd

(5) 检验DRBD是不是安装成功 lsmod | grep drbd #lsmod = list modules

%%%%%kernel*不晋级的话 恐怕会导致加载DRBD模块到基本战败。

(6) modprobe -l | grep -i drbd 能够查阅路线

安装实现后会在/etc/init.d/drbd生成运行脚本

3.起头化磁盘

(1) 首先接受fdisk –l 鲜明你新加虚构磁盘的盘号

(2) 使用fdisk /dev/盘号 实行分区无需格式化

4.DRBD配置

(DRBD的安排文件注重分三个比分:global、common和resource。在运转的时候暗中认可读取配置文件的路子是/etc/drbd.conf,这几个文件叙述了DRBD的部事务所署参数以致设备与硬盘分区的照射关系,暗中同意情状下是空的,可是在DRBD的源代码包中含有了安顿文件的样例)

通常情状下global_common.conf(这一次实验文件所在目录/etc/drbd.d/)文件仅包涵global和common部为分配置(精通全局配置),在/etc/drbd.d/*.res的公文定义于三个能源(驾驭为主机定义)。

实际能够将DRBD配置结合到drbd.conf文件中,也就那样做在财富超级多的情形下会变得胡说八道。

(1) 此次选拔分布式配置首先大家来配置/etc/drbd.d/global_common.conf

剧情如下:

global {

usage-count no; #是或不是到场DRBD使用者总结,默许是参预

}

common {

syncer {rate 200M;} #主节点和备用节点同步时最大的网络速率

protocol C; #动用DRBD的第三种合作左券,表示采纳远程主机的写入确认后感到写入达成

handlers {

pri-on-incon-degr "echo o > /proc/sysrq-trigger ;halt -f";

pri-lost-after-sb "echo o > /proc/sysrq-trigger ;halt -f";

local-io-error "echo o >/proc/sysrq-trigger ;halt -f";

fence-peer "/usr/lib64/heartbeat/drbd-peer-outdater -t 5";

pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert'root";

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

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

}

net { #DRBD同步时使用的印证措施和密码

cram-hmac-alg "sha1";

shared-secret "MySQL-HA";

}

disk { #行使dpod效率(drbd outdate-peer daemon)保障数据在一块时无法扩充切换

on-io-error detach;

fencing resource-only;

}

startup {

wfc-timeout 120;

degr-wfc-timeout 120;

}

}

(2) 其次我们在drbd.d目录下开创以.res为后缀的公文,此次创立的文件是drbd.res目录是/etc/drbd.d/

内容如下:(两台同临时间卡塔尔(قطر‎

resource r0 { #概念财富名叫r0

on test01 { #种种主机的表明以on初阶 前面是主机名hostname

device /dev/drbd0; #概念DRBD使用磁盘的逻辑路线

disk /dev/sdb1; #/dev/drbd0 使用的磁盘分区

address 192.168.1.13:7788; #设置DRBD的监听端口,与另大器晚成台主机通讯

meta-disk internal; #DRBD元数据寄存方式 internal 内部

}

on test02 {

device /dev/drbd0;

disk /dev/sdb1;

address 192.168.1.12:7788;

meta-disk internal;

}

}

(3) 创设haclient组并设置权限 原因是:大家会选取drbd-peer-outdater fence-peer程序。使用该机制dopd心跳插件程序,就需求能够调用drbdsetup和drbdmeta根特权。

一声令下如下:(两台同有时间卡塔尔(英语:State of Qatar)

groupadd haclient

chgrp haclient /sbin/drbdsetup

chmod o-x /sbin/drbdsetup

chmod u+s /sbin/drbdsetup

chgrp haclient /sbin/drbdmeta

chmod o-x /sbin/drbdmeta

chmod u+s /sbin/drbdmeta

(4) 在开发银行DB瑞鹰D早前,必要各自在两台主机上的钦点分区(这里是sdb4)上创办提供DRBD记录新闻的数据块

drbdadm create-md r0(r0表示从前定义的财富)或许试行drbdadm create-md all

无可批驳的唤醒是:

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

%%%%%%%%%%drbdadm create-md r0: exited with code 40

搞定办法:开端化磁盘文件格式, dd if=/dev/zero bs=1M count=1 of=/dev/sdb; sync

(5) 在八个节点上运转DRBD服务 服务脚本位于/etc/init.d/drbd

/etc/init.d/drbd start

(6) 执行cat /proc/drbd

输出内容如下

version: 8.3.16 (api:88/proto:86-97)

GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by [email protected], 2014-11-24 14:51:37

0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:10482024

输出解释:

ro表示剧中人物新闻,第一遍运维DRBD时,多个节点默许都处于Secondary状态

ds代表磁盘状态音信,“Inconsistent/Inconsistent”即 “不相仿/不相似”状态表示三个节点的磁盘数据不雷同

ns表示网络发送的多寡包音讯

dw代表磁盘写音讯

dr代表磁盘读音讯

(7) 设置主用节点在暗中认可意况下并未主用节点和备用节点之分因而须要安装七个主机的次第,接纳供给设置为主用节点的主机施行以下命令

drbdsetup /dev/drbd0 primary -o 也足以实践以下命令 drbdadm -- --overwrite-data-of-peer primary all

实施之后须要设置哪些主用节点就足以使用另一条命令

/sbin/drbdadm primary r0 或者/sbin/drbdadm primary all

稍等片刻后翻看/proc/drbd

输出如下:

version: 8.3.16 (api:88/proto:86-97)

GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by [email protected], 2014-11-24 14:51:37

0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

ns:10482024 nr:0 dw:0 dr:10482696 al:0 bm:640 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

ro的意况形成Primary/Secondary

ds状态也成为UpToDate/UpToDate 表示实时同步

(8) 挂载DRBD设备在主节点上挂载以下操作

mkfs.ext4 /dev/drbd0

mount /dev/drbd0 /mnt (这里是挂载到mnt下基于供给活动挂载卡塔尔国

(9) 测量检验DRBD数据镜像

在主节点卸载磁盘分区,然后奉行

[[email protected] ~]#drbdadm secondary all

风度翩翩经不实践这几个命令,直接在备用节点实践切换成主节点的下令,会报错:

2: State change failed: (-1) Multiple primaries not allowed by config

Command 'drbdsetup 2 primary' terminated with exit code 11

继之,在备用节点施行

[[email protected] ~]#drbdadm primary all

聊起底在备用节点挂载磁盘分区即可:

[[email protected] ~]#mount /dev/drbd0 /mnt

3、注意点

1)mount drbd设备在此之前必需把器材切换成primary状态。

2)三个节点中,同不常刻只可以有生龙活虎台处于primary状态,另风度翩翩台处于secondary状态。

3)处于secondary状态的服务器上不可能加载drbd设备。

4)主备服务器同步的八个分区大小最棒同风华正茂,这样不至于浪费磁盘空间,因为drbd磁盘镜像也就是互连网raid 1。

DRBD的管住爱惜

  1. 创建DRBD资源

安顿好drbd今后,就须要运用命令在dbserver1和dbserver2上创立构造的drbd能源,使用如下命令:

drbdadm create-md r0# r0为结构文件中定义的资源名

  • DRBD的启航和终止

/etc/rc.d/init.d/drbd start#启动drbd

/etc/rc.d/init.d/drbd stop#停止drbd

/etc/rc.d/init.d/drbd restart#重启drbd

  • 查看DRBD状态

watch -n 1 cat /proc/drbd

/etc/init.d/drbd status

以上三种艺术都能够查阅drbd的情事

  • 设置当前节点为主节点,并张开格式化和挂载

drbdadm -- --overwrite-data-of-peer primary all

mkfs.ext3 /dev/drbd0

mkdir /drbd

mount /dev/drbd0 /drbd

挂在后可未来/drbd目录写入一些测量检验数据,看看是或不是能协同到从节点上。

  • 搬迁mysql的数据到drdb(如果你的mysql已经在该服务器上安装好了卡塔尔国

DRBD已经安装还要能平常同步了,那么大家接下去要做的正是将本机的已安装的mysql的数目迁移到drbd上,这里为了轻便就不构思新装置数据库的动静了,因为新安装的时候只须要将数据目录钦定到drbd中并将my.cnf配置文件放到drbd中就可以。具体的数据迁移手续如下:

  1. 关闭dbserver1和dbserver2的mysql,/etc/rc.d/init.d/mysqld stop

  2. 在dbserver1上成立贮存数据库数据的目录:mkdir /drbd/dbdata

  3. 在dbserver1将配备文件放到drbd目录中:

mv /etc/my.cnf /drbd/dbdata/

删除dbserver2上的/etc/my.cnf,rm -f /etc/my.cnf

在dbserver1和dbserver2上试行如下命令创造软链接。

ln -s /drbd/dbdata/my.cnf /etc/my.cnf

  1. 修正/etc/my.cnf的多寡目录指向/drbd/dbdata

  2. 将原先的mysql数据文件移动到/drbd/dbdata

  3. 执行chown -R mysql.mysql /drbd/dbdata

  4. 启动mysql

  • 手工业切换DRBD

在未曾安装配备drbd此前,drbd是无法自动切换的,大家能够写出进度来加强对drbd的知情,也更能通晓heartbeat的做事流程,上面是手工业切换的步骤:

  1. 在dbserver1上停止mysql,/etc/rc.d/init.d/mysqld stop。

  2. 在dbserver1上执行umount /dev/drbd0。

  3. 在dbserver1上举办drbdadm secondary all切换来从格局。当五个节点都以secondary形式的时候才足以将dbserver2设置成primary。

  4. 在dbserver2上实行drbdadmprimary all,将dbserver2进步为主情势,并洞察/proc/drbd是或不是平日。

  5. 在dbserver2上执行mount /dev/drbd0 /drbd挂在文件系统。

  6. 启动dbserver2的mysql,/etc/rc.d/init.d/mysqld start。

注意:dbserver1和dbserver2上的mysql客户的uid和gid要生机勃勃致。不然切换后会招致mysql数据目录的属主不许确而运行退步。

  • 骨干切换

主切换来从,需求先卸载文件系统,再实行降级为从的下令:

umount /dev/drbd0

drbdadm secondary all

从切换来主,要先举行升级成主的授命然后挂在文件系统:

drbdadmprimary all假使不成事drbdsetup /dev/drbd0 primary -o

mount /dev/drbd0 /drbd/

  • DRBD脑裂后的拍卖

当DRBD现身脑裂后,会引致drbd两侧的磁盘分歧等,管理办法如下:

在规定要作为从的节点上切换到secondary,并废弃该财富的数额:

drbdadm secondary r0

drbdadm -- --discard-my-data connect r0

在要作为primary的节点重新连接secondary(假若那几个节点当前的连接情形为WFConnection的话,能够回顾),使用如下命令连接:

drbdadm connect r0

6.5安装配置DRBD DRBD(Distributed Replicated Block Device卡塔尔(英语:State of Qatar) Distributed Replicated Block Device(DRBD卡塔尔(قطر‎是二个用软件完毕的、无分享的、服务器之间镜像块设...

哦,有个别是间接摘自别人的博客,更加的多的是manpage,不违背法律法规啊。笔者的就没怎么版权证明了,GPL

1. 闭馆iptables,校勘selinux,时间同步等
[root@mysql_node1 ~]# /etc/init.d/iptables stop
[root@mysql_node1 ~]# chkconfig iptables off
[root@mysql_node1 ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
设置每两分钟进行一次时间同步
crontab -e
*/2 * * * * /usr/sbin/ntpdate cn.pool.ntp.org > /tmp/ntp_log.txt

本文所述为drbd8.4的配置,和8.4本子在此之前的本子,以致drbd9版本的异样都相当的大。

DistributedReplicatedBlockDevice(DRBD卡塔尔(قطر‎是风流洒脱种基于软件的,无分享,复制的积存应用方案,在服务器之间的对块设备硬盘,分区,逻辑卷等)举办镜像。DRBD专门的学问在根本个中的,类

2. 升任内核模块

进步成功后,供给再行启航CentOS

[root@mysql_node1 ~]# yum install kernel* -y

图片 1

Kernel

1.drbd布局文件

drbd的主配置文件/etc/drbd.conf,为了管住的便捷性,在这里文件中使用了include指令钦点了带有的布局文件段,默许的是在/etc/drbd.d/目录下。在这里目录有全局配置文件global_common.conf和别的安顿文件*.res文件。当中在主配置文件中include全局配置文件的指令只可以现身四个,且必得出以后最前头。

五个节点的布局文件应竭尽完全生龙活虎致。

/usr/share/doc/drbd-版本/下有drbd.conf的样例配置文件。

以下是global_common.conf的结构。

global {
usage-count yes;  # 是否参加drbd的使用者统计,默认此选项为YES
}

common {      # common段定义每一个资源从此继承的参数,非必须,但建议将多个资源共享的参数定义在此以降低配置文件的复杂度
        handlers {
}
        startup {
        }
        options {
        }
        disk {
}
        net {
        }
}

全局配置改进如下:

global {
        usage-count no;
}

common {
handlers{       # 定义出现以下问题(如splitbrain或out-of-sync错误)时处理策略
          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";
          split-brain "/usr/lib/drbd/notify-split-brain.sh root";
          out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
}
        disk {
              on-io-error detach; # 当发生io错误时,直接拔除备节点设备
              resync-rate 600M;
        }
       # syncer {       # 注意,8.4版本已不支持该选项,要配置相关项,参见https://docs.linbit.com/docs/users-guide-8.4/#s-recent-changes-config
       #    rate 10M;   # re-sync速率,官方建议设置为网络IO和磁盘IO能力最小者的30%
       #    verify-alg crc32c;  # 用于校验block是否一致
        }
        protocol C; # 定义使用C协议,即同步复制。可不定义,此为默认
}

再新建三个配置文件data1.res,里面定义能源。

resource data1 {   # 定义资源名称
  on drbd1.longshuai.com {   # 指定在drbd1.longshuai.com节点上,节点名要和uname -n一致 
    device    /dev/drbd0;    # 指定drbd设备,0是其此设备号
    disk      /dev/sdb5;     # 指定要同步的数据分区
    address   192.168.100.51:7788; # 指定监听用来同步数据的地址和端口,此处指定为数据同步专用地址eth1
    meta-disk /dev/sdb1;  
}
  on drbd2.longshuai.com {
    device    /dev/drbd0;
    disk      /dev/sdb5;
    address   192.168.100.52:7788;
    meta-disk /dev/sdb1;
  }
}

要么简化为如下:

resource data1 {
    device    /dev/drbd0;
    disk      /dev/sdb5;
    meta-disk /dev/sdb1[0];
    on drbd1.longshuai.com {
        address   192.168.100.51:7788;
    }
    on drbd2.longshuai.com {
        address   192.168.100.52:7788;
    }
}

resource段用于定义drbd资源,每一个财富日常定义在多个独立的坐落于/etc/drbd.d目录中的以.res结尾的文本中。财富在概念时必得为其取名,名字能够由非空白的ASCII字符组成。每八个财富段的概念中起码要含有多少个节点,别的参数均能够从common段或drbd的默许中张开持续。

里面上述配置文件的meta-disk有三种记录方式:internal/device/device[index_num]。此中不管是哪一类方法,metadata存放的分区不能格式化,哪怕使用internal时metadata和日常data在同三个分区也无法格式化该分区。

internal是将元数据也写入到数量分区的尾部,即数据和元数据同分区。假诺内定的device未有给定index时,则表示元数据存款和储蓄到该器具中。借使某节点钦定device[index_num],那么钦命两回元数据分区索引就非得高于128M的好几倍,比如上述文件中drbd1.longshuai.com节点钦命了/dev/sdb1[0],那么sdb1就务须当先128M,假如那个时候别的财富的节点也钦赐了同样台服务器的/dev/sdb1[1],则钦命了三遍就非得超过256M。钦点为internal和device时,元数据区的朗朗上口是drbd自行总括的。

on hostname段中,hostname必须和uname -n同生龙活虎,因为drbd默许是依照主机名进行深入分析的。可是,drbd帮衬基于ip地址的剖释,那时drbd根据ip地址举行漂移,ip地址在哪个主机上,就剖判到哪些主机上。具体内容见官方手册Floating peers。

似于生龙活虎种驱动模块。DRBD职业的位置在文件系统的buffercache和磁盘调整器之间,通过tcp/ip发给别的风度翩翩台主机到对方的tcp/ip最后发送给对方的drbd,再由对方的drbd存款和储蓄在地点对应磁

3. 增加磁盘,举行磁盘分区

例如说加多2GB的磁盘sdb,当中分区sdb1作为drbd的元数据调换区(无需格式化),分区sdb2作为数据的交流区(需求格式化文件系统)

[root@mysql_node1 ~]# fdisk /dev/sdb
[root@mysql_node1 ~]# fdisk -l
Disk /dev/sdb: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders
Units = cylinders of 352 * 512 = 180224 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00045fd1
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        5959     1048776   83  Linux
/dev/sdb2            5960       11915     1048256   83  Linux

2.创设metadata块(开头化卡塔尔国并思谋metadata区的大小

drbdadm create-md [all|resource_names]

两节点都初阶化。

[root@drbd1 drbd.d]# drbdadm create-md data1
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.

最先化成功后,能够利用下边几个指令来获得drbd的metadata区新闻。

[root@drbd1 ~]# drbdadm show-gi data1

       +--<  Current data generation UUID  >-
       |               +--<  Bitmap's base data generation UUID  >-
       |               |                 +--<  younger history UUID  >-
       |               |                 |         +-<  older history  >-
       V               V                 V         V
0000000000000004:0000000000000000:0000000000000000:0000000000000000:0:0:0:0:0:0:0
                                                                    ^ ^ ^ ^ ^ ^ ^
                                      -<  Data consistency flag  >--+ | | | | | |
                             -<  Data was/is currently up-to-date  >--+ | | | | |
                                  -<  Node was/is currently primary  >--+ | | | |
                                  -<  Node was/is currently connected  >--+ | | |
         -<  Node was in the progress of setting all bits in the bitmap  >--+ | |
                        -<  The peer's disk was out-dated or inconsistent  >--+ |
      -<  This node was a crashed primary, and has not seen its peer since   >--+

flags: Secondary, StandAlone, Inconsistent
meta-data: clean
zero size device -- never seen peer yet?

从地点命令的结果中,能够看看数据的代数,还是能够收获一些节点状态音信。

关于drbd的代数,它在drbd的内部机制中,用于得以实现:
(1卡塔尔国.判别两节点是或不是是同两个集群的节点。也等于说,对方节点是否上下一心的对端节点。因为有望现身意外连接,却不是协调对端的景况。
(2卡塔尔(英语:State of Qatar).推断节点设备是或不是须要全体再一次联合(re-sync卡塔尔只怕局地重新联合。
(3卡塔尔.决断重新联合的趋向。就是从节点1再一次联合到节点2依旧从节点2重新联合到节点1。
(3卡塔尔.标志节点是还是不是处在脑裂(brain split卡塔尔(قطر‎。

[root@drbd1 ~]# drbdadm dump-md data1
# DRBD meta data dump
# 2018-03-29 22:53:52 +0800 [1522335232]
# drbd1.longshuai.com> drbdmeta 0 v08 /dev/sdb1 flex-external dump-md
#

version "v08";

# md_size_sect 1951744
# md_offset 0
# al_offset 4096
# bm_offset 36864

uuid {
    0x0000000000000004; 0x0000000000000000; 0x0000000000000000; 0x0000000000000000;
    flags 0x00000000;
}
# al-extents 257;
la-size-sect 0;
bm-byte-per-bit 4096;
device-uuid 0x0A293D126547895D;
la-peer-max-bio-size 0;
al-stripes 1;
al-stripe-size-4k 8;
# bm-bytes 0;
bm {
}
# bits-set 0;

随后吩咐中能够获知分裂标识代数的uuid值,以至metadata的元数据音讯,举例md_size_sect=1951744代表元数据所在分区占用了一九五四7肆10个扇区。注意,该命令不要在drbd设备已运行的情状下进行。

知情那七个指令能够拿走一些消息后,今后大家要做的是计量metadata部分的数据大小。那些分寸在"纠正drbd设备空间尺寸"时有用。

率先获得元数据所在分区的扇区数。即上面结果中的"md_size_sect"。但是也足以应用块设备工具blockdev来获取。

[root@drbd1 ~]# blockdev --getsz /dev/sdb1
1951744

有了该值,根据计算公式:Size = (md_size_sect/2^18)*8*N+72拓宽计算。个中md_size_sect如上总括,N是对端的数量,平日景观下drbd实现的是双节点,因而N=1,能够不用寻思。计算的结果是扇区数。

故此,此处总括的结果为:1951744/1024/256*8+72=131.5625共132扇区。假诺要转移为KB大小,则再除以2即可(借使扇区大小为512bytes卡塔尔。

盘上,相仿于一个依据互连网的RAID-1。

4. 安装DRBD

4.1 上传安装drbd的yum源,和drbd内核模块

[root@mysql_node1 ~]# yum install elrepo-release-6-6.el6.elrepo.noarch.rpm
[root@mysql_node1 ~]# yum install drbd kmod-drbd84 -y

4.2 加载drbd内核模块,况且检查是或不是加载成功

[root@mysql_node1 ~]# modprobe drbd
[root@mysql_node1 ~]# lsmod | grep drbd
drbd                  372759  0 
libcrc32c               1246  1 drbd

3.在节点上运转drbd

可利用如下命令来保管能源的启航、停止。

drbdadm {up|down} {all|resource_names}

例如:

drbdadm up data1

若果开发银行报以下错误,则恐怕是因为对metadata实行了格式化。解决方法是将其除去再重新创制但决不格式化。

0: Failure: (119) No valid meta-data signature found.

那时候得以查看/proc/drbd文件来查看drbd中安顿的能源的动静,也足以选用命令drbd-overview RESOURCEdrbdadm status RESOURCE来查阅。假如剧中人物ro是从/从,则注解配置成功,若有黄金时代端是unknown,则注明和对方不能够通讯,恐怕是主机路由的标题,那样会促成脑裂的标题。

cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:6297452

动静音讯特别主要,此中:

  • cs:connection state,必得是connected状态才代表连接成功。
  • ro:roles,各节点是是primary依然secondary。
  • ds:disk state,数据的情事,由此推断是还是不是要生龙活虎并、重新联合、正在联合、同步到位、是还是不是相近等等消息。

有关drbd的情景信息,见另大器晚成篇文章:drbd的气象表达。

实际上,drbdadm up起步drbd设备时做了数不清行事,假如分条析理划分的话,可以将"drbdadm up"拆分为以下多少个动作:

  1. 将drbd的财富事关到底层设备(metadata和data区卡塔尔上,使之能透过尾巴部分设备存、取多少。该进度调用的是drbdsetup程序。

    drbdadm attach data1
    
  2. 加载drbd能源的一路参数。

    drbdadm syncer data1
    
  3. 三翻陆回对端。

    drbdadm connect data1
    

    这几个命令在drbdadm中一些已失效,放在那只是为着表明"up"时所实践的多少个步骤。

到如今截至,drbd的财富已经涉嫌实现,也已经思索好开展同步,所不明白的仅仅只是何人作为协同的源端,何人做为同步的目的端,约等于primary和secondary的剧中人物。

DRBD须要营造在尾部设备之上,然后创设出二个块设备出来。对于客户来讲,贰个DRBD设备,有如一块物理的磁盘,能够在上面内创制文件系统。DRBD所支撑的最底层设备有以下这个类:
1、一个磁盘,只怕是磁盘的某三个分区;
2、一个softraid设备;
3、一个LVM的逻辑卷;
4、一个EVMSEnterpriseVolumeManagementSystem,集团卷管理种类)的卷;
5、其余任何的块设备。

5. 改换drbd的构造文件

5.1 由drbd.conf文件能够能够编辑.res结尾的配备文件到drbd.d文件夹下

[root@mysql_node1 ~]# cat /etc/drbd.conf 
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res";

5.2 能够参照drbd.conf.example文件举行安插

[root@mysql_node1 ~]# cat /etc/drbd.d/mysqldata.res 
resource mysqldata {
        protocol C;
        options {
                on-no-data-accessible suspend-io;
        }

        net {   
                cram-hmac-alg "sha1";
                shared-secret "secret_string";
        }
        disk {  
                # If you have a resonable RAID controller
                # with non volatile write cache (BBWC, flash)
                disk-flushes no;
                disk-barrier no;
                md-flushes no;
        }

        on mysql_node1 {
                address 192.168.10.98:7780;

                       device /dev/drbd0;
                       disk /dev/sdb2;
                       meta-disk /dev/sdb1;
        }
        on mysql_node2 {
                address 192.168.10.99:7780;

                       device /dev/drbd0;
                       disk /dev/sdb2;
                       meta-disk /dev/sdb1;
        }
}

5.3 在主备节点上同时起步drbd服务

[root@mysql_node1 drbd.d]# /etc/init.d/drbd start

5.4 查看drbd节点状态,开采五头都为secondary状态

[root@mysql_node1 ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by mockbuild@Build64R6, 2016-01-12 13:27:11
m:res        cs         ro                   ds                 p  mounted  fstype
0:mysqldata  Connected  Secondary/Secondary  Diskless/Diskless  C

5.5 配置元数据区,设置主节点

[root@mysql_node1 ~]# drbdadm create-md mysqldata
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success
[root@mysql_node1 ~]# drbdadm -- --overwrite-data-of-peer primary all

5.6 阅览drbd状态,发现多个为primary,另二个为secondary

[root@mysql_node1 ~]# cat /proc/drbd 
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by mockbuild@Build64R6, 2016-01-12 13:27:11
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:1355768 nr:0 dw:307512 dr:1348649 al:83 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

5.7 挂载drbd0到/data目录下。之后存放到data下的数额就能自动同步到从服务器

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

5.8 drbd备份的数目不可能在从服务器上一向观测到,能够用过关闭从服务器的drbd服务,挂载sdb2到/data目录下查看备份过来的多少

4.兑现drbd的中坚同步

在须要安装为主机点的机械上履行:

drbdadm primary --force data1  # 第一次初始化同步只能执行这个
# 或者
drbdsetup /dev/drbd0 primary

内部"--force"表示强制进级为primary,那会招致本节点的数量强制同步到对端上。

在drbd8.4早先,未有"--force"选项,而是接收非凡的"--overwrite-data-of-peer",由于它调用的是drbdsetup,所以还要还要在增选前增进"--"表示drbdadm将此选项传递给drbdsetup,即:

drbdadm -- --overwrite-data-of-peer primary data1

鉴于是第1回实践同步,因而该进程会协同整个分区举行初叶化。

[root@drbd1 ~]# cat /proc/drbd
version: 8.4.10-1 (api:1/proto:86-101)
GIT-hash: a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-15 14:23:22
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
    ns:812136 nr:0 dw:0 dr:813048 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:4069272
        [==>.................] sync'ed: 16.7% (3972/4764)M
        finish: 0:02:24 speed: 28,216 (17,652) K/sec

能够见到本端已经安装为主节点,且ds的风流浪漫端是uptodate状态,最后还观望了镜像到对方的速度信息。

当镜像完毕后,再查看能源的新闻。能够窥见两端的ds都变成uptodate状态了。表明镜像完毕了。

[root@drbd1 ~]# cat /proc/drbd
version: 8.4.10-1 (api:1/proto:86-101)
GIT-hash: a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-15 14:23:22
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:4881408 nr:0 dw:0 dr:4882320 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

鉴于单机文件系统的节制,drbd只好在主节点上被挂载。
Inspiteofthislimitation,therearestillafewwaystoaccessthedataonthesecondnode:

5.数量同步和中坚剧中人物切换

近来儿早上本来就有生龙活虎端是主节点了。drbd的主干节点中,唯有主节点是能够挂载并张开读写的。所以在主节点上挂载drbd设备(可能供给再行格式化data分区,而且只要metadata使用的是internal情势,则须要格式化分区才OK)。

挂载drbd到mnt,然后向里面拷贝三个文本。

[root@drbd1 ~]# mount /dev/drbd0 /mnt
[root@drbd1 ~]# cp /etc/inittab /mnt
[root@drbd1 ~]# ls /mnt
inittab  lost+found

假定对端也许有那几个文件则印证同步成功了,不过对端是从节点,不大概读取数据,所以一定要切换主从剧中人物再查看。然则在,实验情形下直接把从节点的drbd给down掉,再平素挂载/dev/sdb5也是能够的。

第大器晚成将主节点切换为从节点,必得先卸载挂载点才行。

[root@drbd1 ~]# umount /mnt
[root@drbd1 ~]# drbdadm secondary data1 
[root@drbd1 ~]# drbd-overview
 0:data1/0  Connected Secondary/Secondary UpToDate/UpToDate

再在从节点大校自个儿设置为主节点,然后挂载drbd设备,再查看是不是有文件同步过来了。

[root@drbd2 ~]# drbdadm primary data1
[root@drbd2 ~]# mount /dev/drbd0 /mnt
[root@drbd2 ~]# ls /mnt
inittab  lost+found

这表明完结了数据同步。然而这么手动切换到切换去的很麻烦,日常会将其交给heartbeat也许corosync来保管,落成drbd的自发性切换。

UseDRBDonlogicalvolumesanduseLVM'scapabilitiestotakesnapshotsonthestandbynode,andaccessthedataviathesnapshot.
DRBD'sprimary-primarymodewithashareddiskfilesystem(GFS,OCFS2).Thesesystemsareverysensitivetofailuresofthereplicationnetwork.

6.drbd脑裂的消除措施

当DRBD的两节点都开掘对方后,并都换到了早先化握手球组织议后,开采双方都以primary剧中人物,就能够冒出脑裂。现身脑裂后,由于两端节点都得以挂载、写多少,会促成数据的杂乱。

当检验到现身脑裂时,drbd会立时暂停双方的延续,并在日记中记录

Split-Brain detected, dropping connection!

在现身脑裂的时候,一定有黄金时代端的连接景况处于StandAlone,另意气风发端的状态恐怕是StandAlone(当互相相同的时等候检查查实验到脑裂卡塔尔(英语:State of Qatar),也说不允许是Connecting(当黄金时代端先检测到脑裂立刻暂停连接后使得另风流倜傥端不可能再检测出脑裂卡塔尔(قطر‎。

出现脑裂的时候,若无布署drbd自动从脑裂状态上升,那么必需举行人工的手动干涉。干涉的法子是扬弃生龙活虎端的数据,那大器晚成端称为"脑裂的被害人",另大器晚成端保存数据的节点则名称为"脑裂的幸存者"。

管理形式如下:

(1卡塔尔(英语:State of Qatar).在脑裂的被害者节点上实行:

drbdadm disconnect {resource | all}   # 先中断连接,防止再次写入数据
drbdadm secondary {resource | all}    # 设置为secondary
drbdadm connect --discard-my-data {resource | all}   # 丢弃数据,并再次连接

(2卡塔尔(قطر‎.借使脑裂的幸存者节点也是StandAlone动静,则进行上边包车型客车授命重新连接,如若照旧维持Connecting境况,则不需任何操作:

drbdadm disconnect {resource | all}
drbdadm connect    {resource | all}

当干涉完两侧后,两侧重新确立连接,重新握手沟通开首化合同消息。此时,脑裂的遇害者端的状态将改为SyncTarget,表示同步的目的端,它将从另风度翩翩节点上获取数据。

但注意,被害人在SyncTarget气象下一齐数据时,并不会从幸存者节点获取具有数据,而是信守自个儿节点上的事务音讯进行回滚,再从幸存者节点上收获回滚后还缺少的多寡。之所以,drbd脑裂后完结数据同步也是便捷的。

DRBD的配置:
范例:
环境:
1、多少个节点,分别为node1(10.0.9.1卡塔尔(قطر‎,node2(10.0.9.2卡塔尔(قطر‎,这里node11,node2便是主机名,和'uname-n'的出口雷同。
2、各种节点各提供一个大小正确相似的块设备(我这里运用的是一个lv卡塔尔(قطر‎,分别为/dev/centos_vg/web和/dev/myvg/web,均为100M。
3、笔者不掌握是否讲求drbd的本子同样,笔者的两台虚拟机操作系统版本和drbd的版本没什么不相像的。centos6.4x86_64

7.drbd多卷组配置

前文实验中运用的布置文件如下:

[root@drbd2 ~]# drbdadm dump data1
# resource data1 on drbd2.longshuai.com: not ignored, not stacked
# defined at /etc/drbd.d/data1.res:1
resource data1 {
    on drbd1.longshuai.com {
        device           /dev/drbd0 minor 0;
        disk             /dev/sdb5;
        meta-disk        /dev/sdb1;
        address          ipv4 192.168.100.51:7788;
    }
    on drbd2.longshuai.com {
        device           /dev/drbd0 minor 0;
        disk             /dev/sdb5;
        meta-disk        /dev/sdb1;
        address          ipv4 192.168.100.52:7788;
    }
}

它等价于:

resource data1 {
        device /dev/drbd0;
        disk /dev/sdb5;
        meta-disk /dev/sdb1;
        on drbd1.longshuai.com {
                address 192.168.100.51:7788;
        }
        on drbd2.longshuai.com {
                address 192.168.100.52:7788;
        }
}

其实它还等价于:

resource data1 {
        volume 0 {
                device /dev/drbd0;
                disk /dev/sdb5;
                meta-disk /dev/sdb1;
        }
        on drbd1.longshuai.com {
                address 192.168.100.51:7788;
        }
        on drbd2.longshuai.com {
                address 192.168.100.52:7788;
        }
}

drbd会为未有分卷组的资源使用暗许卷组"volume 0"。

借使供给八个底层设备(磁盘、分区、LVM、RAID等卡塔尔(英语:State of Qatar)提供drbd的联合功用,能够安装多少个卷组。

例如,除了上边使用的/dev/sdb{5,1}外,增多/dev/sdc1(data区卡塔尔、/dev/sdc2(metadata区卡塔尔国到另三个卷组。

resource data1 {
        volume 0 {
                device /dev/drbd0;
                disk /dev/sdb5;
                meta-disk /dev/sdb1;
        }
        volume 1 {
                device /dev/drbd1;
                disk /dev/sdc1;
                meta-disk /dev/sdc2;
        }
        on drbd1.longshuai.com {
                address 192.168.100.51:7788;
        }
        on drbd2.longshuai.com {
                address 192.168.100.52:7788;
        }
}

若果第叁个卷组是在drbd已经运行后再加多的一心的新分区,则需求先成立元数据区、调治铺排文件、运行财富等进度。

两侧节点都进行:

drbdadm create-md data1/1  # data1/1表示data1资源下的卷组1
drbdadm adjust data1       # 调整资源,相当于reload资源配置文件

主节点实施:

drbdadm --force primary data1/1

查阅两卷组的境况消息:

[root@drbd1 ~]# cat /proc/drbd                 
version: 8.4.10-1 (api:1/proto:86-101)
GIT-hash: a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-15 14:23:22
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:76408 nr:0 dw:76408 dr:3441 al:22 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
 1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
    ns:5352 nr:0 dw:0 dr:6264 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:4876056
        [>....................] sync'ed:  0.2% (4760/4764)M
        finish: 0:43:32 speed: 1,784 (1,784) K/sec

尽管能够透过resource_name/volume_id的办法钦命有个别财富中的卷组,以致上边通过data1/1来内定其看作primary。

但必然要小心,能源是有档次的,卷组是财富中的贰个子对象,它代表的只是底层设备的一个关联对象。由此,在财富等级次序上的操作(如能源、连接卡塔尔,必需钦命整个财富,而无法内定财富中的某些卷组。举例:

drbadm {up | down | connect | disconnect | primary | secondary} <resource>

风流倜傥旦那个命令钦点能源中的有些卷组,则会报告错误,雷同如下:

[root@drbd90 ~]# drbdadm down rs0/0     
down operates on whole resources, but you specified a specific volume!

然则,在尾巴部分设备的关系档期的顺序上,能够钦赐能源中的单个卷组。举个例子:

drbsetup {attach | detach} <volume_id>

约等于说,各类财富中依旧完全部是primary,要么完全部都以secondary,而无法volume 0是primary,volume 1是secondary,因为primary、secondary是能源等级次序上的定义,并不是设备档期的顺序的定义。

再一次提醒,两端的配置文件应该尽也许保持大器晚成致,因而最佳不要随便分区。

操作步骤:
1、确定保证两台drbd的主机时间是一齐的,这么些供给跟配置集群节点是意气风发律的。
2、五个节点的主机名应当可以精确深入分析,且主机名应该和'uname-n'的结果生龙活虎律,剖析出来的IP应当是用以五个节点之间通讯、同步数据的IP。提出配置hosts文件,比DNS可靠。
3、安装软件包
drbd共有两局部构成:内核模块和客商空间的管理工科具。个中drbd内核模块代码已经结合进Linux内核2.6.33事后的版本中,因而,倘让你的内核版本高于此版本的话,你只需求安装

处理工科具就可以;不然,您供给相同的时间设置内核模块和管理工科具三个软件包,並且模块和管理工科具的版本号一定要保全对应。
鉴于自个儿所运用的centos内核不自带drbd模块,所以供给设置。

近些日子适用CentOS5的drbd版本首要有8.0、8.2、8.3八个版本,其相应的rpm包的名字分别为drbd,drbd82和drbd83,对应的内核模块的名字分别为kmod-drbd,kmod-drbd82和kmod-

drbd83。而适用于CentOS6的版本为8.4,其相应的rpm包为drbd和drbd-kmdl,但在实际接收时,要铭记两点:drbd和drbd-kmdl的版本要相应;另叁个是drbd-kmdl的本子要与当下系统的基石

本子相对应。笔者那边选择8.4的版本(drbd-8.4.3-33.el6.x86_64.rpm和drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm卡塔尔(قطر‎,下载地址为ftp://rpmfind.net/linux/atrpms/
下载完毕后一直设置即可:
#rpm-ivhdrbd-8.4.3-33.el6.x86_64.rpmdrbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm

4、配置
drbd的主配置文件为/etc/drbd.conf.内容是:
include"drbd.d/global_common.conf";
include"drbd.d/*.res";

global_common.conf中定义global段和common段,而每叁个.res的公文用于定义三个财富。
在安顿文件中,global段仅能现身一回,且后生可畏旦全数的构造消息都保留至同多个安插文件中而不分离为五个文件的话,global段必需放在配置文件的最先导处。近年来global段中得以定义的参

数仅有minor-count,dialog-refresh,disable-ip-verification和usage-count。

common段则用于定义被每一个财富缺省继承的参数,能够在财富定义中运用的参数都能够在common段中定义。实际应用中,common段并不是必得,但提议将三个财富共享的参数定义为

common段中的参数以减弱配置文件的复杂度。

resource段则用于定义drbd财富,能源在概念时必需为其命名,名字能够由非空白的ASCII字符组成。每三个财富段的概念中要含有七个或更加多)host子段,以定义此财富事关至的

节点。

多个节点关于同风度翩翩drbd财富的安排相应完全肖似,之所以如此说,是思量到大概存在存在四个drbd节点、多少个drbd财富的动静:举例node1上有财富A,node2上有财富B,C,node3上有

能源C。这里且不思虑这种景色
先在node1上配置:
global_common.conf文件

global {
usage-count no;
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol 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
}
options {
# cpu-mask on-no-data-accessible
}
disk {
on-io-error detach;
# size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
# disk-drain md-flushes resync-rate resync-after al-extents
# c-plan-ahead c-delay-target c-fill-target c-max-rate
# c-min-rate disk-timeout
}
net {
cram-hmac-alg "sha1";
shared-secret   "mydrbd";
# protocol timeout max-epoch-size max-buffers unplug-watermark
# connect-int ping-int sndbuf-size rcvbuf-size ko-count
# allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
# after-sb-1pri after-sb-2pri always-asbp rr-conflict
# ping-timeout data-integrity-alg tcp-cork on-congestion
# congestion-fill congestion-extents csums-alg verify-alg
# use-rle
}
syncer {
rate 30M;
}
}

web.res的内容:

resource web {
meta-disk internal;
on node1 {
device /dev/drbd0;  #等价于 device minor 0
disk    /dev/centos_vg/web;
address 10.0.9.1:7789;
}
on node2 {
device /dev/drbd0;  #在node2上生成的 drbd 设备名
disk    /dev/myvg/web;  #使用node2上哪个块设备作为drbd的底层设备
address 10.0.9.2:7789;  #node2使用该socket与对方节点通信
}
}

也足以应用floatingnode-ip的款式代替onnode-name的款式:
那边是manpage中的一个演示:

resourcer2{
protocolC;
deviceminor2;
disk/dev/sda7;
meta-diskinternal;

#shortform,device,diskandmeta-diskinherited
floating10.1.1.31:7802;

#longerform,onlydeviceinherited
floating10.1.1.32:7802{
disk/dev/sdb;
meta-disk/dev/sdc8;
}
}

5、将上述配置复制到对方节点
6、早先化能源,分别在两边节点上创建/var/lib/drbd目录(该目录用于放置相通drbd-minor-0.lkbd的文书卡塔尔国,执行:
#drbdadmcreate-mdweb
7、启动drbd服务
#/etc/init.d/drbdstart

8、查看运行状态
#cat/proc/drbd
或者
#drbd-overview
此刻八个节点均处于secondary状态
9、依据需求将中间一个节点设置为主节点,在须要产生主节点的机器上执行
#drbdadmprimary--forceweb
查看drbd的图景,从节点会从主节点进行逐位同步
10、在主节点上,为drbd设备成立文件系统也能够将drbd设备创形成LVM设备),然后挂载
drbd集群中,唯有主节点是足以读的,从节点的drbd设备是不可能读写的,全数节点的drbd底层设备上无法实行其它文件系统操作(在drbd在上边运转时卡塔尔(قطر‎,包罗dumpe2fs等一声令下。

11、切换主从节点
在主节点上:
将挂载的drbd设备卸载,然后履行
drbdadmsecondaryweb
在从节点上:
drbdadmprimaryweb
接下来挂载drbd设备,注意,不要格式化,因为drbd从设备在一块的时候是逐位举办合营的,同步的时候就曾经格式化了。

关于配置的有个别表达:

protocolprot-id
OntheTCP/IPlinkthespecifiedprotocolisused.ValidprotocolspecifiersareA,B,andC.

ProtocolA:writeIOisreportedascompleted,ifithasreachedlocaldiskandlocalTCPsend
buffer.

ProtocolB:writeIOisreportedascompleted,ifithasreachedlocaldiskandremotebuffer
cache.

ProtocolC:writeIOisreportedascompleted,ifithasreachedbothlocalandremotedisk.

handlers:inthissectionyoucandefinehandlers(executables)thatarestartedbytheDRBDsysteminresponsetocertainevents

devicenameminornr
Thenameoftheblockdevicenodeoftheresourcebeingdescribed.Youmustusethisdevicewith
yourapplication(filesystem)andyoumustnotusethelowlevelblockdevicewhichisspecified
withthediskparameter.

Onecanetheromitthenameorminorandtheminornumber.Ifyouomitthenameadefaultof
/dev/drbdminorwillbeused.

Udevwillcreateadditionalsymlinksin/dev/drbd/by-resand/dev/drbd/by-disk.

diskname
DRBDusesthisblockdevicetoactuallystoreandretrievethedata.Neveraccesssuchadevice
whileDRBDisrunningontopofit.Thisalsoholdstruefordumpe2fs(8)andsimilarcommands.

addressAFaddr:port
AresourceneedsoneIPaddressperdevice,whichisusedtowaitforincomingconnectionsfrom
thepartnerdevicerespectivelytoreachthepartnerdevice.AFmustbeoneofipv4,ipv6,
ssocksorsdp(forcompatibilityreasonssciisanaliasforssocks).ItmaybeomitedforIPv4
addresses.TheactualIPv6addressthatfollowstheipv6keywordmustbeplacedinsidebrackets:
ipv6[fd01:2345:6789:abcd::1]:7800.

EachDRBDresourceneedsaTCPportwhichisusedtoconnecttothenode'spartnerdevice.Two
differentDRBDresourcesmaynotusethesameaddr:portcombinationonthesamenode.

on-io-errorhandler
istaken,ifthelowerleveldevicereportsio-errorstotheupperlayers.

handlermaybepass_on,call-local-io-errorordetach.

pass_on:Thenodedowngradesthediskstatustoinconsistent,markstheerroneousblockas
inconsistentinthebitmapandretriestheIOontheremotenode.

call-local-io-error:Callthehandlerscriptlocal-io-error.

detach:Thenodedropsitslowleveldevice,andcontinuesindisklessmode.

ping-inttime
IftheTCP/IPconnectionlinkingaDRBDdevicepairisidleformorethantimeseconds,DRBDwill
generateakeep-alivepackettocheckifitspartnerisstillalive.Thedefaultis10seconds,
theunitis1second.

ping-timeouttime
Thetimethepeerhastimetoanswertoakeep-alivepacket.Incasethepeer'sreplyisnot
receivedwithinthistimeperiod,itisconsideredasdead.Thedefaultvalueis500ms,the
defaultunitaretenthsofasecond.

become-primary-onnode-name
Setsonwhichnodethedeviceshouldbepromotedtoprimaryroleby
theinitscript.Thenode-namemighteitherbeahostnameorthe
keywordboth.Whenthisoptionisnotsetthedevicesstayin
secondaryroleonbothnodes.Usuallyonedelegatestherole
assignmenttoaclustermanager(e.g.heartbeat).
必得在common的startup中装置,若在财富中装置仿佛会报错

verify-alghash-alg
Duringonlineverification(asinitiatedbytheverifysub-command),
ratherthandoingabit-wisecomparison,DRBDappliesahash
functiontothecontentsofeveryblockbeingverified,andcompares
thathashwiththepeer.Thisoptiondefinesthehashalgorithm
beingusedforthatpurpose.Itcanbesettoanyofthekernel's
datadigestalgorithms.Inatypicalkernelconfigurationyoushould
haveatleastoneofmd5,sha1,andcrc32cavailable.Bydefault
thisisnotenabled;youmustsetthisoptionexplicitlyinorderto
beabletouseon-linedeviceverification.

cram-hmac-alg
YouneedtospecifytheHMACalgorithmtoenablepeerauthentication
atall.Youarestronglyencouragedtousepeerauthentication.The
HMACalgorithmwillbeusedforthechallengeresponse
authenticationofthepeer.Youmayspecifyanydigestalgorithm
thatisnamedin/proc/crypto.

shared-secret
Thesharedsecretusedinpeerauthentication.Maybeupto64
characters.Notethatpeerauthenticationisdisabledaslongasno
cram-hmac-alg(seeabove)isspecified.

resync-raterate
ToensureasmoothoperationoftheapplicationontopofDRBD,it
ispossibletolimitthebandwidthwhichmaybeusedbybackground
synchronizations.Thedefaultis250KB/sec,thedefaultunitis
KB/sec.OptionalsuffixesK,M,Gareallowed.

drbdadm常用选项和子命令
-d,--dry-run
-c,--config-file

attach
AttachesalocalbackingblockdevicetotheDRBDresource'sdevice.
detach
RemovesthebackingstoragedevicefromaDRBDresource'sdevice.
connect
Setsupthenetworkconfigurationoftheresource'sdevice.Ifthepeerdeviceisalready
configured,thetwoDRBDdeviceswillconnect.Iftherearemorethantwohostsectionsinthe
resourceyouneedtousethe--peeroptiontoselectthepeeryouwanttoconnectto.
disconnect
Removesthenetworkconfigurationfromtheresource.ThedevicewillthengointoStandAlone
state.
up
Isashortcutforattachandconnect.

down
Isashortcutfordisconnectanddetach.
syncer
Loadstheresynchronizationparametersintothedevice.
verify
Startsonlineverify.Duringonlineverify,dataonbothnodesiscomparedforequality.See
/proc/drbdforonlineverifyprogress.Ifout-of-syncblocksarefound,theyarenot
resynchronizedautomatically.Todothat,disconnectandconnecttheresourcewhenverification
hascompleted.
pause-sync
Temporarilysuspendanongoingresynchronizationbysettingthelocalpauseflag.Resynconly
progressesifneitherthelocalnortheremotepauseflagisset.Itmightbedesirableto
postponeDRBD'sresynchronizationuntilafteranyresynchronizationofthebackingstorage'sRAID
setup.
resume-sync
Unsetthelocalsyncpauseflag.
dstate
Showthecurrentstateofthebackingstoragedevices.(local/peer)

hidden-commands
Showsallcommandsundocumentedonpurpose.

常用命令:
drbdadmcreate-mdresource_name#初始化drbd资源
drbdadmverifyresource_name#起头在线校验
drbdsetup/dev/drbd0syncer-r100M#偶然安装re-synchronization的快慢为100M
drbdadmadjustresource_name#重作冯妇drbd的re-synchronization的快慢会配备文件中装置的值
cat/proc/drbd#查看drbd的状态
drbdadmprimary[--force]resource_name#[强制]晋级当前节点为resource_name的主节点
drbdadmsecondary<resource_name>#用来在卸载drbd设备后将眼下节点降级为resource_name的从节点
drbdadmdump#Justparsetheconfigurationfileanddumpittostdout.可用于检查语法
drbdadmdisconnect<resource_name>
drbdadmdetach<resource_name>

splitbrain脑裂
splitbrain实际上是指在某种境况下,形成drbd的三个节点断开连接,都以primary的地点来运行。当drbd某primary节点连接对方节点筹算发送新闻的时候假如发掘对方也是primary状态,

那么会立马自行断开连接,并肯定日前曾经发生splitbrain了,那时候他会在系统日志中著录以下新闻:“Split-Braindetected,droppingconnection!”当发生splitbrain之后,假如查阅

一连景况,当中起码会有三个是StandAlone状态,此外二个大概也是StandAlone即使是同不时候发掘splitbrain状态),也许有非常的大可能率是WFConnection的气象。
即使我们在构造文件中配备了电动化解splitbrain好像linbit不推荐那样做),drbd会自行排除splitbrain难题,可经过如下战略举行配备。
Discardingmodificationsmadeonthe“younger”primary。在这种格局下,当网络重新确立连接而且开掘了裂脑,DRBD会屏弃最终切换来主节点上的主机所修改的多少。
Discardingmodificationsmadeonthe“older”primary.在此种方式下,当网络重新树立连接并且开掘了裂脑,DRBD废弃首先切换成主节点上的主机后所改过的多少。
Discardingmodificationsontheprimarywithfewerchanges.在此种格局下,当网络重建连接并且发掘了裂脑,DRBD会比较两台主机之间改过的数据量,并抛弃校勘数据量少之甚少的主

机上的有着数据。
Gracefulrecoveryfromsplitbrainifonehosthashadnointermediatechanges.在此种形式下,借使内部贰个主机在脑裂时期并不曾数据修改,DRBD会自动重新实行数量同步,并宣

布脑裂主题材料已消逝。(这种状态大致不恐怕存在卡塔尔(英语:State of Qatar)
只顾:自动裂脑自动修复能否被接纳决议于个人利用。酌量成立二个DRBD的例证库。在“丢掉纠正超少的主节点的改造”兴许对web应用好过数据库应用。与此相反,财务的数据库则是对

于任何更改的遗失都是难以容忍的,那就要求不管在什么状态下都亟待手工业修复裂脑难题。由此须求在启用裂脑自动修复前构思你的运用意况。
举例未有配置splitbrain自动技术方案,大家能够手动撤消。首先我们亟须求显然哪一方面应该作为化解难点后的primary,后生可畏旦鲜明好那或多或少,那么大家同有时候也就规定选用错过在split

brain之后此外三个节点上面所做的具有数据变动了。当那几个规定下来后,我们就足以经过以下操作来平复了:
1、首先在分明要作为secondary的节点上面切换到secondary并废弃该财富的数量:
drbdadmsecondaryresource_name
drbdadm—–discard-my-dataconnectresource_name
2、在要作为primary的节点重新连接secondary纵然这么些节点当前的接连几天情形为WFConnection的话,可以大致)
drbdadmconnectresource_name
用作完这个动作之后,从新的primary到secondary的re-synchnorisation会自动初阶。

metadata
DRBD将数据的各个消息块保存在叁个专项使用的区域里,那一个metadata包蕴了
a,DRBD设备的轻重
b,发生的标记
c,活动日志
d,急忙同步的位图
metadata的囤积格局有其仲春表面三种方法,使用哪类配备都以在财富配置中定义的
内部metadata
中间metadata寄放在平等块硬盘或分区的末梢之处上
优点:metadata和数码是紧凑联系在一块的,假使硬盘损坏,metadata同样就一向不了,同样在平复的时候,metadata也会协同被苏醒回来
缺欠:metadata和数量在长期以来块硬盘上,对于写操作的吞吐量会牵动消极面的熏陶,因为应用程序的写央浼会触发metadata的更新,那样写操作就能够引致四次额外的磁头读写移动。
外部metadata
表面包车型大巴metadata贮存在和多少磁盘分开的单身的块设备上
可取:对于有个别写操作能够对有的暧昧的一言一动提供部分更改
劣势:metadata和数码不是关系在少年老成道的,所以朝气蓬勃旦数据盘现身故障,在转移新盘的时候就要求觉得的过问操作来拓表现存node对心硬盘的一齐了
即使硬盘上有数据,何况硬盘或然分区不扶持扩展,或许现存的文件系统不扶助shrinking,那就务须利用外界metadata这种措施了。

disk在common段中是三个子section,定义的是有关drdb设备的生龙活虎部分参数,而在resource段中是叁个布署参数,定义用于提供drbd设备的平底块设备名称

参照文书档案:



man5drbd.conf
mandrbdadm
DRBDUser'sGuide

DistributedReplicatedBlockDevice(DRBD卡塔尔是后生可畏种基于软件的...

编辑:操作系统 本文来源:使之互相解析的test01和test02为eth2接口IP,DRBD需要

关键词: