HA(高可用 High avaiilable)集群

Web1 提供服务,如果1主宕机了,2备就可以马上启用,这样有用户这端没有任何影响。

在架构的时候要配置一条心跳线来传递信息。流动IP 也是就是VIP,是主从对外共同的IP。


[root@LNMP ~]# iptables -F

[root@LNMP ~]# getenforce 

Disabled


[root@LNMP ~]# vim /etc/hosts #在主上编译上

10.72.4.21 LNMP

10.72.4.14 OBird

[root@OBird ~]# vim /etc/hosts #复制到从上

10.72.4.21 LNMP

10.72.4.14 OBird


#

[root@LNMP ~]# wget  www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_64.noarch.rpm


#下载epel

[root@LNMP ~]# rpm -ivh epel-release-6-8_64.noarch.rpm  #安装(主从都安装)

[root@LNMP ~]# yum list |grep heartbeat

heartbeat.x86_64                            3.0.4-2.el6                  epel   

heartbeat-devel.i686                        3.0.4-2.el6                  epel   

heartbeat-devel.x86_64                      3.0.4-2.el6                  epel   

heartbeat-libs.i686                         3.0.4-2.el6                  epel   

heartbeat-libs.x86_64                       3.0.4-2.el6                  epel   


主从各自安装 heaerbeat & libnet

[root@LNMP ~]# yum install -y heartbeat

[root@LNMP ~]# yum install libnet

[root@OBird ~]# yun install -y heartbeat

[root@OBird ~]# yum install libnet


[root@LNMP ~]# cd /usr/share/doc/heartbeat-3.0.4/ #进到目录下拷贝样例

[root@LNMP heartbeat-3.0.4]# ls

apphbd.cf  authkeys  AUTHORS  ChangeLog  COPYING  COPYING.LGPL  ha.cf  haresources  README

[root@LNMP heartbeat-3.0.4]# cp authkeys ha.cf haresources /etc/ha.d/

[root@LNMP heartbeat-3.0.4]# 

Linux 之HA集群配置_第1张图片

[root@LNMP heartbeat-3.0.4]# cd /etc/ha.d/

[root@LNMP ha.d]# ls

authkeys  ha.cf  harc  haresources  rc.d  README.config  resource.d  shellfuncs

[root@LNMP ha.d]# vim authkeys  #编译验证配置文件

#auth 1  #打开更改为 auth 1

#1 crc

#2 sha1 HI!

#3 md5 Hello! #打开md5验证:3 md5 Hello!

[root@LNMP ha.d]# chmod 600 authkeys #编译目录权限,不然heartbeat 服务不能启动


[root@LNMP ha.d]# cd /etc/sysconfig/network-scripts/ #配置虚拟网卡&IP

[root@LNMP network-scripts]# ls

ifcfg-eth0   ifdown-eth   ifdown-post    ifdown-tunnel  ifup-eth   ifup-plip   ifup-routes    init.ipv6-global

ifcfg-lo     ifdown-ippp  ifdown-ppp     ifup           ifup-ippp  ifup-plusb  ifup-sit       net.hotplug

ifdown       ifdown-ipv6  ifdown-routes  ifup-aliases   ifup-ipv6  ifup-post   ifup-tunnel    network-functions

ifdown-bnep  ifdown-isdn  ifdown-sit     ifup-bnep      ifup-isdn  ifup-ppp    ifup-wireless  network-functions-ipv6


[root@LNMP network-scripts]# cp ifcfg-eth0 ifcfg-eth0\:1 #配置虚拟网卡&IP

[root@LNMP network-scripts]# vim ifcfg-eht0\:1

DEVICE=eth0:1

#HWADDR=00:0C:29:5A:02:3F

TYPE=Ethernet

#UUID=22567e42-4d72-40e9-8ca3-98098c239d9c

ONBOOT=no #开机不不启动,楼主是桥接模式,所以是静态且不启动

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=10.72.4.110

NETMASK=255.255.254.0

#GATEWAY=10.72.4.1

~                  

[root@LNMP network-scripts]# /etc/init.d/network restart #重新启动网络服务,可以看到两个IP


[root@LNMP ha.d]# vim haresources #编译

#node1  10.0.0.170 Filesystem::/dev/sda1::/data1::ext2 #直接加下面一行,更改当前行为下一行

