我是靠谱客的博主 长情乌冬面,最近开发中收集的这篇文章主要介绍Centos7安装配置heartbeat,实现nginx服务的故障切换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、实验环境

IP地址主机名安装软件
192.168.200.115serverEnginx,heartbeat
192.168.200.116serverFnginx,heartbeat

二、heartbeat的安装

  • 安装所需要的软降包

  • 安装所需要的依赖包

yum -y install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc psmisc	net-tools
  • 创建所需要的用户和组
groupadd haclient
useradd -g haclient hacluster
  • 安装过程
tar xf 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'
make && make install
cd

tar xf 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
cd

tar xf 958e11be8686.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
  • 复制配置文件,做链接
cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/
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 -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/

三、配置配置文件(/usr/local/heartbeat/etc/ha.d/下)

  • 修改authkeys文件
auth 1
#使用1验证
1 crc
#1验证的密码,两台机器保持一致,密码随便设置
#2 sha1 HI!
#3 md5 Hello!
  • ha.cf文件解释
#表示调试的日志文件 一般测试建议开启 因为一旦启动服务报错 就可以根据日志定位错误
debugfile /var/log/ha-debug
#表示系统的的日志文件
logfile /var/log/ha-log
#表示使用系统日志
logfacility
local0
#主备之间的心跳间隔时间单位:s
#keepalive 2
#表示如果连接对方 30s 还无法连接 表示节点死亡 需要考虑vip转移
#deadtime 30
#表示10s时间未收到心跳时发出警告日志
#warntime 10
#有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后 再开始判断心跳
检测
#initdead 120
#多播的udp端口
udpport 694
#串行端口的波特率
#baud
19200
#串口的接口名
#serial /dev/ttyS0
# Linux
#serial /dev/cuaa0
# FreeBSD
#serial /dev/cuad0
# FreeBSD 6.x
#serial /dev/cua/a
# Solaris
#传播心跳的广播播网卡信息
#bcast
eth0
# Linux
#bcast
eth1 eth2
# Linux
#bcast
le0
# Solaris
#bcast
le1 le2
# Solaris
#多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送
#mcast eth0 225.0.0.1 694 1 0
#设置单播心跳 设置对方的ip地址
ucast eno33554984 192.168.200.128
#表示 如果主机停止后 从机接管
设置为 on 当主机从新启动后 主机立即接管vip
off 从机不会释放vip给主机
auto_failback on
#配置主从的节点信息,主从节点的主机名
node
ha
node
ha1
#############################################
#使用ping模式 有时当主机挂掉或者heartbeat挂掉后vip才会转移
有时出现某个进程挂掉 切换需要使用脚本
#ping模式用于测试 如果网卡ping不同 某个主机 就认为当前断网 需要转移vip
#respawn root
/usr/local/heartbeat/libexec/heartbeat/ipfail 表示当ping不通时 自动调用 ipfail这个脚本
#apiauth ipfail gid=haclient uid=hacluster 表示有权限操作ipfail脚本的组和用户
############################################
ping 192.168.200.2
#ping组的所有主机
#ping_group group1 10.10.10.254 10.10.10.253
#respawn userid /path/name/to/run
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
  • 实验配置的ha.cf文件
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eno16777728 192.168.200.116
#此处需要修改 设置另一台机器的ip 地址
auto_failback on
node serverE
#此处默认为master机器的hostname
node serverF
#此处默认为slave机器的hostname
ping 192.168.200.2
# 此处设置自己的网关
ping 192.168.200.2
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
  • 配置haresources文件
serverE IPaddr::192.168.200.6/24/eno16777728:0 nginx.sh
serverE #主服务器名
192.168.200.6/24/ #VIP地址
/eno16777728:0 #网卡名
nginx.sh #resource.d/下写的脚本启动时运行
  • nginx.sh
#/usr/local/heartbeat/etc/ha.d/resource.d/下创建
vim /usr/local/heartbeat/etc/ha.d/resource.d/nginx.sh
#!/bin/bash
if [ $(netstat -lnupt | grep nginx | wc -l) -eq 0 ];then
systemctl restart nginx
if [ $(netstat -lnupt | grep nginx | wc -l) -eq 0 ];then
systemctl stop heartbeat
fi
else
echo "nginx" &> /dev/null
fi
~

四、安装nginx服务

yum -y install nginx

五、测试

  • 开启heartbeat服务
 systemctl restart heartbeat
  • 查看nginx服务
#开启服务nginx自动重启,说明nginx.sh没问题
[root@serverE ~]# netstat -lnupt | grep nginx
tcp
0
0 0.0.0.0:80
0.0.0.0:*
LISTEN
35856/nginx: master
tcp6
0
0 :::80
:::*
LISTEN
35856/nginx: master
  • 关闭heartbeat服务
#主关闭服务
[root@serverE ~]# systemctl stop heartbeat
#查看从,已经成功切换
[root@serverF ~]# ip a | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.200.116/24 brd 192.168.200.255 scope global eno16777728
inet 192.168.200.6/24 brd 192.168.200.255 scope global secondary eno16777728:0
inet6 fe80::20c:29ff:fedd:b51c/64 scope link

最后

以上就是长情乌冬面为你收集整理的Centos7安装配置heartbeat,实现nginx服务的故障切换的全部内容,希望文章能够帮你解决Centos7安装配置heartbeat,实现nginx服务的故障切换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部