注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

胡益兵的博客

新的岗位,新的方向,新的使命,stem教育进行中。

 
 
 

日志

 
 

【实验通过】CentOS6.5下 安装配置drbd  

2015-10-05 23:18:30|  分类: linux应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

drbd 工作原理

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

一、安装

##在之前,将6.5的内核进行了升级,如果以下命令不行,可以先将内核进行升级。升级后重启,应用新内核

##yum update kernel 

##yum install kernel-devel

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

yum -y install drbd83-utils kmod-drbd83

modprobe drbd

检查DRBD是否安装成功:

[root@drbd1 ~]# lsmod | grep -i drbd

drbd                  228528  3

[root@drbd1 ~]#  modprobe -l | grep -i drbd

/lib/modules/2.6.18-194.11.1.el5/weak-updates/drbd83/drbd.ko

安装成功之后/sbin目录下面有drbdadm,drbdmeta,drbdsetup命令,以及/etc/init.d/drbd启动脚本。

二、在主从机器上挂载一样大小的硬盘并分区
       fdisk -h
三、配置
1.全局配置文件
vi /etc/drbd.d/global_common.conf
 
global {
usage-count no; #是否参加DRBD使用者统计,默认yes
}
 
common {
protocol C;# 使用drbd的第三种同步协议,表示收到远程主机的写入确认后,则认为写入完成.
 
startup {
wfc-timeout          240;
degr-wfc-timeout     240;
outdated-wfc-timeout 240;
}
 
disk {
on-io-error detach;
 
}
 
net {
   cram-hmac-alg md5;
shared-secret "MySQL-HA";# DRBD同步时使用的验证方式和密码信息。
 
}
 
syncer {
rate 100M;           #设置主备节点同步时的网络速率最大值,单位是字节。官方推荐是30%的带宽
al-extents 3389;
verify-alg  md5;    ##pei he /etc/crontab   4 * * * *  root /sbin/drbdadm verify  resourceName,用于数据校验的,通过配合定时任务可以一起起作用。
 
 
}
}
2.资源配置文件
vi r0.res

resource r0{

  #资源名字为r0.

   on drbd1 {
#每个主机的说明以on开头,后面是hostname(uname -n),在后面的{}中为这个主机的配置。
device     /dev/drbd0;
disk        /dev/sdb1;
#/dev/drbd0使用的磁盘分区是/dev/sdf1。
address     192.168.12.246:7788;
#设置DRBD的监听端口,用于与另一台主机通信。
    meta-disk   internal;
  }
  on drbd2 {
device     /dev/drbd0;
disk        /dev/sdb1;
#/dev/drbd0使用的磁盘分区是/dev/sdb1。
address     192.168.12.237:7788;
#设置DRBD的监听端口,用于与另一台主机通信。
    meta-disk   internal;  #drbd的元数据存放方式。
  }
resource r0{

on g105-1 {
  device     /dev/drbd0;
  disk       /dev/testvg/testlv;
  address    192.168.100.177:7898;
  meta-disk  internal;
 }
on g105-2 {
  device     /dev/drbd0;
  disk       /dev/VolGroup/testlv;
  address    192.168.100.253:7898;
  meta-disk  internal;
 }
}
四、启动DRBD

(1)在启动DRBD之前,你需要分别在两台主机的hdb1分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行: 
[root@drbd1 ~]# drbdadm create-md r0 或者执行drbdadm create-md all
[root@drbd2 ~]# drbdadm create-md r0
WARN:
  You are using the 'drbd-peer-outdater' as fence-peer program.
  If you use that mechanism the dopd heartbeat plugin program needs
  to be able to call drbdsetup and drbdmeta with root privileges.

  You need to fix this with these commands:
  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

Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

根据报错提示,我们将做下面的处理:
umount /dev/sdb1
groupadd haclient
chgrp haclient /sbin/drbdsetup
chmod o-x /sbin/drbdsetup
chmod u+s /sbin/drbdsetup
chgrp haclient /sbin/drbdmeta
chmod u+s /sbin/drbdmeta
chmod o-x /sbin/drbdmeta


(2)在两个节点启动服务
[root@drbd1 ~]#/etc/init.d/drbd start
[root@drbd2 ~]#/etc/init.d/drbd start
Starting DRBD resources: [ d(r0) s(r0) n(r0) ].

(3)在任意节点查看节点状态
[root@drbd1 drbd.d]# cat /proc/drbd
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:2007644 nr:0 dw:0 dr:2007644 al:0 bm:123 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
对输出的含义解释如下:
ro表示角色信息,第一次启动drbd时,两个drbd节点默认都处于Secondary状态,
ds是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。
Ns表示网络发送的数据包信息。
Dw是磁盘写信息
Dr是磁盘读信息

(4)设置主节点
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
[root@drbd1 ~]#drbdsetup /dev/drbd1 primary –o
或者执行下面命令也是可以的
[root@drbd1 ~]#drbdadm -- --overwrite-data-of-peer primary all
第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:
[root@drbd1 ~]#/sbin/drbdadm primary r0或者/sbin/drbdadm primary all
执行此命令后,开始同步两台机器对应磁盘的数据
[root@drbd1 drbd.d]# cat /proc/drbd
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
    ns:5055360 nr:0 dw:0 dr:5059224 al:0 bm:308 lo:0 pe:8 ua:25 ap:0 ep:1 wo:f oos:15909652
        [===>................] sync'ed: 24.2% (15536/20472)M
        finish: 0:24:08 speed: 10,976 (15,132) K/sec
从输出可知:
“ro状态现在变为“Primary/Secondary”,“ds”状态也变为“UpToDate/Inconsistent”,也就是“实时/不一致”状态,现在数据正在主备两个主机的磁盘间进行同步,且同步进度为24.2%,同步速度每秒15M左右。
等待片刻,再次查看同步状态,输出如下:
[root@drbd1 ~]#cat /proc/drbd
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:2007644 nr:0 dw:0 dr:2007644 al:0 bm:123 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看到同步完成了,并且“ds“状态也变为“UpToDate/UpToDate”了。即为“实时/实时”状态了。
如果第一次设置主备节点时使用“/sbin/drbdadm primary r0”命令,那么会提示如下错误:
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
只要第一次用上面命令成功后,以后就可以用“/sbin/drbdadm primary r0”命令了。

(5)格式化文件系统
由于mount操作只能在主节点进行,所以只有设置了主节点后才能格式化磁盘分区,然后挂载:
[root@drbd1 ~]#mkfs.ext3 /dev/drbd0 
[root@drbd1 ~]#mount /dev/drbd0 /mnt

五、DRBD主备节点切换
主备节点切换有两种方式,分别是停止drbd服务切换和正常切换,依次介绍:
(1)停止drbd服务切换
[root@drbd1 mnt]# cd /
[root@drbd1 /]# /etc/init.d/drbd stop
Stopping all DRBD resources:
关闭主节点服务,此时挂载的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
此时就可以正常切换了。
在备用节点上挂载磁盘就可以正常使用了
[root@drbd2 mnt]# mount /dev/drbd0 /mnt
当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。
可以到drbd2机的/mnt目录下查看同步过来的数据。

(2)正常切换
在主节点卸载磁盘分区umount /mnt,然后执行
[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
  评论这张
 
阅读(80)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018