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

[经验分享] 配置DRBD

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-16 08:53:17 | 显示全部楼层 |阅读模式
一、原理
  1. DRBD(Distributed Replicated Block Device)是一种块设备(分布式复制块设备),可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中.
            本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.
            在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了.
   

  2. DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。
  3.DRBD的主要应用
如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案中,heartbeat 为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat + drbd在Linux下创建一个高可用(HA)的集群服务器,在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一个共享盘阵存储设备。因为数据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它上面的那份备份数据,就可以继续提供服务了
DRBD的工作原理如下图:
                     +----------+
                     | 文件系统 |
                     +----------+
                          |
                          V
                    +-------------+
                    |   块设备层  |
                    | (/dev/drbd1)|
                    +-------------+
                     |           |
                     |           |
                     V           V
               +------------+  +-------------+
      

         |  本地硬盘  |  | 远程主机硬盘|
               | (/dev/hdb1)|  | (/dev/hdb1) |
               +------------+  +-------------+
            ==========================================================







二、测试
注意:你需要为本地主机和远程主机,指定一个DRBD使用的硬盘分区.这两个分区的大小建议相同.
            我们指定两台主机的/dev/sda3 分区作为DRBD的使用的分区.这两个分区大小都为11G.
*注意! 在没有建立drbd资源时,切不可提前格式化硬盘!

##############################################################
系统环境:Centos5.4 x86_64 [ 2.6.18-164.el5]
  master(主机):IP地址:192.168.1.60   镜像分区:/dev/sda3,11GB
  slave (备机):IP地址:192.168.1.61   镜像分区:/dev/sda3,11GB
软件环境:
    Centos自带RPM包:
    kernel-headers-2.6.18-164.el5
    kernel-devel-2.6.18-164.el5
    安装flex的rpm包,否则drbd不能编译过去
   flex-2.5.4a-41.fc6
需另下载的软件包:
    drbd-8.3.6.tar.gz    http://oss.linbit.com/drbd/8.3/drbd-8.3.6.tar.gz
                         http://oss.linbit.com/drbd/
                         http://www.drbd.org/download/packages/
##############################################################

1.安装内核开发环境(kernel-headers、kernel-devel)
yum install kernel-devel kernel-headers
2.安装drbd软件包
tar -zxvf drbd-8.3.6.tar.gz
cd drbd-8.3.6
./configure --prefix=/usr/local/drbd  --with-km
make
make install
ln -s /usr/local/drbd/etc/drbd.conf /etc/drbd.conf
ln -s /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/drbd
chkconfig --add drbd
chkconfig --level 35 drbd on
执行之后:
drbd.ko被安装到/lib/modules/$KernelVersion/kernel/drivers/block下.
drbd相关工具(drbdadm,drbdsetup)被安装到/sbin下.
并会在/etc/init.d/下建立drbd启动脚本.
=================================================================

3.调整drbd服务脚本
vi /etc/init.d/drbd      //在服务脚本的start)部分添加模块加载语句
……
case "$1" in
    start)
   insmod  /lib/modules/2.6.18-164.el5/kernel/drivers/block/drbd.ko
    ……
cat > /etc/drbd.conf <<EOF
global {  usage-count yes;  }
common {
    # 使用协议C.表示收到远程主机的写入确认后,则认为写入完成
    protocol C;
    syncer { rate 3M; }
    startup {
        wfc-timeout 10;
        degr-wfc-timeout 120;
        outdated-wfc-timeout 5;
        }
}
resource r0 {
    device minor 1;
    meta-disk internal;
    # 设置主备机之间通信使用的信息算法.
    net {
        cram-hmac-alg sha1;
        shared-secret "secret string";
    }
    # 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置
    on master {            
        device /dev/drbd0;
        disk /dev/sda3;
        address 192.168.1.60:7801;
    }
    on slave {
        device /dev/drbd0;
        disk /dev/sda3;
        address 192.168.1.62:7801;
    }
}
EOF
三.建立drbd设备,启动drbd服务(master,slave)
1.建立md设备
在启动DRBD之前,你需要分别在两台主机的sdc1分区上,创建供DRBD记录信息的数据块.
注意:如果你在这步之前已经给/dev/sda3格式化的话,这里会报错,并且无法继续,抱错内容如下:
            md_offset ...........
            al_offset ...........
            bm_offset ...........
            Found ext3 filesystem which uses
            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
根据报错和官方描述的大概意思就是:有了文件系统,会被认为该设备已经被使用,不能被drbd所使用,最好的解决办法就是低格硬盘破坏该文件系统~
            官方的方法如下: 破坏文件系统 :dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync

注:如果出现上面的情况要注意卸载文件系统,否则drbd不成功

# drbdadm create-md r0  // 配置文件中的resource名
  --==  Thank you for participating in the global usage survey  ==--
The server's response is:
you are the 1889th user to install this version
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success
2.启动drbd服务程序
# /etc/init.d/drbd start
3. 确认drbd状态
# cat /proc/drbd
version: 8.3.6 (api:88/proto:86-91)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@master, 2010-07-12 15:36:10
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:10723020
--------Secondary/Secondary 表示两个节点都处于辅助(从)状态
四.初始化Primary机(master)
  1. 设为主导状态(同步发起端)
# drbdsetup /dev/drbd0 primary -o
# cat /proc/drbd
version: 8.3.6 (api:88/proto:86-91)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@master, 2010-07-12 15:36:10
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
    ns:54400 nr:0 dw:0 dr:54400 al:0 bm:3 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:10668620
        [>....................] sync'ed:  0.6% (10416/10468)M
        finish: 0:47:37 speed: 3,728 (3,200) K/sec
-------如需降级为备机,可执行
umount /dev/drbd0
drbdadm secondary r0
五.验证磁盘镜像结果
1. master主节点
mkfs.ext3 /dev/drbd0  //此操作只要主的上进行即可
mkdir /data
mount -o rw /dev/drbd0 /data
2.slave备节点
mkdir /data
测试:
方法1)
master主节点
mount /dev/drbd0  /data
ls /etc/ > /data/master
接下来你需要将DRBD的主从机互换一下.
可以执行下面的操作:
在主机上,先要卸载掉DRBD设备.
umount /data
drbdadm secondary r0
现在,两台主机都是"备机"需要把备节点升为主节点
drbdadm primary r0
mount /dev/drbd0 /data
ls /data
方法2)
master主节点
mount /dev/drbd0  /data
ls /etc/ > /data/master
slave备节点
service drbd stop
mount /dev/sda3 /data

这只是简单的测试 下面再测试一下 ha+drbd+mysql 并对ha mysql进行监控


运维网声明 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.iyunv.com/thread-24837-1-1.html 上篇帖子: Ubuntu14.0.4系统下 SVN的安装与配置 下篇帖子: linux常用系统命令之系统时钟设置详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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