Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

这篇文章给大家介绍Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

配置heartbeat v2基于haresources配置文件的httpd高可用集群。

 ll  要求 

完全掌握heartbeat v2基于haresources配置文件的httpd高可用服务。

  前期准备 

1、heartbeat服务主机规划

主机 接口 ip 服务 用途
node1.chanedu.com eth0 192.168.1.131

heartbeat

httpd

LAN数据转发

eth2 192.168.2.131 心跳信息链路

vip 192.168.1.180 提供给外部访问httpd的ip
node1.chanedu.com eth0 192.168.1.132

heartbeat

httpd

LAN数据转发

eth2 192.168.2.132 心跳信息链路
shared.chanedu.com eth0 192.168.1.150 nfs LAN数据转发

2、架构图

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

3、配置yum源

rpm -ivh https://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm

4、同步时间

两个节点的时间必须一致,可以使用网络时间服务器或本地ntpd服务器同步事件,我这里直接同步网络时间服务器

ntpdate 202.120.2.101

5、节点名称和IP地址必须能互相解析,保证/etc/hosts文件中主机名的正反解析结果与‘uname -n’的名称一致

分别在node1和node2中的/etc/hosts添加下面的名称解析

echo "192.168.1.131    node1.chanedu.com    node1" >> /etc/hosts
echo "192.168.1.132    node2.chanedu.com    node2" >> /etc/hosts

6、配置节点心跳连接

node1和node2都使用eth2网卡互相连接,不经过交换机,直接用网线连接node1上的eth2和node2上的eth2,用作心跳检测

node1上的eth2:192.168.2.131
node2上的eth2:192.168.2.132

在node1和node2两台主机上分别增加一条主机路由,实现两台主机检测对端时通过eth2网卡来实现心跳检测

在node1上添加:

route add -host 192.168.2.132 dev eth2
# 这条命令的意思是从node1访问192.168.2.132(node2),走eth2网卡出去
echo "route add -host 192.168.2.132 dev eth2" >> /etc/rc.local

在node2上添加:

route add -host 192.168.2.131 dev eth2
# 这条命令的意思是从node1访问192.168.2.131(node1),走eth2网卡出去
echo "route add -host 192.168.2.131 dev eth2" >> /etc/rc.local

7、为了保证通信安全,节点之间使用ssh密码的方式进行通信,可以使用“ssh-keygen -t  rsa”命令产生密钥。

ssh-keygen -t rsa
ssh-copy-id root@192.168.1.132

  安装heartbeat v2 

由于heartbeat-pils在CentOS-6.5后被cluster-glue取代了,所以需要手动解决依赖关系

1、解决依赖关系

yum install perl-TimeDate net-snmp-libs libnet PyXML
rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

注意:libnet在epel源中

  node1、node2主机安装httpd 

这里不演示

  shared主机安装nfs 

这里不演示

  配置httpd高可用集群 

1、复制ha.cf、haresources、authkey这三个文件至/etc/ha.d文件中

cd /usr/share/doc/heartbeat-2.1.4/
cp ha.cf haresources authkeys /etc/ha.d/
cd /etc/ha.d/
ls
authkeys  ha.cf  harc  haresources  rc.d  README.config  resource.d  shellfuncs

2、配置heartbeat的基本参数,直接编辑/etc/ha.d/ha.cf

vim /etc/ha.d/ha.cf 
grep -v "#" /etc/ha.d/ha.cf 
debugfile /var/log/ha-debug
logfile/var/log/ha-log
logfacilitylocal0
keepalive 1000ms
deadtime 8
warntime 4
initdead 60
udpport694
ucast eth2 192.168.1.132
auto_failback on
nodenode1.chanedu.com
nodenode2.chanedu.com
ping 192.168.1.1

这里有一点要注意,上面的ha.cf配置是node1上的,node2上的配置要修改单播地址

ucast eth2 192.168.1.131

3、配置heartbeat资源,定义node1为主节点,直接编辑/etc/ha.d/haresources

vim /etc/ha.d/haresources
node1.chanedu.com       192.168.1.180/24/eth0   httpd

以上的ip地址即是vip,是向外提供httpd服务的地址,子网掩码为24位,从eth0接口配置别名

4、配置认证文件,编辑/etc/ha.d/authkeys

chmod 600 /etc/ha.d/authkeys
openssl hand -hex 12
6107510ab21f17a41d377135
vim /etc/ha.d/authkeys
auth 2
#1 crc
2 sha1 6107510ab21f17a41d377135
#3 md5 Hello!

