设为首页 收藏本站
查看: 1388|回复: 0

[经验分享] CentOS 6.4下DRBD 安装配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-27 08:12:20 | 显示全部楼层 |阅读模式
DRBD简介
DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。

DRBD工作机制翻译
Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。目前,drbd 每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持两个节点进行读写存取。

DRBD协议说明
A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
B 收到接收确认就认为完成了写入操作。
C 收到写入确认就认为完成了写入操作。

软件下载列表地址:  http://oss.linbit.com/drbd/
环境介绍:
系统版本:CentOS 6.4 (32位)  内核版本  2.6.32-358.el6.i686
软件版本:drbd-8.4.3.tar.gz
主:10.0.7.103  从:10.0.7.104
为了方便实验,两台机器都各自加一块20G的硬盘
[iyunv@localhost ~]# vim /etc/hosts
10.0.7.103    node1
10.0.7.104    node2
然后将刚刚添加的一块硬盘 sdb分区并格式化(步骤略)
[iyunv@node1 ~]# mkdir /qq
[iyunv@node1 ~]# mount /dev/sdb1  /qq (还要写到/etc/fstab里面,不然重启无效)
[iyunv@node1 ~]# init 6
安装开始
yum  -y  install  kernel-devel      kernel-headers  flex
注意:安装kernel-devel一定要和你uname -r 看到的内核版本一致,建议kernel-devel用本地源安装,不要用网络源安装
[iyunv@node1 soft]# tar zxf drbd-8.4.3.tar.gz
[iyunv@node1 soft]# cd drbd-8.4.3
[iyunv@node1 drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --with-km
注意:--with-km是启用内核模块
[iyunv@node1 ~]# make KDIR=/usr/src/kernels/2.6.32-358.el6.i686
注意KDIR的路径 (这个内核源码路径需要根据自己的系统修改)
[iyunv@node1 drbd-8.4.3]# make install
[iyunv@node1 ~]# mkdir -p /usr/local/drbd/var/run/drbd
[iyunv@node1 ~]# cp /usr/local/drbd/etc/rc.d/init.d/drbd  /etc/rc.d/init.d/
[iyunv@node1 ~]# chkconfig --add drbd
[iyunv@node1 ~]# chkconfig drbd on
安装drbd模块
回到刚刚解压drbd的目录,然后
[iyunv@node1 drbd-8.4.3]# cd drbd
[iyunv@node1 drbd]# make clean
[iyunv@node1drbd]#  make KDIR=/usr/src/kernels/2.6.32-358.el6.i686
[iyunv@node1 drbd]# cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
[iyunv@node1 drbd]# modprobe drbd
查看模块是否加载成功
[iyunv@node1 drbd]# lsmod | grep drbd
drbd                  292307  0
libcrc32c                841  1 drbd
##################################配置##################################
官方文档介绍:http://www.drbd.org/users-guide-8.4/
查看drbd的主配置文件
[iyunv@node1 etc]# pwd
/usr/local/drbd/etc
[iyunv@node1 etc]# cat 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";
由此可见:主配置文件里面已经包含了全局配置文件和drbd目录下以.res结尾的文件
修改全局配置文件:
[iyunv@node1 drbd.d]# pwd
/usr/local/drbd/etc/drbd.d
[iyunv@node1 drbd.d]# ls
global_common.conf
配置文件内容如下:
[iyunv@node1 drbd.d]# cat global_common.conf
global {
    usage-count yes; #是否参加drbd的使用者统计,默认此选项为yes
    # minor-count dialog-refresh disable-ip-verification
}
common {
        protocol C; #使用drbd的同步协议
    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; #配置I/O错误处理策略为分离
        # 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 {
        # 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 1024M; #设置主备节点同步时的网络速率
}
}
##########################资源配置文件配置如下  需自己新建####################
[iyunv@node1 ~]# vim /usr/local/drbd/etc/drbd.d/drbd.res
resource  r1 {  #这个r1是定义资源的名字
          on  node1 {            #on开头,后面是主机名称
          device    /dev/drbd0;  #drbd设备名称
          disk      /dev/sdb1;  #drbd0使用的磁盘分区为sdb1
          address  10.0.0.105:7789; #设置drbd监听地址与端口
          meta-disk  internal;
      }
          on  node2 {            #on开头,后面是主机名称
          device    /dev/drbd0;  #drbd设备名称
          disk      /dev/sdb1;  #drbd0使用的磁盘分区为sdb1
          address  10.0.0.106:7789; #设置drbd监听地址与端口
          meta-disk  internal;
      }
}
#####################################################################
在node1上初始化资源
[iyunv@node1 ~]# drbdadm create-md r1
启动服务
[iyunv@node1 ~]# service drbd start
查看drbd监听端口:
[iyunv@node1 ~]# netstat -anput|grep 7789
tcp        0      0 10.0.0.105:7789            0.0.0.0:*                  LISTEN      -                 
tcp        0      0 10.0.0.105:55715            10.0.0.106:7789            TIME_WAIT  -                 
tcp        0      0 10.0.0.105:41264            10.0.0.106:7789            TIME_WAIT
注意:第一次启动drbd时,两个drbd节点默认都处于Secondary状态,
[iyunv@node1 ~]# drbdadm role r1
Secondary/Secondary
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
[iyunv@node1 /]# drbdadm -- --overwrite-data-of-peer primary all
第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:drbdadm primary r1 (这个r1是定义资源的角色)或者drbdadm primary all
查看资源的连接状态
[iyunv@node1 ~]# drbdadm cstate r1
Connected
资源的连接状态;一个资源可能有以下连接状态中的一种
StandAlone 独立的:网络配置不可用;资源还没有被连接或是被管理断开(使用 drbdadm disconnect 命令),或是由于出现认证失败或是脑裂的情况
Disconnecting 断开:断开只是临时状态,下一个状态是StandAlone独立的
Unconnected 悬空:是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParams
Timeout 超时:与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空
BrokerPipe:与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空
NetworkFailure:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
ProtocolError:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
TearDown 拆解:临时状态,对等节点关闭,下一个状态为Unconected悬空
WFConnection:等待和对等节点建立网络连接
WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包
Connected 连接:DRBD已经建立连接,数据镜像现在可用,节点处于正常状态
StartingSyncS:完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncS
StartingSyncT:完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUID
WFBitMapS:部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncS
WFBitMapT:部分同步刚刚开始,下一步可能的状态为WFSyncUUID
WFSyncUUID:同步即将开始,下一步可能的状态为SyncTarget或PausedSyncT
SyncSource:以本节点为同步源的同步正在进行
SyncTarget:以本节点为同步目标的同步正在进行
PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
PausedSyncT:以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
VerifyS:以本地节点为验证源的线上设备验证正在执行
VerifyT:以本地节点为验证目标的线上设备验证正在执行
查看资源角色的命令
[iyunv@node1 ~]# drbdadm role r1
Primary/Secondary (在前面为当前节点)
Parimary 主:资源目前为主,并且可能正在被读取或写入,如果不是双主只会出现在两个节点中的其中一个节点上
Secondary 次:资源目前为次,正常接收对等节点的更新
Unknown 未知:资源角色目前未知,本地的资源不会出现这种状态
查看硬盘状态
[iyunv@node1 ~]# drbdadm dstate r1
UpToDate/UpToDate
本地和对等节点的硬盘有可能为下列状态之一:
Diskless 无盘:本地没有块设备分配给DRBD使用,这表示没有可用的设备,或者使用drbdadm命令手工分离或是底层的I/O错误导致自动分离
Attaching:读取无数据时候的瞬间状态
Failed 失败:本地块设备报告I/O错误的下一个状态,其下一个状态为Diskless无盘
Negotiating:在已经连接的DRBD设置进行Attach读取无数据前的瞬间状态
Inconsistent:数据是不一致的,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。此外,在同步期间(同步目标)在一个节点上出现这种状态
Outdated:数据资源是一致的,但是已经过时
DUnknown:当对等节点网络连接不可用时出现这种状态
Consistent:一个没有连接的节点数据一致,当建立连接时,它决定数据是UpToDate或是Outdated
UpToDate:一致的最新的数据状态,这个状态为正常状态
查看同步进度
[iyunv@node1 ~]# cat /proc/drbd 或者 执行/usr/local/drbd/sbin/drbd-overview
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@localhost.localdomain, 2016-04-24 20:16:24
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
    ns:2767088 nr:0 dw:0 dr:2774680 al:0 bm:168 lo:0 pe:1 ua:7 ap:0 ep:1 wo:f oos:18202972
    [=>..................] sync'ed: 13.3% (17776/20476)M
    finish: 0:12:59 speed: 23,344 (22,492) K/sec
