千家信息网

Mysql DBA 高级运维学习之路-heartbeat高可用软件的安装及配置

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,1.部署Heartbeat高可用需求1.1 操作系统[root@heartbeat-1-114 ~]# cat /etc/redhat-release CentOS release 6.9 (Fina
千家信息网最后更新 2024年11月23日Mysql DBA 高级运维学习之路-heartbeat高可用软件的安装及配置

1.部署Heartbeat高可用需求

1.1 操作系统

[root@heartbeat-1-114 ~]# cat /etc/redhat-release CentOS release 6.9 (Final)

1.2 Heartbeat服务主机资源准备

主服务器A:

主机名:heartbeat-1-114

eth0网卡地址:192.168.136.114(管理IP)

eth2网卡地址:10.0.10.4/255.255.255.0 (心跳IP)

从服务器B:

主机名:heartbeat-1-115

eth0网卡地址:192.168.136.115(管理IP)

eth2网卡地址:10.0.10.5/255.255.255.0(心跳IP)

虚拟VIP:

虚拟VIP在主服务器heartbeat-1-114上,VIP:192.168.136.116

仲裁主机:10.0.10.6

2.Heartbeat高可用实施准备

2.1 搭建虚拟真实环境

2.2 给虚拟机配置IP和主机名

配置IP就省略了,设置两台主机的主机名分别为heartbeat-1-114和heartbeat-1-115。分别编译两台机器的/etc/sysconfig/network配置文件,设置HOSTNAME=heartbeat-1-114和HOSTNAME=heartbeat-1-115。然后在命令行下执行hostname heartbeat-1-114和hostname heartbeat-1-115使设置马上生效,注意/etc/hosts文件中127.0.0.1对应的主机名不要配置。

提示:可以执行setup命令然后选network configuration-->Edit configuration即可配置机器名,然后logout退出重新登录后生效。

2.3 配置hosts文件(两个节点都要做)

提示:两台机器必须互相能ping通

在heartbeat-1-114主机上配置hosts文件

[root@heartbeat-1-114 ~]# cat >>/etc/hosts< 192.168.136.114 heartbeat-1-114> 192.168.136.115 heartbeat-1-115> EOF

在heartbeat-1-115主机上配置hosts文件

[root@heartbeat-1-115 ~]# cat >>/etc/hosts< 192.168.136.114 heartbeat-1-114> 192.168.136.115 heartbeat-1-115> EOF

通过ping ip地址的方法检查测试,看其返回的IP是不是和/etc/hosts中配置的内容一致。

特别强调:机器名必须是uname -n返回的结果

[root@heartbeat-1-114 ~]# uname -nheartbeat-1-114[root@heartbeat-1-115 ~]# uname -nheartbeat-1-115

提示:hosts文件的配置在heartbeat服务中会用到,后文的drbd及存储高可用也会用到,在生产环境中会把所有的机器名对应上所有的机器IP地址,可以通过分发工具统一分发到所有机器的/etc/hosts中。

2.4 配置服务间的心跳连接

eth2 10.0.10.5和eth2 10.0.10.4两块网卡之间通过普通网线连接的,即不通过交换机,直接用网线将两块网卡连在一起,用于做心跳检测或传数据等。

提示:高可用服务器对上的heartbeat软件会利用这条心跳线来检查对端的机器是否存活,进而决定是否做故障转移,资源切换,来保证业务的连续性。
如果条件允许,以上连接可同时使用,来加大保险系数防止裂脑问题的发生。

本次案例:选用以太网电缆两网卡直连。

选用原因:简单,容易部署、效果也不错。

在两台机器上分别增加一条主机路由,来实现两台机器检查对端时通过这个心跳线线路检查。

(1)在heartbeat-1-114上添加主机主机路由:

[root@heartbeat-1-114 ~]# /sbin/route add -host 10.0.10.4 dev eth2

添加到开机自启动配置文件中

