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

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

使用heartbeat+DRBD实现高可用集群  

2013-05-13 23:56:03|  分类: 集群技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  在众多的实现服务器冗余的解决方案中,heartbeat为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat+drbdLinux下创建一个高可用(HA)的集群服务器。
 

   ::DRBD工作原理

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

        注释:

    DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID。

    DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服    务,如TurboHA 或 心跳连接,以及一些能在块设备上运行的应用程序。例如:裸I/O、文件系统及fsck、具有恢复能力的数据库。

    下面是DRBD的系统结构图

待续......

              

工具:
drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令,
drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用
drbdmeta:管理META数据结构,平时很少直接用。
在DRBD中,资源是特指某复制的存储设备的所有方面。包括资源名称、DRBD设备(/dev/drbdm,这里m是设备最小号,最大号可到147)、磁盘配置(使本地数据可以为DRBD所用)、网络配置(与对方通信)
每个资源有个角色,是Primary或Secondary,下面简称“主”和“备”
主角色的DRBD设备可以不受限制的读和写,比如创建和映射文件系统、对于块设备的raw或直接IO访问。
备角色的DRBD设备接受来自对方的所有修改,但是不能被应用程序读写,甚至只读也不行。
角色可以改变。

         :::::部署 heartbeat+DRBD高可用集群。

首先安装heartbeat,执行yum install heartbeatredhat系下)即可,不建议编译安装heartbeat,因为安装时间特长,容易出问题;

  接着安装drbd,安装方法见:http://www.centos.bz/2012/02/drbd-compile-install-deploy/, 唯一不同的是在./configure命令中添加–with-heartbeat,安装完成后会在/usr/local/drbd/etc/ha.d /resource.d生成drbddiskdrbdupper文件,把这两个文件复制到/usr/local/heartbeat/etc/ha.d /resource.d目录,命令cp -R /usr/local/drbd/etc/ha.d/resource.d/* /etc/ha.d/resource.d
我们的主机ip192.168.79.130,备机ip:192.168.79.131,虚拟ip:192.168.79.135drbd同步的分区/dev/sdb1,挂载的目录/data

drbd配置

1、首先对/dev/sdb分区出/dev/sdb1,建立目录/data
2
、配置globalresource
配置drbd.conf:

  1. vi /usr/local/drbd/etc/drbd.conf

写入:

  1. include "drbd.d/global_common.conf";

  2. include "drbd.d/*.res";

配置global_common.conf

  1. vi /usr/local/drbd/etc/drbd.d/global_common.conf

写入:

  1. global {

  2. usage-count yes;

  3. }

  4. common {

  5. net {

  6. protocol C;

  7. }

  8. }

配置r0资源:

  1. vi /usr/local/drbd/etc/drbd.d/r0.res

写入:

  1. resource r0 {

  2. on node1 {

  3. device /dev/drbd1;

  4. disk /dev/sdb1;

  5. address 192.168.79.130:7789;

  6. meta-disk internal;

  7. }

  8. on node2 {

  9. device /dev/drbd1;

  10. disk /dev/sdb1;

  11. address 192.168.79.131:7789;

  12. meta-disk internal;

  13. }

  14. }

3、设置hostname

  1. vi /etc/sysconfig/network

修改HOSTNAMEnode1
编辑hosts

  1. vi /etc/hosts

添加:

  1. 192.168.79.130 node1

  2. 192.168.79.131 node2

使node1 hostnmae临时生效

  1. hostname node1

node2设置类似。
4
、设置resource
以下操作需要在node1node2操作。

  1. modprobe drbd //载入 drbd 模块

  2. dd if=/dev/zero of=/dev/sdb1 bs=1M count=100 /把一些资料塞到 sdb (否则 create-md 时有可能会出现错误)

  3. drbdadm create-md r0 //建立 drbd resource

  4. drbdadm up r0 //启动 resource r0

5、设置Primary Node
以下操作仅在node1执行。
设置node1primary node:

  1. drbdadm primary --force r0

6、创建DRBD文件系统
以下操作仅在node1执行。
上面已经完成了/dev/drbd1的初始化,现在来把/dev/drbd1格式化成ext3格式的文件系统。

  1. mkfs.ext3 /dev/drbd1

然后将/dev/drbd1挂载到之前创建的/data目录。

  1. mount /dev/drbd1 /data

heartbeat配置

总共有三个文件需要配置:
ha.cf
监控配置文件
haresources
资源管理文件
authkeys
心跳线连接加密文件
1
、同步两台节点的时间

  1. rm -rf /etc/localtime

  2. \cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  3. yum install -y ntp

  4. ntpdate -d cn.pool.ntp.org

2、配置ha.cf

  1. vi /etc/ha.d/ha.cf

  1. debugfile /var/log/ha-debug #打开错误日志报告

  2. keepalive 2 #两秒检测一次心跳线连接

  3. deadtime 10 #10 秒测试不到主服务器心跳线为有问题出现

  4. warntime 6 #警告时间(最好在 2 10 之间)

  5. initdead 120 #初始化启动时 120 秒无连接视为正常,或指定heartbeat

  6. #在启动时,需要等待120秒才去启动任何资源。


  7. udpport 694 #udp 694 端口连接

  8. ucast eth0 192.168.79.131 #单播方式连接(主从都写对方的 ip 进行连接)

  9. node node1 #声明主服(注意是主机名uname -n不是域名)

  10. node node2 #声明备服(注意是主机名uname -n不是域名)

  11. auto_failback on #自动切换(主服恢复后可自动切换回来)这个不要开启

  12. respawn hacluster /usr/lib/heartbeat/ipfail #监控ipfail进程是否挂掉,如果挂掉就重启它

3、配置authkeys

  1. vi /etc/ha.d/authkeys

写入:

  1. auth 1

  2. 1 crc

4、配置haresources

  1. vi /etc/ha.d/haresources

写入:

  1. node1 IPaddr::192.168.79.135/24/eth0 drbddisk::r0 Filesystem::/dev/drbd1::/data::ext3

node1:master主机名
IPaddr::192.168.79.135/24/eth0:
设置虚拟IP
drbddisk::r0:
管理资源r0
Filesystem::/dev/drbd1::/data::ext3:
执行mountunmout操作
node2
配置基本相同,不同的是ha.cf中的192.168.79.131改为192.168.79.130

DRBD主从自动切换测试

首先先在node1启动heartbeat,接着在node2启动,这时,node1node2完全启动后,相继执行设置虚拟IP,启动drbd并设置primary,并挂载/dev/drbd1/data目录,启动命令为:


   service heartbeat start

这时,我们执行ip a命令,发现多了一个IP 192.168.79.135,这个就是虚拟IPcat /proc/drbd查看drbd状态,显示primary/secondary状态,df -h显示/dev/drbd1已经挂载到/data目录。
然后我们来测试故障自动切换,停止node1heartbeat服务或者断开网络连接,几秒后到node2查看状态。
接着恢复node1heartbeat服务或者网络连接,查看其状态。

  评论这张
 
阅读(159)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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