阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下DRBD配置

139次阅读
没有评论

共计 7873 个字符,预计需要花费 20 分钟才能阅读完成。

一、Drbd 工作原理
DRBD 是一种块设备, 可以被用于高可用(HA) 之中. 它类似于一个网络 RAID- 1 功能.(可以比较一下 Linux 的 NFS)当你将数据写入本地 文件系统时, 数据还将会被发送到网络中另一台主机上. 以相同的形式记录在一个文件系统中。本地 (主节点) 与远程主机 (备节点) 的数据可以保证实时同步. 当本地系统出现故障时, 远程主机上还会 保留有一份相同的数据, 可以继续使用. 在高可用 (HA) 中使用 DRBD 功能, 可以代替使用一个共享盘阵. 因为数据同时存在于本地主机和远程主机上, 切换时, 远程主机只要使用它上面的那份备份数据, 就可以继续进行服务了。

二、环境配置:
1、操作系统:radhat 5.4
2、主服务器:
主机名:master
IP:192.168.2.124
镜像的硬盘:/dev/hdb
3、备份服务器
主机名:slave
IP:192.168.2.125
镜像的硬盘:/dev/hdb

三、安装 drbd
1、下载源代码:http://oss.linbit.com/drbd/。此次安装的版本是 drbd-8.3.5
2、把下载好的 drbd-8.3.5.tar.gz 解压
[root@master] # tar –zxvf drbd-8.3.5.tar.gz
[root@master] # cd drbd-8.3.5
[root@master] # make
[root@master] #  make install
[root@master]# modprobe drbd            @加载安装 drbd 模块
[root@master]# lsmod |grep drbd     
drbd        271736  0
@通过 lsmod 检查是否已经成功,如果有类似内容输出,则表示 drbd 安装成功了
[root@master]# mknod /dev/drbd0 b 147 0    @创建硬件设备 drbd

四、配置 drbd
DRBD 运行时, 会读取一个配置文件 /etc/drbd.conf. 这个文件里描述了 DRBD 设备与硬盘分区的映射关系, 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
1、drbd.conf 的配置参数说明
Protocol
Protocol  A        @数据一旦写入磁盘并发送到网络中就认为完成了写入操作
Protocol  B        @收到接收确认就认为完成了写入操作。
Protocol  C        @收到写入确认就认为完成了写入操作。
2、global
global {usage-count yes;}        @是否参加 DRBD 使用者统计,默认是 yes
3、common
common {syncer { rate 1M;} }
@设置主备节点同步时的网络速率最大值, 单位是字节.
4、resource
一个 DRBD 设备 (即:/dev/drbdX), 叫做一个 ” 资源 ”。里面包含一个 DRBD 设备的主备节点的的 ip 信息,底层存储设备名称,设备大小,meta 信息存放方式,drbd 对外提供的设备名等等。
resource r0 {
protocol C;        @使用协议 C. 表示收到远程主机的写入确认后, 则认为写入完成.
net {
    cram-hmac-alg sha1;            @设置主备机之间通信使用的信息算法.
    shared-secret “FooFunFactory”;
  }
@每个主机的说明以 ”on” 开头, 后面是主机名. 在后面的{} 中为这个主机的配置.
on master {
    device    /dev/drbd0;
    disk      /dev/ hdb;
    address  192.168.2.124:7898;    @设置 DRBD 的监听端口, 用于与另一台主机通信
    meta-disk  internal;
  }
on slave{
    device    /dev/drbd0;
    disk      /dev/ hdb;
    address  192.168.2.124:7898;
    meta-disk  internal;
    }
}
5、以下为测试时的完整配置
global {
  usage-count yes;
}
common {
  protocol C;
}
resource r0 {
  on master {
    device    /dev/drbd0;
    disk      /dev/hdb;
    address  192.168.2.124:7789;
    meta-disk  internal;
  }
  on slave {
    device    /dev/drbd0;
    disk      /dev/hdb;
    address  192.168.2.125:7789;
    meta-disk internal;
  }
}

6、双机两个节点的配置文件是一模一样的。DRBD 源码目录下有个样本,里面说得比较详细。

相关阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

DRBD 的详细介绍:请点这里
DRBD 的下载地址:请点这里

