liyao20060101 发表于 2019-1-7 12:41:47

教你如何用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]
查看完整版本: 教你如何用heartbeat搭建一个高可用的web集群