Chinaunix首页 | 论坛 | 博客
  • 博客访问: 586225
  • 博文数量: 70
  • 博客积分: 3219
  • 博客等级: 中校
  • 技术积分: 1197
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-13 12:20
个人简介

谢谢您的对我的博客的关心,同时希望这个站点真的能够对您有所帮助。 如果可以请告诉我你的联系方式(可能的话告诉我两个或更多,我不希望失去任何一个关注本主页人士的联系,不论你是我的老友,或是一位新朋友,对于我来说您十分重要)

文章分类
文章存档

2021年(1)

2020年(13)

2018年(1)

2013年(12)

2012年(2)

2009年(2)

2008年(6)

2007年(20)

2006年(13)

分类: 系统运维

2013-02-20 19:45:38

在前一篇文章《使用drbd实现数据实时备份》中我们实现了DRBD数据的实时备份。但这只是保证了数据的安全。如果primary发生了故障,虽然slave上有备份的数据,但slave是无法代替primary来提供服务的。

原因有以下几点(都需要手工操作):
1、slave要升级为primary
2、slave升级为primary后需要被mount
3、slave和primary的IP地址不同
4、如何启动依赖数据的服务(比如mysql,需要挂载drbd分区后才能启动mysql,顺序不能颠倒)
5、尽可能缩短以上4个步骤的时间,保证应用的连续性

以上内容就充分说明了我们需要一个“高可用环境”的必要性,Heartbeat就能帮我们解决以上所有的问题(注1)。下面我们就来使用heartbeat来实现DRBD的高可用性。

实验环境:
根据《使用drbd实现数据实时备份》配置好DRBD
本文是是该文章的后续,用的就是原来的2台测试机。

测试机都使用RHEL5.8的光盘制作yum命令的安装源来安装所依赖的软件包,关于如何使用光盘制作yum源,请参考:
http://blog.chinaunix.net/uid-20346344-id-3264166.html

以下软件包需要下载,可以到CentOS网站下载,保存到/home/share/下:

一、安装Heartbeat
mount /dev/hdc /mnt/iso/
yum -y install PyXML openssh-clients iptables ipvsadm telnet
yum -y install perl-Crypt-SSLeay perl-LDAP perl-HTML-Parser
yum -y install perl-libwww-perl perl-Digest-HMAC perl-Net-IP perl-Net-DNS perl-TimeDate
yum -y install pygtk2

cd /home/share
rpm -vih heartbeat-pils-2.1.3-3.el5.centos.i386.rpm
rpm -ivh perl-Data-HexDump-0.02-1.el5.centos.noarch.rpm
rpm -ivh perl-Authen-Radius-0.13-1.el5.centos.noarch.rpm
rpm -ivh perl-Net-IMAP-Simple-1.17-1.el5.centos.noarch.rpm
rpm -ivh perl-Net-IMAP-Simple-SSL-1.3-1.el5.centos.noarch.rpm
rpm -ivh perl-Mail-POP3Client-2.17-1.el5.centos.noarch.rpm
rpm -ivh perl-MailTools-1.77-1.el5.centos.noarch.rpm
rpm -ivh heartbeat-ldirectord-2.1.3-3.el5.centos.i386.rpm
rpm -ivh heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm
rpm -ivh heartbeat-2.1.3-3.el5.centos.i386.rpm
rpm -ivh heartbeat-2.1.3-3.el5.centos.i386.rpm
rpm -ivh heartbeat-gui-2.1.3-3.el5.centos.i386.rpm
rpm -ivh heartbeat-devel-2.1.3-3.el5.centos.i386.rpm

二、安装mysql(注2)
yum -y install mysql mysql-server
service mysqld start
chkconfig mysqld on

三、建立Heartbeat主配置文件(注3)
echo 'logfacility  local0
keepalive  2
deadtime  15
warntime  5
initdead  120
udpport  694
bcast  eth0
watchdog  /dev/watchdog
auto_failback  off
node  server1.vicp.net
node  server2.vicp.net
respawn  hacluster  /usr/lib/heartbeat/ipfail' > /etc/ha.d/ha.cf

