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

[经验分享] Heartbeat+DRBD构建高可用环境

[复制链接]

尚未签到

发表于 2019-1-7 10:36:31 | 显示全部楼层 |阅读模式
  在前一篇文章《使用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的主配置文件请参考,http://www.mjwdj.com/read.php?1159

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

注5:请参考Heartbeat的资源配置文件,该文件是资源文件中定义的服务,需要复制到Heartbeat的资源目录下。  





运维网声明 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-660260-1-1.html 上篇帖子: L8 heartbeat v2使用crm搭建wordpress 下篇帖子: heartbeat消息类型介绍及查看监听消息思路介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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