Heartbeat实现web服务器高可用(二)

环境介绍

客户端  --->  web1:192.168.1.140(VIP) ---> web2:192.168.1.128 () ---> NFS 存储设备:192.168.1.133 (共享网站根目录).

  • 修改主机名
  • 关闭防火墙
  • 做好相应的主机名解析

配置 NFS 服务器 ,提供存储资源 (web服务器也需要安装NFS)

[root@zh74 ~]# yum -y install nfs-utils
[root@zh74 ~]# mkdir /wwwdir
[root@zh74 ~]# echo 'Heartbeat Web Successful!'> /wwwdir/index.html
[root@zh74 ~]# cat /etc/exports
/wwwdir  192.168.1.0/24(rw)

配置目录权限
[root@zh74 ~]# ll -d /wwwdir/
drwxr-xr-x 2 root root 24 7月   3 09:53 /wwwdir/
[root@zh74 ~]# chmod 777 -R /wwwdir/
[root@zh74 ~]# ll -d /wwwdir/
drwxrwxrwx 2 root root 24 7月   3 09:53 /wwwdir/

启动服务及开机自启
[root@zh74 ~]# systemctl start nfs
[root@zh74 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@zh74 ~]# showmount -e   验证
Export list for zh74:
/wwwdir 192.168.1.0/24

两台 web 自行安装 NFS

两台 web 测试 nfs 存储挂载并安装httpd web服务器(只列出web1)

[root@zh75 ~]# yum install nfs-utils httpd -y
[root@zh75 ~]# systemctl start nfs
[root@zh75 ~]# showmount -e 192.168.1.133
Export list for 192.168.1.133:
/wwwdir 192.168.1.0/24

[root@zh75 ~]# mount -t nfs 192.168.1.133:/wwwdir /var/www/html/
[root@zh75 ~]# df -h | grep /wwwdir
192.168.1.133:/wwwdir     40G   18G   23G   44% /var/www/html

[root@zh75 ~]# systemctl start httpd

[root@zh75 ~]# elinks 192.168.1.140 --dump
   Heartbeat Web Successful!

卸载资源:后期通过Heartbeat直接加载
[root@zh75 ~]# umount /var/www/html/
[root@zh75 ~]# systemctl stop httpd.service 
[root@zh75 ~]# systemctl disable httpd
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

Web1 安装  heartbeat

  • 安装依赖包
[root@zh75 ~]# yum install -y bzip2 bzip2-devel gcc gcc-c++ autoconf automake libtool e2fsprogs-devel glib2-devel libxml2 libxml2-devel libtool-ltdl-devel asciidoc libuuid-devel docbook
  • 编译Cluster Glue
# tar jxf Reusable-Cluster-Components-glue.tar.bz2
# cd Reusable-Cluster-Components-glue--0a7add1d9996/
# groupadd haclient  创建用户组
# useradd -g haclient hacluster   创建用户
# ./autogen.sh 
# ./configure --prefix=/usr/local/heartbeat/
# make && make install
  • 编译Resource Agents
# tar -zxf resource-agents-3.9.6.tar.gz
# cd resource-agents-3.9.6
# ./autogen.sh
#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
# make
# make install
  • 编译Heartbeat
# tar -jxvf Heartbeat-3.0.6.tar.bz2
# cd Heartbeat-3-0-958e11be8686/
# ./bootstrap
# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
# make 
# make install
  • 生成配置文件

# cd /usr/local/heartbeat/etc/ha.d/
# cp /root/Heartbeat-3-0-958e11be8686/doc/{ha.cf,haresources,authkeys} .
# chkconfig --add heartbeat
# chkconfig heartbeat on
# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
# ln -sv /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
  • Heartbeat配置

Heartbeat的配置主要涉及到 ha.cf、haresources、authkeys 这三个文件。

ha.cf主配置文件,

haresource:  用来配置要让Heartbeat托管的服务

authkey是用来指定Heartbeat的认证方式

配置ha.cf---主配置文件

# vim /usr/local/heartbeat/etc/ha.d/ha.cf (注:前面数字是行号)
24 debugfile /var/log/ha-debug          ##用于记录heartbeat的调试信息
29 logfile/var/log/ha-log               ##用于记录heartbeat的日志信息
34 logfacilitylocal0                    ##设置heartbeat的日志,这里用的是系统日志
48 keepalive 2                          ##设定心跳(监测)时间时间为2秒
56 deadtime 30              ##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源
61 warntime 10              ##指定心跳延迟的时间为10秒,10秒内备节点不能接收主节点心跳信号,
                              即往日志写入警告日志,但不会切换服务
71 initdead 60              ##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍
76 udpport  694             ##广播/单播通讯使用的Udp端口
91 #bcast ens32   # Linux             ##使用网卡eno32发送心跳检测
113#mcast eth0 225.0.0.1 694 1 0     ##采用网卡eth0的Udp多播来组织心跳,一般在备用节点
      Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的的方式,任选其一