五、启动 drbd
1、创建 matadata
在启动 DRBD 之前, 需要分别在两台主机的 hdb 分区上, 创建供 DRBD 记录信息的数据块. 分别在两台主机上执行:
[root@master]#drbdadm create-md r0
[root@slave]#drbdadm create-md r0
备注:
1)“r0”是在 drbd.conf 里定义的资源名称.
2) 当执行命令”drbdadm create-md r0”时,出现以下错误信息。
Device size would be truncated, which
would corrupt data and result in
‘access beyond end of device’ errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command ‘drbdmeta 0 v08 /dev/xvdb internal create-md’ terminated with exit code 40
drbdadm create-md r0: exited with code 40
解决办法:初始化磁盘文件格式, dd if=/dev/zero bs=1M count=1 of=/dev/sdXYZ; sync
[root@master]#  dd if=/dev/zero bs=1M count=1 of=/dev/hda3; sync
2. 启动 DRBD,分别在两台主机上执行
[root@master]# /etc/init.d/drbd start
[root@slave]# /etc/init.d/drbd start
备注:
如果在启动过程中找不到 node 时,查看是 /dev/hda3 是否是处于挂载状态,如果是, 用 umount 命令取消挂载
3. 查看 DRBD 的状态,分别在两台主机上执行
[root@slave drbd]# cat /proc/drbd

version: 8.3.10 (api:88/proto:86-96)
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35

1: 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:b oos:2096028

对输出的含义解释如下:
ro 表示角色信息,第一次启动 drbd 时,两个 drbd 节点默认都处于 Secondary 状态,
ds 是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致 / 不一致”状态,表示两个节点的磁盘数据处于不一致状态。
Ns 表示网络发送的数据包信息。
Dw 是磁盘写信息
Dr 是磁盘读信息
4、设置主节点
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
[root@master]#drbdsetup /dev/drbd0 primary –o
或者执行下面命令也是可以的
[root@ master]#drbdadm — –overwrite-data-of-peer primary all
第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:

[root@ master]#/sbin/drbdadm primary r0 或者 /sbin/drbdadm primary all
再次查看 drbd 状态,
[root@ master]# cat /proc/drbd
version: 8.3.10 (api:88/proto:86-96)
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35

1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r—–
    ns:2432 nr:0 dw:0 dr:3104 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2093596
        [>………………..] sync’ed:  0.2% (2093596/2096028)K
        finish: 0:12:27 speed: 2,432 (2,432) K/sec

可以看到现在状态已经是 primary/secondary,而且磁盘信息是 upTodat/Inconsistent(实时 / 不一致), 而且已经开始同步两台机器对应磁盘的数据
过了一会,我们再次查看 drbd 状态,如下:
[root@ master]# cat /proc/drbd
version: 8.3.10 (api:88/proto:86-96)
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35

1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
    ns:2096028 nr:0 dw:0 dr:2096700 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

此时的状态信息就是 primary/secondary,磁盘信息是 UpToDate/UpToDate,说明已经同步完成了。

一、Drbd 工作原理
DRBD 是一种块设备, 可以被用于高可用(HA) 之中. 它类似于一个网络 RAID- 1 功能.(可以比较一下 Linux 的 NFS)当你将数据写入本地 文件系统时, 数据还将会被发送到网络中另一台主机上. 以相同的形式记录在一个文件系统中。本地 (主节点) 与远程主机 (备节点) 的数据可以保证实时同步. 当本地系统出现故障时, 远程主机上还会 保留有一份相同的数据, 可以继续使用. 在高可用 (HA) 中使用 DRBD 功能, 可以代替使用一个共享盘阵. 因为数据同时存在于本地主机和远程主机上, 切换时, 远程主机只要使用它上面的那份备份数据, 就可以继续进行服务了。

二、环境配置:
1、操作系统:radhat 5.4
2、主服务器:
主机名:master
IP:192.168.2.124
镜像的硬盘:/dev/hdb
3、备份服务器
主机名:slave
IP:192.168.2.125
镜像的硬盘:/dev/hdb

三、安装 drbd
1、下载源代码:http://oss.linbit.com/drbd/。此次安装的版本是 drbd-8.3.5
2、把下载好的 drbd-8.3.5.tar.gz 解压
[root@master] # tar –zxvf drbd-8.3.5.tar.gz
[root@master] # cd drbd-8.3.5
[root@master] # make
[root@master] #  make install
[root@master]# modprobe drbd            @加载安装 drbd 模块
[root@master]# lsmod |grep drbd     
drbd        271736  0
@通过 lsmod 检查是否已经成功,如果有类似内容输出,则表示 drbd 安装成功了
[root@master]# mknod /dev/drbd0 b 147 0    @创建硬件设备 drbd

