教你如何用heartbeat搭建一个高可用的web集群
首先两台服务器或者准备二台虚拟主机,这里我们以虚拟机为例准备二台虚拟机,每个虚拟机都安装上二块网卡,每台虚拟机的网卡,一块网卡设置网桥接,一块设置为为虚拟网络的接法 比如设置为VMnet7。二台虚拟机的网卡一样,好了设置好了,我们启动虚拟机,
在虚拟机启动之前我们先来规划一下,如图这是我们的实验图谱
二台主机
环境搭建:
node1 eth0 192.168.0.154
eth1 10.0.23.1 心跳测试
提供web服务
node2 eth0 192.168.0.164
eth1 10.0.23.2 心跳测试
提供web服务
接下来我们来配置name1:
首先根据图谱我们先配置name1的ip地址:
这里要配置静态ip地址
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
http://1509738.blog.运维网.com/images/editer/InBlock.gifDEVICE=eth0
http://1509738.blog.运维网.com/images/editer/InBlock.gifBOOTPROTO=static
http://1509738.blog.运维网.com/images/editer/InBlock.gifIPADDR=192.168.0.154
http://1509738.blog.运维网.com/images/editer/InBlock.gifNETMASK=255.255.255.0
http://1509738.blog.运维网.com/images/editer/InBlock.gifONBOOT=yes
http://1509738.blog.运维网.com/images/editer/InBlock.gifHWADDR=00:0c:29:a4:bd:10
主机名更改
# vim /etc/sysconfig/network
修改主机名字为
http://1509738.blog.运维网.com/images/editer/InBlock.gifHOSTNAME=node1.a.org
在用hostname 在进行修改 两件修改要保持一致
# hostname node1.a.org
# hostname 查看
http://1509738.blog.运维网.com/images/editer/InBlock.gifnode1.a.org
然后我们把web的服务停止让他开机不自动启动
# service httpd stop
# chkconfig httpd off
node2同上
修改/etc/hosts文件,添加以下内容
# vim /etc/hosts
http://1509738.blog.运维网.com/images/editer/InBlock.gif192.168.0.154 node1.a.org node1
http://1509738.blog.运维网.com/images/editer/InBlock.gif192.168.0.164 node2.a.org node2
接下来我们用scp把这个文件copy到node2的主机上面
# scp /etc/hosts node2:/root/
查看node2的主机你就可以看到node2里的hosts文件与node1主机的一样说明复制成功
如果我们想登陆node2的主机不用输入账号命名我们给node2主机一个密钥
# ssh-keygen -t rsa# ssh-copy-id -i .ssh/id_rsa.pub root@node2回车 使用node2的密码等一下你登陆node2就不用再输入密码,直接可以进去,上传下载文件了。
反之,node2想要登陆node2不用输入密码账号,根据上面的办法就ok了。
安装软件
对了如果要安装软件包最好先配置好yum源 yum源的配置这里我们就不多说了,相信到了这一步我们学linxu的都背的滚瓜烂熟了。
配置好yum了我们就来安装一下web服务
# yum install httpd
编辑web网页文件
# vim /var/www/html/index.html
写入
http://1509738.blog.运维网.com/images/editer/InBlock.gifnode1.a.org
同理node2下也要写入这样一个文件
http://1509738.blog.运维网.com/images/editer/InBlock.gifnode2.a.org
下面是安装heartbeat
heartbeat所需的软件包有http://1509738.blog.运维网.com/images/editer/InBlock.gifheartbeat-2.1.4-9.el5.i386.rpm
http://1509738.blog.运维网.com/images/editer/InBlock.gifheartbeat-devel-2.1.4-9.el5.i386.rpm
http://1509738.blog.运维网.com/images/editer/InBlock.gifheartbeat-gui-2.1.4-9.el5.i386.rpm
http://1509738.blog.运维网.com/images/editer/InBlock.gifheartbeat-pils-2.1.4-10.el5.i386.rpm
http://1509738.blog.运维网.com/images/editer/InBlock.gifheartbeat-stonith-2.1.4-10.el5.i386.rpm
http://1509738.blog.运维网.com/images/editer/InBlock.giflibnet-1.1.4-3.el5.i386.rpm
在家命令下新建一个heartbeaat的目录
# mkdir heartbeat/
# cd heartbeat/
# yum --nogpkcheck localintall *.rpm -y
把上面要安装的软件包安装
把自带的三种文件cp到/etc/ha.d/ 下
# cp /usr/share/doc/heartbeat-2.1.4/ ha.cf ./
# cp /usr/share/doc/heartbeat-2.1.4/ authkeys ./
设置authkyes的权限为400 或600
# cp /usr/share/doc/heartbeat-2.1.4/ haresources ./
然后编辑ha.cf文件
http://1509738.blog.运维网.com/images/editer/InBlock.gifkeepalive2 //**line48 设定heartbeat之间的时间间隔为2秒
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gifdeadtime30 //**line56 在30秒后宣布节点死亡
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gifwarntime10 //**line61在日志中发出“late heartbeat“警告之前等待的时间,单位为秒
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gifudpport694 //**line76 使用端口694进行bcast和ucast通信。这是默认的
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gifbcasteth1 //**line90add 表示在eth1接口上使用广播heartbeat
http://1509738.blog.运维网.com/images/editer/InBlock.gifnodeprimary.a.com //**line214add
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gifnodestandby.a.com //**line215add
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gifrespawnhacluster/usr/lib/heartbeat/ipfail //**line255使Heartbeat以userid(这里为hacluster)的身份来执行ipfail进程
http://1509738.blog.运维网.com/images/editer/InBlock.gif
http://1509738.blog.运维网.com/images/editer/InBlock.gif 并监视该进程的执行情况
生成节点域共享密钥
# dd if=/dev/urandom bs=512 count=1 | openssl md5
http://1509738.blog.运维网.com/images/editer/InBlock.gif1+0 records in
http://1509738.blog.运维网.com/images/editer/InBlock.gif1+0 records out
http://1509738.blog.运维网.com/images/editer/InBlock.gif512 bytes (512 B) copied, 0.000819551 seconds, 625 kB/s
http://1509738.blog.运维网.com/images/editer/InBlock.gif2dedd048b4ec16b2977e80a5083ce379
编辑
# vim authkeys
http://1509738.blog.运维网.com/images/editer/InBlock.gif#auth 1
http://1509738.blog.运维网.com/images/editer/InBlock.gif#1 crc
http://1509738.blog.运维网.com/images/editer/InBlock.gif#2 sha1 HI!
http://1509738.blog.运维网.com/images/editer/InBlock.gif#3 md5 Hello!
http://1509738.blog.运维网.com/images/editer/InBlock.gifauth 2
http://1509738.blog.运维网.com/images/editer/InBlock.gif2 sha1 2dedd048b4ec16b2977e80a5083ce379
定义资源
# vim haresources
http://1509738.blog.运维网.com/images/editer/InBlock.gifnode1.a.org 192.168.0.100/24/eth0/192.165.0.255 httpd
node2的配置
node2的配置其实无node1的配置大致相同
上面已经配置了一些node2的配置了
第一还是要安装软件包,方法与node1主机的相同,
我们可以直接用命令得到我们想要的安装包
在node1的主机上
# scpheartbeat/ node2:/root/
就可以得到我们要node1上面的安装包了
node2中/etc/ha.d的文件也可以从node1中获得
# cd /usr/lib/heartbeat
# ls
http://1509738.blog.运维网.com/images/editer/InBlock.gifapi_test crmd ha_propagate logtest ra-api-1.dtd
http://1509738.blog.运维网.com/images/editer/InBlock.gifapphbd crm.dtd haresources2cib.py lrmadmin recoverymgrd
http://1509738.blog.运维网.com/images/editer/InBlock.gifapphbtest crm_primitive.py haresources2cib.pyc lrmd req_resource
http://1509738.blog.运维网.com/images/editer/InBlock.gifatest crm_primitive.pyc haresources2cib.pyo lrmtest ResourceManager
http://1509738.blog.运维网.com/images/editer/InBlock.gifattrd crm_primitive.pyo hb_addnode mach_down send_arp
http://1509738.blog.运维网.com/images/editer/InBlock.gifbase64_md5_test crm_utils.py hb_delnode mgmtd stonithd
http://1509738.blog.运维网.com/images/editer/InBlock.gifBasicSanityCheck crm_utils.pyc hb_setsite mgmtdtest stonithdtest
http://1509738.blog.运维网.com/images/editer/InBlock.gifccm crm_utils.pyo hb_setweight mlock tengine
http://1509738.blog.运维网.com/images/editer/InBlock.gifccm_testclient cts hb_standby ocf-returncodes TestHeartbeatComm
http://1509738.blog.运维网.com/images/editer/InBlock.gifcib dopd hb_takeover ocf-shellfuncs transient-test.sh
http://1509738.blog.运维网.com/images/editer/InBlock.gifcibmon drbd-peer-outdater heartbeat pengine ttest
http://1509738.blog.运维网.com/images/editer/InBlock.gifclmtest findif ipctest pingd utillib.sh
http://1509738.blog.运维网.com/images/editer/InBlock.gifcrm_commands.py ha_config ipctransientclient plugins
http://1509738.blog.运维网.com/images/editer/InBlock.gifcrm_commands.pyc ha_logd ipctransientserver quorumd
http://1509738.blog.运维网.com/images/editer/InBlock.gifcrm_commands.pyo ha_logger ipfail quorumdtest
# ./ha_propagate
页:
[1]