由此可见:进度已经完成了13.3%,传输速度大概22M/S
注:
    ds是磁盘状态信息
    dw是磁盘写信息
    dr是磁盘读信息linux
#############测试验证#############

格式化文件系统(文件格式根据自己的系统环境选择)
[iyunv@node1 ~]# mkfs.ext4 /dev/drbd0
挂载此文件系统
[iyunv@node1 ~]# mkdir /data
[iyunv@node1 ~]# mount /dev/drbd0 /data/
在挂载data目录中创建一个测试文件,然后卸载挂载目录,然后切换主备节点,在备用节点上查看刚刚建立的测试文件还是否存在
Node1:
[iyunv@node1 ~]# mkdir /data/test
[iyunv@node1 ~]# umount /data/
将node1变为备用节点
[iyunv@node1 ~]# drbdadm secondary r1
[iyunv@node1 ~]# drbdadm role r1
Secondary/Secondary
Node2上:
将node2变为主节点
[iyunv@node2 ~]# drbdadm primary r1
[iyunv@node2 ~]# drbdadm role r1
Primary/Secondary
挂载设备,然后看文件是否存在
[iyunv@node2 ~]# mount /dev/drbd0 /mnt/
[iyunv@node2 ~]# cd /mnt/
[iyunv@node2 mnt]# ls
test
OK! 到这里已经算是完成了!

#############报错信息#############
报错1:
configure: error: Cannot build utils without flex, either install flex or pass the --without-utils option.
解决办法:
yum  -y  intalls  flex
报错2:
make:  [check-kdir] error 1
解决办法:yum install -y kernel-devel
报错3:
SORRY, kernel makefile not found.
    You need to tell me a correct KDIR,
  Or install the neccessary kernel source packages.
报错4:'drbd' not defined in your config (for this host).
这个因为没有加载到drbd模块
启动报错:
Command 'drbdmeta 0 v08 /dev/sdb1 internal create-md' terminated with exit code 40
这是因为sdb1已经有文件系统了,已经有数据存在了
解决方法:
[iyunv@node1 ~]# dd if=/dev/zero bs=1M count=1 of=/dev/sdb1
请检查这个KDIR目录指的路径是否正确
##########################


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41502-1-1.html 上篇帖子: DRBD脑裂 下篇帖子: drbd注意事项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表