121 ucast ens32 192.168.1.128   ##采用网卡eth32的udp单播来组织心跳,后面跟的IP地址为双机对方IP地址
157 auto_failback on               ##定义当主节点恢复后,是否将服务自动切回
211 zh75                           ##主节点名称
212 zh76                           ##备用节点名称
220 ping 192.168.1.1               ##通过ping网关检测心跳是否正常,仅用来测试网络
253 respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail   ##指定和heartbeat一起启动、关闭的进程
259 apiauth ipfail gid=haclient uid=hacluster     ##设置启动IPfail的用户和组

配置haresources---资源文件

  • Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址及启动服务集群资源,文件每一行可包含一个或多个资源脚本名,资源间使用空格隔开,参数间使用两个冒号隔开,主节点和备份节点中资源文件haresources要完全一样

一般格式为:

node-name network  <resource-group>

node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的

IP地址、子网掩码和网络设备标识等。resource-group用于指定需Heartbeat托管的服务(即这些

服务可由Heartbeat来启动和关闭)。

注意:这里指定的IP地址就是集群对外服务的IP地址

如要托管这些服务,必须将服务写成可通过start/stop来启动或关闭的脚本,放到/etc/init.d/ 或/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本名称自动去 /etc/init.d 或者 /etc/ha.d/resource.d目录下找到相应脚本进行启动或关闭操作。

# vim /usr/local/heartbeat/etc/ha.d/haresources (注:一般在文件的44行)
zh75 IPaddr::192.168.1.111/24/ens32 Filesystem::192.168.1.133:/wwwdir::/var/www/html::nfs  httpd

配置authkeys --- 心跳密钥验证文件

#vim /usr/local/heartbeat/etc/ha.d/authkeys 
auth 3
3 md5 Hello!

注:auth后填序号,可任意填写,但第二行开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义密钥。

1、如果Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。
2、如果网络并不安全,但也希望降低CPU使用,则使用md5。
3、如果想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。

编写 httpd 启动脚本

# vim /usr/local/heartbeat/etc/ha.d/resource.d/httpd 
#!/bin/bash
/bin/systemctl $1 httpd 

# chmod 755 !$       赋予权限

复制配置文件 至 备机(web2)

首先安装好
Heartbeat 3.0.6
Cluster Glue 1.0.12
Resource Agents 3.9.6

# scp –rp /usr/local/heartbeat/etc/ha.d/* zh76:/usr/local/heartbeat/etc/ha.d/

测试 :手动加载VIP 192.168.1.111到ens32上

[root@zh75 ~]# cd /usr/local/heartbeat/etc/ha.d/resource.d
[root@zh75 resource.d]# ./IPaddr 192.168.1.111/24/ens32 start
IPaddr[7116]: INFO:  Success
INFO:  Success

[root@zh75 ~]# ifconfig | grep 192.168.1.111
inet 192.168.1.111  netmask 255.255.255.0  broadcast 192.168.1.255
  • 手动加载NFS存储资源到/var/www/html (加载需要fuser支持,yum install psmisc -y)

[root@zh75 ~]# cd /usr/local/heartbeat/etc/ha.d/resource.d
[root@zh75 resource.d]# ./Filesystem 192.168.1.133:/wwwdir /var/www/html/ nfs start
INFO: Running start for 192.168.1.133:/wwwdir on /var/www/html
INFO:  Success
INFO:  Success

[root@zh75 resource.d]# df -h | grep /www
192.168.1.133:/wwwdir     40G   18G   23G   44% /var/www/html
  • 手动启动 httpd 
[root@zh75 ~]# systemctl start httpd
[root@zh75 ~]# elinks 192.168.1.140 --dump
   Heartbeat Web Successful!

web2 配置 Heartbeat

[root@zh76 ~]# cat /usr/local/heartbeat/etc/ha.d/ha.cf | grep 192.168.1.140
ucast ens32 192.168.1.140

这里的IP地址是web1的

两台机器启动 heartbeat

[root@zh75 ~]# /etc/init.d/heartbeat restart
Restarting heartbeat (via systemctl):                      [  OK  ]

[root@zh76 ~]# /etc/init.d/heartbeat restart
Restarting heartbeat (via systemctl):                      [  OK  ]

[root@zh75 resource.d]# netstat -tulnp | grep 694
udp        0      0 0.0.0.0:694             0.0.0.0:*                           38360/heartbeat: wr

[root@zh76 ~]# netstat -tulnp | grep 694
udp        0      0 0.0.0.0:694             0.0.0.0:*                           116830/heartbeat: w

Web1 上查看集群和VIP

[root@zh75 resource.d]# df -h | grep /www
192.168.1.133:/wwwdir     40G   18G   23G   44% /var/www/html
[root@zh75 resource.d]# ip a | grep 111
inet 192.168.1.111/24 brd 192.168.1.255 scope global secondary ens32:0

  • 宕掉 web1 关闭网卡 资源会转到 web2上面

Heartbeat自带的断网切换的工具-ipfail

  • ipfail 断网切换的原理

ipfail这个断网切换的原理很简单,首先heartbeat要判断自己的网络是否正常其实就是通过ping某个ip,如果可以ping的通,说明网络是通的,如果ping不通了,说明是网络断了,或者是主服务器的网卡坏了,然后执行切换的动作.


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值