教你如何用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地址
[root@ssss ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO= static
IPADDR=192.168.0.154
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=00:0c:29:a4:bd:10
主机名更改
[root@node1 ~]# vim /etc/sysconfig/network
修改主机名字为
HOSTNAME=node1.a.org
在用hostname 在进行修改 两件修改要保持一致
[root@node1 ~]# hostname node1.a.org
[root@node1 ~]# hostname 查看
node1.a.org
然后我们把web的服务停止让他开机不自动启动
[root@node1 ~]# service httpd stop
[root@node1 ~]# chkconfig httpd off
node2同上
修改/etc/hosts文件,添加以下内容
 [root@node1 ~]# vim /etc/hosts
192.168.0.154     node1.a.org         node1
192.168.0.164     node2.a.org         node2
接下来我们用scp把这个文件copy到node2的主机上面
[root@node1 ~]# scp /etc/hosts node2:/root/
查看node2的主机你就可以看到node2里的hosts文件与node1主机的一样说明复制成功
如果我们想登陆node2的主机不用输入账号命名我们给node2主机一个密钥
[root@node1 ~]# ssh-keygen -t rsa[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2
回车 使用node2的密码  等一下你登陆node2就不用再输入密码,直接可以进去,上传下载文件了。
反之,node2想要登陆node2不用输入密码账号,根据上面的办法就ok了。
安装软件
对了如果要安装软件包最好先配置好yum源 yum源的配置这里我们就不多说了,相信到了这一步我们学linxu的都背的滚瓜烂熟了。
配置好yum了我们就来安装一下web服务
[root@node1 ~]# yum install httpd
编辑web网页文件
[root@node1 ~]# vim /var/www/html/index.html
写入
<h1>node1.a.org</h1>
同理node2下也要写入这样一个文件
<h1>node2.a.org</h1>
下面是安装heartbeat
heartbeat所需的软件包有
heartbeat-2.1.4-9.el5.i386.rpm
heartbeat-devel-2.1.4-9.el5.i386.rpm
heartbeat-gui-2.1.4-9.el5.i386.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.rpm
libnet-1.1.4-3.el5.i386.rpm
在家命令下新建一个heartbeaat的目录
[root@node1 ~]# mkdir heartbeat/
[root@node1 ~]# cd heartbeat/
[root@node1 heartbeat]# yum --nogpkcheck localintall *.rpm -y
把上面要安装的软件包安装
把自带的三种文件cp到/etc/ha.d/ 下
[root@node1 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ ha.cf ./
[root@node1 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ authkeys ./
设置authkyes的权限为400 或600
[root@node1 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ haresources ./
然后编辑ha.cf文件
keepalive2 //**line48 设定heartbeat之间的时间间隔为2秒    

deadtime30 //**line56 在30秒后宣布节点死亡    

warntime10 //**line61在日志中发出“late heartbeat“警告之前等待的时间,单位为秒    

udpport694 //**line76 使用端口694进行bcast和ucast通信。这是默认的    

bcasteth1         //**line90add 表示在eth1接口上使用广播heartbeat    
nodeprimary.a.com //**line214add    

nodestandby.a.com     //**line215add    

respawnhacluster/usr/lib/heartbeat/ipfail //**line255使Heartbeat以userid(这里为hacluster)的身份来执行ipfail进程    

                                                                            并监视该进程的执行情况
 
生成节点域共享密钥
[root@node1 ha.d]# dd if=/dev/urandom bs=512 count=1 | openssl md5
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000819551 seconds, 625 kB/s
2dedd048b4ec16b2977e80a5083ce379
编辑
[root@node1 ha.d]# vim authkeys
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
auth 2
2 sha1 2dedd048b4ec16b2977e80a5083ce379
定义资源
[root@node1 ha.d]# vim haresources
node1.a.org         192.168.0.100/24/eth0/192.165.0.255 httpd
 
node2的配置
node2的配置其实无node1的配置大致相同
上面已经配置了一些node2的配置了
第一还是要安装软件包,方法与node1主机的相同,
我们可以直接用命令得到我们想要的安装包
在node1的主机上
[root@server31 ~]# scp  heartbeat/ node2:/root/
就可以得到我们要node1上面的安装包了
node2中/etc/ha.d的文件也可以从node1中获得
[root@server31 ~]# cd /usr/lib/heartbeat
[root@server31 heartbeat]# ls
api_test                    crmd                                ha_propagate                 logtest                    ra-api-1.dtd
apphbd                        crm.dtd                         haresources2cib.py     lrmadmin                 recoverymgrd
apphbtest                 crm_primitive.py        haresources2cib.pyc    lrmd                         req_resource
atest                         crm_primitive.pyc     haresources2cib.pyo    lrmtest                    ResourceManager
attrd                         crm_primitive.pyo     hb_addnode                     mach_down                send_arp
base64_md5_test     crm_utils.py                hb_delnode                     mgmtd                        stonithd
BasicSanityCheck    crm_utils.pyc             hb_setsite                     mgmtdtest                stonithdtest
ccm                             crm_utils.pyo             hb_setweight                 mlock                        tengine
ccm_testclient        cts                                 hb_standby                     ocf-returncodes    TestHeartbeatComm
cib                             dopd                                hb_takeover                    ocf-shellfuncs     transient-test.sh
cibmon                        drbd-peer-outdater    heartbeat                        pengine                    ttest
clmtest                     findif                            ipctest                            pingd                        utillib.sh
crm_commands.py     ha_config                     ipctransientclient     plugins
crm_commands.pyc    ha_logd                         ipctransientserver     quorumd
crm_commands.pyo    ha_logger                     ipfail                             quorumdtest
[root@server31 heartbeat]# ./ha_propagate
 
就可以把ha.cf authkeys文件copy到node2上了
但是这个脚本文件不能把herecources拷贝到node1上 我们要手动的复制用scp命令,接下了 我们可以测试了 测试之前要想把heartbeat
[root@server31 ha.d]# /etc/init.d/heartbeat start
二个都要启动
测试 在本地机器上输入 http://192.168.0.100 可以进行测试
打开的是node1上面的网页  当我们的node1的httpd服务停止了服务,就可以显示node2的网页内容。
好了实验基本完成,可能有点小毛病,求大家指点
这是我的论坛 http://51linux.5d6d.com 
 
 

你可能感兴趣的:(职场,heartbeat,休闲,web集群,我爱linux论坛)