[root@heartbeat-1-114 ~]# echo "/sbin/route add -host 10.0.10.4 dev eth2">>/etc/rc.local

(2)在heartbeat-1-115上增加如下主机路由:

[root@heartbeat-1-115 ~]# /sbin/route add -host 10.0.10.5 dev eth2

添加到开机自启动配置文件中

[root@heartbeat-1-115 ~]# echo "/sbin/route add -host 10.0.10.5 dev eth2">>/etc/rc.local

提示:要确保心跳线路是通的

2.5 配置虚拟VIP

在主服务器上heartbeat-1-114上配置辅助VIP,辅助ip用ip addr命令查看

[root@heartbeat-1-114 ha.d]# ip addr add 192.168.136.116/24 dev eth0:1[root@heartbeat-1-114 ha.d]# ip addr|grep "116"inet 192.168.136.116/24 brd 192.168.136.255 scope global secondary eth0:1

2.6 关闭防火墙和selinux(两台节点都要操作)

[root@heartbeat-1-114 ~]# /etc/init.d/iptables statusiptables: Firewall is not running.[root@heartbeat-1-114 ~]# getenforceDisabled[root@heartbeat-1-115 ~]# /etc/init.d/iptables statusiptables: Firewall is not running.[root@heartbeat-1-115 ~]# getenforceDisabled

3.搭建heartbeat高可用

3.1 安装heartbeat3.0软件

CentOS-6.8-x86_64的rpm包没有heartbeat软件,所以要下载epel包

[root@heartbeat-1-114 ~]# yum search heartbeat已加载插件:product-id, subscription-managerThis system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.rhel-local   | 4.1 kB 00:00 ... 警告:没有匹配 heartbeat 的软件包没有找到匹配的软件包

3.2 下载并安装epel扩展源(两台都要操作)

[root@heartbeat-1-114 ~]# mkdir -p /home/linzhongniao/tools [root@heartbeat-1-114 ~]# cd /home/linzhongniao/tools  [root@heartbeat-1-114 tools]# wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm --2018-11-02 23:04:38--  http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpmResolving mirrors.ustc.edu.cn... 218.104.71.170, 2001:da8:d800:95::110Connecting to mirrors.ustc.edu.cn|218.104.71.170|:80... connected.HTTP request sent, awaiting response... 301 Moved PermanentlyLocation: http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm [following] --2018-11-02 23:04:38--  http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpmReusing existing connection to mirrors.ustc.edu.cn:80.HTTP request sent, awaiting response... 200 OKLength: 14540 (14K) [application/x-redhat-package-manager]Saving to: "epel-release-6-8.noarch.rpm.1"100%[==================================================================>] 14,540  --.-K/s   in 0.04s   2018-11-02 23:04:38 (371 KB/s) - "epel-release-6-8.noarch.rpm.1" saved [14540/14540][root@heartbeat-1-114 tools]# rpm -ivh epel-release-6-8.noarch.rpmwarning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing...########################################### [100%]   1:epel-release   ########################################### [100%][root@heartbeat-1-114 tools]# rpm -qa|grep epelepel-release-6-8.noarch

3.3 安装heartbeat(两台都要操作)

yum install heartbeat* -y

提示:如果yum安装后想保留rpm包,用下面的方法。

