1 、软件包下载
下载地址:http://www.linux-ha.org/wiki/Downloads
wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
2、安装Cluster Glue : 0a7add1d9996.tar.bz2
安装依赖:
yum -y install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc
添加用户和组:
groupadd haclient
useradd -g haclient hacluster -s /sbin/nologin
解压软件包:我的软件包全放在/opt 目录下,需要把这三个包全部安装到同一目录下:/usr/local/heartbeat/
tar -jxvf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
./autogen.sh
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5YTO3IDO4QjMwQjM0QTNx8CX4AjMxgTMwIzLcNXZnFWbp9CXvwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
make && make install
没有error就完成这个软件的编译安装了
3、安装resource-agents: v3.9.6.tar.gz
解压:tar -jxvf v3.9.6.tar.gz
cd resource-agents-3.9.6
./autogen.sh
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'
ln -s /usr/local/heartbeat/lib/* /lib/
ln -s /usr/local/heartbeat/lib/* /lib64/
make
make install
4、安装heartbeat:958e11be8686.tar.bz2
tar -jxvf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686/
./bootstrap
把heartbeat的三个配置文件ha.cf、haresources、authkeys拷贝到安装目录
cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/
5、安装nginx服务
yum install epel*
yum install -y nginx
systemctl start nginx
关闭防火墙和selinux:
systemctl stop firewalld
setenforce 0
通过浏览器访问IP地址,能正常显示nginx测试页面
5、两台服务器都编译安装完成,开始配置
authkeys文件用于heartbeat的鉴权设置,共有三种可用的方式crc、md5和sha1。两台服务器设置一样即可。
vim /usr/local/heartbeat/etc/ha.d/authkeys
修改权限:chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
*这里注意一点 一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常
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 -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
haresources主要是创建VIP和配置接管的资源
vi /usr/local/heartbeat/etc/ha.d/haresources
在结尾增加:xuexi1 IPaddr::192.168.15.77/24/ens33 nginx
格式:本机主机名 虚拟VIP地址 网卡名 资源脚本
资源脚本:在目录:/usr/local/heartbeat/etc/ha.d/resource.d/
vim nginx 增加如下一条语句:
systemctl start nginx
保存并修改权限:chmod 755 nginx
ha.cf 文件是heartbeat的主要配置文件, 可以对heartbeat的多数性能与状态进行配置, 多数选项可以采用默认值
[root@xuexi1 ha.d]# grep -v '^#' ha.cf
debugfile /var/log/ha-debug ##设置日志
logfile /var/log/ha-log
keepalive 2 ##设置心跳时间,单位秒
deadtime 30 ##超过该时间间隔没有收到心跳,认为对方已经死了
warntime 10 ##超过该时间间隔没有收到心跳,则发出警告并记录到日志中
initdead 120 ##在部分系统上,系统启动或重启时要经过一段时间,网络才能正常工作,该选项用于解决此情况的时间间隔
udpport 694 ##广播通信的端口,默认
ucast ens33 192.168.15.176 ##ha所用的网络接口卡,从点的地地址和网卡
auto_failback off ##主节点恢复故障后是否接管从节点的资源
node xuexi1 xuexi2 ##指定两个节点
ping 192.168.15.1 ##指定ping节点,主要用于网络测试
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail ##表示ping不通时,自动调用ipfail这个脚本
6、从节点配置三个配置文件基本一样,只需要修改ha.cf 的心跳:ucast ens33 192.168.15.126 为主节点的ip
7、测试:把nginx关闭
启动主节点的heartbeat:service heartbeat start ,等一会儿,看一下网卡信息,VIP出来了启动完成
在浏览器中访问VIP:能访问到nginx的默认页面,启动完成
启动从节点的heartbeat:service ehartbeat start
模拟:主节点宕机:关闭主节点服务器或关闭heartbeat服务和关闭nginx服务
查看从节点的网卡信息:是否出现VIP
继续通过浏览器访问VIP,还能继续访问,说明VIP自动转移到从节点了。