LNMP    10.72.4.111/23/eth0:0 nginx



[root@LNMP ha.d]# >ha.cf #清空配置


[root@LNMP ha.d]# vim ha.cf  #写入以下内容


debugfile /var/log/ha-debug  #日志文件,和下面的ha.log 记录的东西差不多

logfile /var/log/ha-log

logfacility   local0         #日志的级别,此处是local 0,不要看成了10

keepalive     2              #多长时间探测一次对方是否还在

deadtime    30               #30秒Ping通宣告死亡

warntime    10               #10秒Ping不通发出警告

initdead    60               #防止对方服务器在重启,缓冲的时间

udpport     694              #心跳线通讯的端口  694

ucast eht0 10.72.4.14        # 对方的IP ,也可用bcast广播

auto_failback on             #如果备机启用,当主再次激活时还原主

node        LNMP             #master

node        OBird            #slave

ping 10.72.4.1               #仲裁地址,一般用路由或交换机,用稳定的设置

respawn hacluster /usr/lib64/heartbeat/ipfail #以哪个用户的身份来运行脚本。脚本是检测网络连通性的,检测对方是否存活。


[root@OBird ha.d]# scp authkeys haresources ha.cf OBird:/etc/ha.d/


Linux 之HA集群配置_第2张图片

[root@OBird ha.d]# vim ha.cf #从上的配置 ,只需要更改IP 到对方,其它配置无需更改

ucast eht0 10.72.4.21


启动:先启动主,后启动从。先后顺序不要搞错了。

[root@LNMP ha.d]# /etc/init.d/heartbeat start #也是信了邪,主上的heartbeat 可以启动

Starting High-Availability services: INFO:  Resource is stopped

Done.


[root@OBird ha.d]# /etc/init.d/heartbeat start #同样的配置在从上却启动不了

wKiom1hSsZmT-WjKAAExKtV2o8w926.jpg

#在网上寻求解决方法

做HA实验时,启动heartbeat出现错误:

 ERROR: Client child command [/usr/lib/heartbeat/ipfail] is not executable

   ERROR: Heartbeat not started: configuration error.

   ERROR: Configuration error, heartbeat not started.

因为楼主的linux是64位的,ha.cf 配置文件里

/usr/lib/heartbeat/ipfail 这一句要改为:

/usr/lib64/heartbeat/ipfail

 

再次启动/etc/init.d/heartbeat start

Starting High-Availability services: INFO:  Resource is stopped

Done.成功(但是楼主不明,为何从上的配置的lib,为什么又可以启动)


[root@OBird ha.d]# vim ha.cf 

[root@OBird ha.d]# /etc/init.d/heartbeat start #从上的heartbeat 启动成功

Starting High-Availability services: INFO:  Resource is stopped

Done.


[root@LNMP ha.d]# ip add  #vip启动了

[root@LNMP ha.d]# ps aux |grep nginx  #nginx 启动,详见下图


Linux 之HA集群配置_第3张图片


[root@OBird ha.d]# ps aux |grep nginx  #从上的nginx 是可能启动的,如果启动则说明HA失败 

root      3654  0.0  0.0 103252   824 pts/0    S+   22:42   0:00 grep nginx



下面用nginx 的黙认页来做测试

[root@LNMP ~]# vim /data/dis 


[root@LNMP dis]# echo "2016-12-19-masterLNMP" > forum.php


 



#楼主的主(master)是在LNMP的环境中,没有重新安装装ngixn ,路径和黙认路径不一样。

#C:\Windows\System32\drivers\etc  10.72.4.21 www.linux.com


Linux 之HA集群配置_第4张图片



[root@LNMP dis]# iptables -A INPUT -p icmp -j DROP #关掉主上的 ping ,心跳线是基于ping 的

查看日志

Linux 之HA集群配置_第5张图片

在从上写入以下内容,通过VIP 访问。和上图比较,内容已发生改变,ha搭建成功。

[root@OBird ha.d]# echo "2016-12-19-masterSlvepppppppppppppppp" > /usr/share/nginx/html/index.html  #在从上的nginx黙认目下写入以下内容,通过IE 访问

Linux 之HA集群配置_第6张图片

查看从上的nginx 服务启情况,