[root@heartbeat-1-114 ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf [root@heartbeat-1-114 ~]# grep keepcache /etc/yum.conf keepcache=1

3.4 主节点配置heartbeat服务

两台机器分别执行安装heartbeat软件后,不出意外就可以安装好heartbeat软件了。前面已经提到了,heartbeat的默认配置文件目录为/etc/ha.d。heartbeat常用的配置文件有三个,ha.cf、authkey和haresource,各自的作用见下面的表格。

3.4.1 配置ha.cf文件及文件说明

(1)先把ha.cf、haresources和authkeys这三个文件拷到/etc/ha.d/目录下

[root@heartbeat-1-114 ~]# ll /usr/share/doc/heartbeat-3.0.4/total 144 -rw-r--r-- 1 root root  1873 Dec  3  2013 apphbd.cf -rw-r--r-- 1 root root   645 Dec  3  2013 authkeys -rw-r--r-- 1 root root  3701 Dec  3  2013 AUTHORS -rw-r--r-- 1 root root 58752 Dec  3  2013 ChangeLog -rw-r--r-- 1 root root 17989 Dec  3  2013 COPYING -rw-r--r-- 1 root root 26532 Dec  3  2013 COPYING.LGPL -rw-r--r-- 1 root root 10502 Dec  3  2013 ha.cf -rw-r--r-- 1 root root  5905 Dec  3  2013 haresources -rw-r--r-- 1 root root  2935 Dec  3  2013 README[root@heartbeat-1-114 ~]# cd /usr/share/doc/heartbeat-3.0.4/[root@heartbeat-1-114 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/

(2)配置ha.cf配置文件

[root@heartbeat-1-114 ha.d]# cat ha.cfdebugfile /var/log/ha-debuglogfile/var/log/ha-loglogfacility local0keepalive 2deadtime 30warntime 10initdead 60udpport 694#bcast  eth2#mcast eth2 225.0.0.114 694 1 0ucast eth2 10.0.10.5auto_failback onnode  heartbeat-1-114node  heartbeat-1-115ping 10.0.10.6respawn root /usr/lib64/heartbeat/ipfailapiauth ipfail gid=root uid=root#crm on

(3)ha.cf文件详细说明

debugfile /var/log/ha-debug:写入调试信息的文件。

logfile /var/log/ha-log:heartbeat的日志文件。

keepalive 2:心跳的时间间隔,默认时间单位为秒s。

deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。

warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。

initdead 60:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。

bcast eth2:指明心跳使用以太网广播方式在eth2接口上进行广播,如使用两个实际网络来传送心跳则#bcast eth0 eth2,用udp进行广播建议副节点不止一个情况下使用

mcast eth2 225.0.0.130 694 1 0 :设置多播通信使用的端口,225.0.0.130为多播ip地址在一个局域网内这个ip地址不能一样,694为默认使用的udp端口号,建议在副节点不止一台使用。

注意:一个局域网内有多组heartbeat服务同时正常使用的前提是多播地址不同(可选多播地址段为224.0.0.0-239.255.255.255),一般路由器、交换机等应该都是多播的方式,建议IP的最后八位作为多播地址的最后8位。当然不用多播也能解决心跳问题。

udpport 694:设置广播通信使用的端口,694为默认使用的端口号。

ucast eth2 10.0.10.5:设置广播通信对方机器心跳检测的网卡和IP和udpport一起用。

auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。

respawn heartbeat /usr/lib64/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。

crm on:是否开启集群资源管理功能(Cluster Resource Manager)

提示:我们可以查看/usr/share/doc/heartbeat-3.0.4/下的ha.cf来详细了解参数信息。

3.4.2 配置authkey文件及文件说明

(1)配置authkey文件

[root@heartbeat-1-114 ha.d]# sha1sum /etc/ha.d/authkeys da39a3ee5e6b4b0d3255bfef95601890afd80709  /etc/ha.d/authkeys[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/authkeys auth 22 sha1 da39a3ee5e6b4b0d3255bfef95601890afd80709

将authkey权限修改为600

[root@heartbeat-1-114 ha.d]# chmod 600 /etc/ha.d/authkeys [root@heartbeat-1-114 ha.d]# ll /etc/ha.d/authkeys  -rw------- 1 root root 20 Nov  3 20:31 /etc/ha.d/authkeys

(2)文件说明

此处提到authkey权限必须为600#   Authentication file.  Must be mode 600#   Must have exactly one auth directive at the front.#   authsend authentication using this method-id##   Then, list the method and key that go with that method-id此处提到可以设置认证方法#   Available methods: crc sha1, md5.  Crc doesn't need/want a key.#   You normally only have one authentication method-id listed in this file#   Put more than one to make a smooth transition when changing auth#   methods and/or keys.这里说明sha1是最好的认证方法,其次md5是最好的#   sha1 is believed to be the "best", md5 next best.#   crc adds no security, except from packet corruption.#   Use only on physically secure networks.#auth 1#1 crc#2 sha1 HI!#3 md5 Hello!                       ##########

注意:authkeys需要的权限默认为600否则heartbeat服务会报错不发打开,两台机器都需要操作

3.4.3 配置haresource文件

[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/haresources heartbeat-1-114 IPaddr::192.168.136.116/24/eth0:1

配置参数说明 :heartbeat-1-114为主节点hostname,192.168.136.116为vip,24为掩码是24位的网段,eth0:1为vip的设备名。IPaddr为heartbeat配置IP的默认脚本,其后的IP等都是脚本参数,脚本放置的位置如下所示:

[root@heartbeat-1-114 ha.d]# ll /etc/ha.d/resource.d/IPaddr  -rwxr-xr-x 1 root root 2273 Dec  3  2013 /etc/ha.d/resource.d/IPaddr

实际上面haresources文件中的内容,相当于在ip为192.168.136.116的机器上执行下面的脚本:

/etc/ha.d/resource.d/IPaddr 192.168.136.116/24/eth0:1 start/stop

IPaddr::192.168.136.116/24/eth0:1:这个语句的结构是脚本::(两个冒号)传参,确切的说这里并不是传参只是在ip为192.168.136.116的机器上执行一个这样的脚本,所以自己开发得到脚本只要能够用start/stop启动和停止并且满足脚本::传参这种格式,就能放到haresources文件中这是脚本要写全路径。

3.5 从节点配置heartbeat服务

把主机上的三个文件拷贝到从上,只需配置ha.cf文件

[root@heartbeat-1-114 ha.d]# scp ha.cf authkeys haresources heartbeat-1-115:/etc/ha.d/The authenticity of host 'heartbeat-1-115 (192.168.136.115)' can't be established.RSA key fingerprint is 66:cc:1a:b8:c6:68:8e:8f:d1:2f:a3:a3:56:23:4a:48.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'heartbeat-1-115,192.168.136.115' (RSA) to the list of known hosts.root@heartbeat-1-115's password: ha.cf   100%  341 0.3KB/s   00:00  

从节点只需要修改ha.cf文件,将10.0.10.5改成10.0.10.4,设置对方机器心跳检测的网卡和IP。

[root@heartbeat-1-115 ha.d]# grep "ucast" ha.cfucast eth2 10.0.10.4

4.启动heartbeat服务

先启动主节点后启动从节点,不要让heartbeat开机自启动

[root@heartbeat-1-130 ~]# /etc/init.d/heartbeat startStarting High-Availability services: INFO:  Resource is stoppedDone.[root@heartbeat-1-114 ~]# chkconfig --list|grep heartbeatheartbeat   0:off   1:off   2:on3:on4:on5:on6:off[root@heartbeat-1-114 ~]# chkconfig heartbeat off[root@heartbeat-1-114 ~]# chkconfig --list|grep heartbeatheartbeat   0:off   1:off   2:off   3:off   4:off   5:off   6:off

5.测试heartbeat高可用服务

有两种方法

(1)主节点停止heartbeat服务

/etc/init.d/heartbeat stop

(2)主节点禁ping

[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j DROP

主节点允许ping

[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j ACCEPT

我们就会发现虚拟VIP切换到从节点上了,来达到heartbeat高可用功能继续为用户提供服务。

6.测试列脑

两节点都down掉eth2网卡

ifdown eth2

7.查看heartbeat启动及接管资源的过程

可以查看heartbeat日志和系统日志查看heartbeat启动及接管资源的过程

tail -f /var/log/ha-log

tail -f /var/log/messages

0