参考:
https://www.cnblogs.com/wuzejian/p/7bafa47ddbb5f969c412f8124800f3c9.html HA双机热备的实现(heartbeat)
https://blog.csdn.net/weixin_34117211/article/details/92336917?utm_medium=distribute.pc_relevant.none-task-blog-title-8&spm=1001.2101.3001.4242 centOS 7下安装与配置heartbeat高可用集群
关闭防火墙:
systemctl stop firewalld.service
![](https://img-blog.csdnimg.cn/20201026172130703.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlaXd1aGVuOTI=,size_16,color_FFFFFF,t_70)
一、前提准备
在每个节点做以下配置:
关闭firewall: systemctl stop firewalld.service同步时间:ntpdate 10.0.0.100 配置主机名:echo "node1" >> /etc/hostname 修改/etc/hosts[root@node1 /]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.21.144.113 node2 10.21.144.112 node1
5.配置主机间ssh互信,免秘钥认证
[root@node1 ~]# ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa [root@node1 ~]# ssh-copy-id root@10.21.144.113
二、安装 node1与node2节点都需要操作
1、安装基础环境包yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc
2、创建用户与组
groupadd haclient useradd -g haclient hacluster
3、下载软件包:Reusable-Components-glue、resource-agents、heartbeat
4、安装gluetar 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
5、安装Resource Agents
tar xf resource-agents-3.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
6、安装Heartbeat
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 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/
7、配置网卡支持插件文件
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/
三、配置heartbeat
#拷贝三个模板配置文件到
/usr/local/heartbeat/etc/ha.d/目录下
![](https://img-blog.csdnimg.cn/2020102617273498.png)
1、配置ha.cf文件:#该配置文件用于配置 心跳的核心配置
vi /usr/local/heartbeat/etc/ha.d/ha.cf
debugfile /var/log/ha-debug #表示调试的日志文件 一般测试建议开启logfile /var/log/ha-log #表示系统的的日志文件路径logfacility local0 #表示使用系统日志与上面只能开启一个keepalive 2 #主备之间的心跳间隔时间单位:sdeadtime 30 #表示如果连接对方30s还无法连接,表示节点死亡需要考虑vip转移warntime 10 #表示10s时间未收到心跳时发出警告日志initdead 120 #有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后,再开始判断心跳检测udpport 694 #多播的udp端口#baud 19200 #串行端口的波特率#serial /dev/ttyS0 # Linux #串口的接口名#serial /dev/cuaa0 # FreeBSD#serial /dev/cuad0 # FreeBSD 6.x#serial /dev/cua/a # Solarisbcast ens33 #设置广播通信所使用的网络接口卡。(我们这里设置为ens33,专门用来探测心跳)#bcast eth0 # Linux #传播心跳的广播网卡信息#bcast eth1 eth2 # Linux#bcast le0 # Solaris#bcast le1 le2 # Solaris#mcast eth0 225.0.0.1 694 1 0 #多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送ucast ens33 192.168.146.150 #设置单播心跳,设置对方的ip地址,此处使用单播auto_failback on #表示如果主机停止后,从机接管设置为on,当主机从新启动后,主机立即接管vip off从机不会释放vip给主机node node1 #配置主从的节点信息,要与uname -n保持一致node node2
2、配置authkeys文件:
#
该文件表示发送心跳时,机器用于验证的key的hash算法,节点之间必须配置成一致的密码
vi /usr/local/heartbeat/etc/ha.d/authkeys
auth 3 #表示使用id为3的算法,下面需定义一个3的验证算法#1 crc#2 sha1 HI! #三种算法安全性逐渐增强,我们这里选择的md5,Hello为密码,也可以3 md5 Hello! #自己使用生成的md5密码。更改权限为600: chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
3、配置haresources文件:
#
该文件表示资源的管理,如果是主机,当主机启动后自动加载该文件中配置的所有启动资源,资源脚本默认在haresources同级目录下的resource.d目录下
vi /usr/local/heartbeat/etc/ha.d/haresources
# 指定节点主机名,和VIP地址,以双冒号分隔资源,此处以apache为例进行配置node1 10.21.144.115 apache::/etc/httpd/conf/httpd.conf
4、node2节点上也要进行步骤1、2、3的配置
四、安装httpd资源服务
#在 每个节点上安装httpd服务并测试[root@node1 ]# yum install httpd [root@node1 ]# echo "node1 test page" > /var/www/html/index.html [root@node1 ]# service httpd start
测试是否可用:
![]()
#测试httpd服务正常后关闭httpd服务并关闭自启动:
[root@node1 ]# systemctl stop httpd [root@node1 ]# systemctl disable httpd
node2节点上做如上相同操作
五、启动heartbeat服务
#在
每个节点上分别启动heartbeat服务
[root@node1 ]# systemctl enable heartbeat
[root@node1 ]# systemctl start heartbeat
[root@node1 ]# ssh node2 'systemctl start heartbeat'
通过 systemctl status heartbeat分别在节点node1、node2上检查服务状态,若是ok,此时可以用浮动IP 10.21.144.115访问httpd服务
![](https://img-blog.csdnimg.cn/20201026173156323.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlaXd1aGVuOTI=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20201026173156259.png)
可以模拟宕机测试,看访问浮动IP 10.21.144.115会不会在node1与node2上自动切换。
五、启动heartbeat服务