四、设置2个节点之间的通信密钥
echo 'auth  3
3  md5  Hello!' > /etc/ha.d/authkeys
chmod 600 /etc/ha.d/authkeys

五、定义资源(注4)
echo 'server1.vicp.net IPaddr::192.168.10.30/24/eth0:0  drbddisk::db  Filesystem::/dev/drbd0::/mnt/drbd::ext3  mysqld' > /etc/ha.d/haresources

六、复制mysql的启动脚本(注5)
cp /etc/init.d/mysqld /etc/ha.d/resource.d/

七、启动Heartbeat
service heartbeat start
2台主机上的配置过程以及所有的配置文件完全一样。

服务启动后server1上会配置有192.168.10.30的IP。

八、测试
将server1上的heartbeat服务停止,或者直接拔掉server1的网线后:
server1上的192.168.10.30的IP被释放,mysql服务会被停止,drbd分区会被unmount掉,并自动变为slave。

server2上的drbd分区会自动变为primary,并mount到指定目录,然后启动mysql服务,并将192.168.10.30的IP地址分配到本机的eth0:0上。

在Server1的heartbeat重新启动,或者接上网线后,Server1会成为Slave,Server2继续承担primary的角色。如果非要Server1成为primary可以在server1上用/usr/share/heartbeat/目录下的命令强制成为primary。


注1:事实上Heartbeat完成其中的一部分,有些功能是heartbeat调用了其他的软件,因为用rpm安装heartbeat时的依赖性已经解决了这个问题,这里就不再赘述了。

注2:mysql似乎和这篇文章无关,其实如果将mysql数据库文件存放在/mnt/drbd/目录下,就和本文有关了。因为要挂载drbd分区后才能启动mysql。

注3:Heartbeat的主配置文件请参考,

注4:Heartbeat的资源配置文件请参考,
也可以写成(这是参考网上文章编辑的,实测是可用的,语法我不是很理解,请参考官方文档):
#echo 'server1.vicp.net drbddisk Filesystem::/dev/drbd0::/mnt/drbd::ext3 192.168.10.30 mysqld' > /etc/ha.d/haresources

注5:请参考Heartbeat的资源配置文件,该文件是资源文件中定义的服务,需要复制到Heartbeat的资源目录下。
阅读(2307) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

CU博客助理2013-04-09 13:55:40

嘉宾点评:Heartbeat+DRBD是一款性价比很高的高可用开源套餐,虽然面向MySQL或Postgre等中小型数据解决方案居多,但其所涉及的应用范围却甚为宽广。mjwdj是个有心人,从初步的实时备份原理,到DRBD脑裂的两个实例;从Heartbeat+DRBD构建高可用环境,到DRBD配置文件详解,mjwdj亲自操刀,针对DRBD进行了一系列的探索,积累了丰富的经验。虽说每篇文章都有闪光点,但我认为最值得骄傲的是博主对技术耐心、细致的研究过程。在此只能推荐一篇较为综合的博文作为代表,对DRBD感兴趣的读者,请进一步参看博主的其他文章。

(以上是邀请嘉宾的点评,感谢您参与“原创博文评选”获奖结果即将公布)

CU博客助理2013-04-09 13:55:23

嘉宾点评:Heartbeat+DRBD是一款性价比很高的高可用开源套餐,虽然面向MySQL或Postgre等中小型数据解决方案居多,但其所涉及的应用范围却甚为宽广。mjwdj是个有心人,从初步的实时备份原理,到DRBD脑裂的两个实例;从Heartbeat+DRBD构建高可用环境,到DRBD配置文件详解,mjwdj亲自操刀,针对DRBD进行了一系列的探索,积累了丰富的经验。虽说每篇文章都有闪光点,但我认为最值得骄傲的是博主对技术耐心、细致的研究过程。在此只能推荐一篇较为综合的博文作为代表,对DRBD感兴趣的读者,请进一步参看博主的其他文章。

(以上是邀请嘉宾的点评,感谢您参与“原创博文评选”获奖结果即将公布)