5、将ha.cf、haresources、authkeys这3各文件copy至node2的/etc/ha.d/目录下,并保留文件权限

rsync -p /etc/ha.d/{
ha.cf,haresources,authkeys} root@192.168.1.132:/etc/ha.d/

6、设置node1和node2节点的httpd开机不自动启动,并停止httpd服务。

service httpd stop
chkconfig httpd off

7、启动heartbeat服务

在node1节点上启动heartbeat服务并查看是否存在eth0:0

service heartbeat start

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

在node1上启动node2的heartbeat服务

[root@node1 ha.d]# ssh node2 'service heartbeat start'
Starting High-Availability services: 
2017/05/08_23:46:22 INFO:  Resource is stopped
Done.
[root@node1 ha.d]# ssh node2 'ss -unl'
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
UNCONN     0      0                         *:694                      *:*     
UNCONN     0      0                         *:45373                    *:*

以上可以看到node2已经监听在UDP:694上了,正明node2已经成功启动。

  客户端访问测试 

在客户端访问192.168.1.180

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

可以访问,表示heartbeat的基本配置没有问题。接下来模拟node1宕机,这里直接停掉node1的heartbeat服务,看下是否能直接跳转到node2

root@node1 ha.d]# service heartbeat stop
Stopping High-Availability services: 
Done.

查看node2的IP地址,发现VIP资源已经被node2接管了。

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

再次访问客户端,httpd资源也已经转移到node2节点。

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

  基于nfs共享存储的httpd高可用 

配置集群服务中两个节点共享后端NFS文件系统资源,将shared主机添加一个共享文件夹并修改属主为apache用户

cat /etc/exports 
  /www/htdocs    192.168.1.0/24(rw,no_root_squash,async)
setfacl -m u:apache:rwx /www/htdocs/
echo "<h2>Page in NFS Server.</h2>" > /www/htdocs/index.html

修改node1的haresources资源配置文件,指定挂载共享NFS文件系统,并同步至node2节点的/etc/ha.d/目录下

vim /etc/ha.d/haresources
node1.chanedu.com       192.168.1.180/24/eth0   Filesystem::192.168.1.180:/www/var/shared::/var/www/html/::nfs httpd
rsync /etc/ha.d/haresources root@192.168.2.132:/etc/ha.d/
ssh node2 'service heartbeat stop'
service heartbeat stop
service network restart
ssh node2 'service network restart'
service heartbeat start
ssh node2 'service heartbeat start'

在客户端访问192.168.1.180,成功访问到了后端nfs共享存储的页面。

这里有一点需要注意,请确保node1和node2节点能够成功挂载并shared主机的共享目录,而后要使用curl命令访问下本机的。这里最好测试下,如果你的CentOS或者Redhat是最小化安装,默认是没有安装nfs-client客户端的,mount.nfs命令也就没有,如果没有就不能成功挂载nfs共享目录,那么HA就无法生效。

在node1和node2节点上挂载/www/htdocs目录至/var/www/html目录。

mount -t nfs 192.168.1.150:/www/htdocs /var/www/html
[root@node1 heartbeat]# curl http://192.168.1.131
<h2> Page in NFS Server.</h2>
[root@node2 heartbeat]# curl http://192.168.1.132
<h2> Page in NFS Server.</h2>

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

停止node1的heartbeat服务

ssh node1 'service heartbeat stop'

Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群

在/usr/share/heartbeat/目录下,有很多脚本文件,其中:

运行hb_standby脚本,指将自己变为备节点;比如在node1上运行hb_standby脚本,资源将被node2接管

运行hb_takeover脚本,指重启对方节点;比如,node1已经是备节点,在node1上运行hb_takeover脚本将重启node2节点,此时,node1认为node2宕机,所以node1将重新接管资源。

这里不演示了,很简单。

  总结 

1、基于haresources配置文件的heartbeat v2.x版本的httpd高可用集群实现起来是比较简单的,但是它的功能毕竟有限,如果需要更强大的功能,pacemaker无疑是比较好的选择。

2、因为最小化安装centos的原因,node2节点没有安装nfs-client等软件,没有mount.nfs命令,导致测试到后面node1资源一致不能转移到node2节点,排查了很多原因,最终找到罪魁祸首是node2无法挂载nfs共享文件系统的缘故,自己不细心导致实验时间变长,如果是在生产环境中,这种情况是不允许发生的。

关于Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。