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

[经验分享] linux下高可用集群之DRBD详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-12 09:25:10 | 显示全部楼层 |阅读模式
1.DRBD:Disrtributed Replicated Block Device,分布式复制块设备
DRBD:主要是在不同服务器之间硬盘或分区同步数据,通过网络,按位同步,即镜像!
Raid1主要是将同一服务器硬盘或分区同步数据,通过主板总线,按位同步。即镜像!
DRBD区别于DAS,NAS,SAN,也区别于Raid1
DRBD是primary/secondary,主从设备,主从角色可以互换
    primary:可读写执行操作,但secondary不能挂载文件系统
DRBD也是Dual primary,双主设备;首先将DRBD定义成资源,并将两服务器DRBD文件系统格式化成集群文件系统(GFS2/OCFS2),再基于DLM分布式锁管理器将主节点锁信息通过Message Layer通知给从节点,并不是并行读写,且仅允许两节点
DLM:Distributed Lock Manager 分布式锁管理器
2.DRBD协议:
A:asysnc  异步
B: semi sync 半同步
C: sync  同步
DRBD资源:
资源名称:可以是除了空白字符外的任意ACSII码字符;
DRBD设备:在双方节点上,此DRBD设备的设备文件;一般为/dev/drbd{N},其主设备号147
磁盘:在双方节点上,各自提供的存储设备;
网络配置:双方数据同步时所使用的网络属性;
3.配置DRBD必备的3个条件
3.1、时间同步;
3.2、名称解析,且每个主机的主机名与其'uname -n'保持一致;
3.3、配置好每个节点的Yum;
4.安装DRBD,所需两个rpm包drbd83-8.3.8-1.el5.centos.i386.rpm和kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
#yum -y --nogpgcheck localinstall drbd83-8.3.8-1.el5.centos.i386.rpm kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
5.配置drbd
drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.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资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。
下面的操作在node1.willow.com上完成。

5.1.复制样例配置文件为即将使用的配置文件:
# cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc
5.2.vim /etc/drbd.d/global-common.conf
global {
        usage-count no;
        # minor-count dialog-refresh disable-ip-verification
}
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";
                # 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 120;
                #degr-wfc-timeout 120;
        }
        disk {
                on-io-error detach;
                #fencing resource-only;
        }
        net {
                cram-hmac-alg "sha1";
                shared-secret "mydrbdwillow";
        }
        syncer {
                rate 1000M;
        }
}
6、定义一个资源/etc/drbd.d/mydrbd.res,内容如下:
resource mydrbd {
  on node1.willow.com {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   1.1.1.18:7789;
    meta-disk internal;
  }
  on node2.willow.com {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   1.1.1.19:7789;
    meta-disk internal;
  }
}
或者资源定义也可以这样写,将同样属性写在外面,成为默认值,如下
resource mydrbd {
         device /dev/drbd0;
         disk   /dev/sda5;
         meta-disk internal;
         on node1.willow.com {
              address 1.1.1.18:7789;
          }
         on node2.willow.com {
              address 1.1.1.19:7789;
          }
}

以上文件在两个节点上必须相同,因此,可以基于ssh将刚才配置的文件全部同步至另外一个节点。
# scp  /etc/drbd.*  node2:/etc
7、在两个节点上初始化已定义的资源并启动服务:
7.1.初始化资源,在Node1和Node2上分别执行:
# drbdadm create-md mydrbd
7.2.启动服务,在Node1和Node2上分别执行:注意有同步过程,启动一个节点将会一直等待
/etc/init.d/drbd start
7.3.查看启动状态:
# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:16
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:b oos:505964
也可以使用drbd-overview命令来查看:
# drbd-overview
  0:mydrbd  Connected Secondary/Secondary Inconsistent/Inconsistent C r----
从上面的信息中可以看出此时两个节点均处于Secondary状态。
也可以 watch -n 1 'cat /proc/drbd'动状查看同步过程
7.4.将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:
# drbdsetup /dev/drbd0 primary –o
也可以在要设置为Primary的节点上使用如下命令来设置主节点:

# drbdadm -- --overwrite-data-of-peer primary mydrbd
而后再次查看状态,可以发现数据同步过程已经开始:
# drbd-overview
  0:mydrbd  SyncSource Primary/Secondary UpToDate/Inconsistent C r----
    [============>.......] sync'ed: 76.9%(172140/505964)K delay_probe: 35
等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次:
# drbd-overview
  0:mydrbd  Connected Primary/Secondary UpToDate/UpToDate C r----
8、创建文件系统
文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
# mke2fs -j -L DRBD /dev/drbd0
# mkdir /mydata
# mount /dev/drbd0 /mydata
9、切换Primary和Secondary节点
对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:
Node1:
# cp -r /etc/fstab /mydata
# umount /mydata
# drbdadm secondary mydrbd
查看状态:
# drbd-overview
  0:mydrbd  Connected Secondary/Secondary UpToDate/UpToDate C r----
Node2:
# drbdadm primary mydrbd
# drbd-overview
  0:mydrbd  Connected Primary/Secondary UpToDate/UpToDate C r----
# mkdir /mydata
# mount /dev/drbd0 /mydata
使用下面的命令查看在此前在主节点上复制至此设备的文件是否存在:
# ls /mnt/drbd
################################################################################
drbd 8.4中第一次设置某节点成为主节点的命令
# drbdadm primary --force resource

配置资源双主模型的示例:
resource mydrbd {

        net {
                protocol C;
                allow-two-primaries yes;
        }

        startup {
                become-primary-on both;
        }

        disk {
                fencing resource-and-stonith;
        }

        handlers {
                # Make sure the other node is confirmed
                # dead after this!
                outdate-peer "/sbin/kill-other-node.sh";
        }

        on node1.willow.com {
                device  /dev/drbd0;
                disk    /dev/vg0/mydrbd;
                address 1.1.1.18:7789;
                meta-disk  internal;
        }

        on node2.willow.com {
                device  /dev/drbd0;
                disk    /dev/vg0/mydrbd;
                address 1.1.1.19:7789;
                meta-disk   internal;
        }
}



运维网声明 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-256742-1-1.html 上篇帖子: centos 7如何安装Parallels Tools 下篇帖子: centos搭建samba服务器 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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