四、配置 drbd
DRBD 运行时, 会读取一个配置文件 /etc/drbd.conf. 这个文件里描述了 DRBD 设备与硬盘分区的映射关系, 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
1、drbd.conf 的配置参数说明
Protocol
Protocol  A        @数据一旦写入磁盘并发送到网络中就认为完成了写入操作
Protocol  B        @收到接收确认就认为完成了写入操作。
Protocol  C        @收到写入确认就认为完成了写入操作。
2、global
global {usage-count yes;}        @是否参加 DRBD 使用者统计,默认是 yes
3、common
common {syncer { rate 1M;} }
@设置主备节点同步时的网络速率最大值, 单位是字节.
4、resource
一个 DRBD 设备 (即:/dev/drbdX), 叫做一个 ” 资源 ”。里面包含一个 DRBD 设备的主备节点的的 ip 信息,底层存储设备名称,设备大小,meta 信息存放方式,drbd 对外提供的设备名等等。
resource r0 {
protocol C;        @使用协议 C. 表示收到远程主机的写入确认后, 则认为写入完成.
net {
    cram-hmac-alg sha1;            @设置主备机之间通信使用的信息算法.
    shared-secret “FooFunFactory”;
  }
@每个主机的说明以 ”on” 开头, 后面是主机名. 在后面的{} 中为这个主机的配置.
on master {
    device    /dev/drbd0;
    disk      /dev/ hdb;
    address  192.168.2.124:7898;    @设置 DRBD 的监听端口, 用于与另一台主机通信
    meta-disk  internal;
  }
on slave{
    device    /dev/drbd0;
    disk      /dev/ hdb;
    address  192.168.2.124:7898;
    meta-disk  internal;
    }
}
5、以下为测试时的完整配置
global {
  usage-count yes;
}
common {
  protocol C;
}
resource r0 {
  on master {
    device    /dev/drbd0;
    disk      /dev/hdb;
    address  192.168.2.124:7789;
    meta-disk  internal;
  }
  on slave {
    device    /dev/drbd0;
    disk      /dev/hdb;
    address  192.168.2.125:7789;
    meta-disk internal;
  }
}

6、双机两个节点的配置文件是一模一样的。DRBD 源码目录下有个样本,里面说得比较详细。

相关阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

DRBD 的详细介绍:请点这里
DRBD 的下载地址:请点这里

六、测试同步
把主机上的 DRBD 设备挂载到一个目录上进行使用。备机的 DRBD 设备无法被挂载, 因为它是用来接收主机数据的, 由 DRBD 负责操作。
主备节点切换有两种方式,分别是停止 drbd 服务切换和正常切换,依次介绍:
1、停止 drbd 服务切换
关闭主节点服务,此时挂载的 drbd 分区就自动在主节点卸载了,然后在备用节点执行切换命令:
[root@drbd2 ~]#drbdadm primary all
此时会报错:
2: State change failed: (-7) Refusing to be Primary while peer is not outdated
Command ‘drbdsetup 2 primary’ terminated with exit code 11
因此,必须在备用节点执行如下命令:
[root@drbd2 ~]#drbdsetup /dev/drbd0 primary –o
或者
[root@drbd2~]#drbdadm — –overwrite-data-of-peer primary all
此时就可以正常切换了。
当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。
2、正常切换
在主节点卸载磁盘分区,然后执行
[root@drbd1 ~]#drbdadm secondary all
如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:
2: State change failed: (-1) Multiple primaries not allowed by config
Command ‘drbdsetup 2 primary’ terminated with exit code 11
接着,在备用节点执行
[root@drbd2 ~]#drbdadm primary all
最后在备用节点挂载磁盘分区即可:
[root@drbd2 ~]#mount /dev/drbd0 /mnt
3、注意点
1)mount drbd 设备以前必须把设备切换到 primary 状态。
2)两个节点中,同一时刻只能有一台处于 primary 状态,另一台处于 secondary 状态。
3)处于 secondary 状态的服务器上不能加载 drbd 设备。
4)主备服务器同步的两个分区大小最好相同, 这样不至于浪费磁盘空间, 因为 drbd 磁盘镜像相当于网络 raid 1。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计7873字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中