小Q:凡事都要看得远一点,再远一点,当你迈出第一步,心中必须装着第三步,第二步

           才能作为你的筹码,没有筹码的人生,注定会生存在别人的股掌之中。


今天学了一个特别好的知识,我发现我最近的进度慢,情有可原,一整天就只是看两三个知识点,但是每个知识点我都会研究好长时间,虽然我知道过后我会忘,但

大概我再复习的时候,原理我不会忘,第一遍的目的达到了;



===================简 介=======================

HA(High Available), 高可用性集群,又被叫做双机热备(Active/Passive),用于关键性业务;是保证业务连续性的有效解决方案,一般有两个或两个以上的节点;当活动节点出现问题,备用节点此时就会侦测到,并立即接续活动节点来执行业务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。

wKiom1YaV3XSvqpyAAKWDADGuFc295.jpg

wKioL1YaV5HwbzvpAAFbecF-JuE315.jpg

图一是高可用集群的方式,很清晰明了,我就不介绍了;

图二是他的工作原理,讲解一下,只是我的理解啊,有错的话,希望多多指教:

web1服务器为主节点,web2作为主备服务器,当然也可以添加web3作主备服务,流动IP也就是虚拟IP(VIP),左上角为用户,组播为传递心跳信息;

用户通过switch连接流动IP(流动IP同时存在于两个服务器),进行web1主服务器提供的服务,当web1服务中断后,web2会检测到心跳信息停止,于是接过流动IP,继续用户的进程

当然这个过程对于用户是透明的,她只是一直连接着流动IP,除非两台机子都宕掉,VIP中断

否则web1宕掉,VIP转到web2继续提供服务;

今天练习的是用heartbeat搭建高可用服务器

前期准备

两台服务器,我用的两台虚拟机,IP是 主192.168.1.103,备192.168.1.113,流动IP 192.168.1.104

为了实验方便,更改主机名

主:hostname   master             >>>      bash          

从:hostname   slave                >>>       bash

双机共同作业

关防火墙:iptables -F         setenforce  0  (getenforce)

域名指向:vim  /etc/hosts 

192.168.1.103     master      IP  主机名 

192.168.1.113     slave          

安装扩展源,为了下载配置HA所用的开源软件 heartbeat

wget  www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm  centos6版32位的

cd     /usr/locla/src    

rpm   -ivh    epel-release-6-8_32.noarch.rpm

yum   install   -y   heartbeat                               安装HA的应用软件

yum   install   -y   libnet                                      HA应用依赖的包

这样准备工作就算完成了



================配置主备双机====================

因为HA高可用集群只是实现双机热备,所以需要给他提供热备的服务,比如mysql主从数据热备·tomcat服务·Apache服务

今天我们用nginx服务来展示

进入heartbeat报的位置,拷贝三个模板文件

cd    /usr/share/doc/heartbeat-3.0.4/

cp    ha.cf   haresources  authkeys     /etc/ha.d/

cd    /etc/ha.d/

vim  authkeys 认证文件,关于安全级别设置的 

修改处如下图:

wKiom1YaXHuA_vkNAAB3aEpZ0Ic302.jpg

chmod   600  authkeys                                改权限


vim    haresources文件,用来设置主机,流动IP,热备的服务

接近底部的位置添加格式:主机名    VIP    服务           

wKiom1YaXMSSdccVAACklvUz2hE267.jpg

192.168.1.114/24/eth0:1 

代表的是虚拟IP192.168.1的这个网段,而这个IP是eth0的虚拟网卡,名为eth0:1;添加虚拟网卡的方法见我扩展知识模块;(我文件中的IP写错了哈,少了个1.)


vim  ha.cf    这是最重要的配置文件了,先用重定向清空,添加;

logfile         /var/log/ha.log                     日志文件

debugfile   /var/log/ha-debug.log

#bcast eth1                               心跳使用以太网广播方式,eth1为广播地址

ucast eth1 192.168.1.113             单播形式通信,与上二选一;对方网卡信息

keepalive 2                               每2秒发一次广播

warntime 10                              警告时间,10s钟内没有收到对方节点的信号,发警告到日志

deadtime 30                             30s没收到对方节点的信号认为对方宕机,立即接管对方节点的服务

initdead 120                             为重启系统留的等待时间,防止系统在重启不是宕掉

udpport 694                             广播通信使用的端口

auto_failback on                       如果是on, 则当主节点故障恢复后,服务自动切换回来

node master                              主节点主机名

node slave                                 从节点主机名

ping 192.168.1.11                       仲裁节点,是一个比较强健的设备,比如说交换机,要同网段

respawn hacluster /usr/lib/heartbeat/ipfail       当heartbeat启动时会随着一起启动的进程放到 

                                                                         这里,ipfail是用来检测网络连通性的工具, 

                                                                         hacluster为启动该程序的用户

然后复制三个文件到 从 机上

scp    ha.cf   haresources  authkeys   slave@192.168.1.113:/etc/ha.d/

输入从机密码,即可

其他两个文件不用改,只需更改 ha.cf 内的ucast ,根据你的主机网卡信息改哦

ucast   eth0  192.168.1.103                                  注意我网卡是eth0

这时候配置就完成了,因为我们用nginx服务进行测试,所以双机上都要安装nginx

yum   install  -y   nginx

wKiom1YaXn7gDhrkAADSTvlZBok348.jpg


====================测 试 ====================

测试无非就是宕掉主机,看备用服务器是否会立即接替,恢复主机,用户进程会不回自动切换过来;

其实就是验证配置文件中配置的能否实现,当然一些时间累的就不用测了;

启动heartbeat,特别注意,启动有先后顺序,一定要先启动主机

/etc/init.d/heartbeat   start

稍等片刻查看主机

ifconfig   会发现多了一个虚拟网卡eth0:1

ps aux |grep nginx    进程也跑起来了

同样的查看从机会发现什么也没有,因为不可能两台服务器都为用户提供服务

修改nginx服务网站目录的默认页面;

(查找网站目录路径  进入/etc/nginx/nginx.conf     >>>  include 路径    >>>     路径/virtual(default).conf    >>>   进入查找

echo  "1111111111master"   >  /usr/share/nginx

访问192.168.1.104                                                    流动IP

会显示:1111111111master


而双机热备主要是检测用户与服务器的连通性,当不连通时,从机开始接替他与用户连接;

而连通的本质就是因为icmp协议,关闭它就可以断开连通

iptables  -A  INPUT  -p  icmp  -j DROP

主机查看:

ifconfig       ps  aux  |grep  nginx              tail  /var/log/ha_log

从机查看:

ifconfig       ps  aux  |grep  nginx              tail  /var/log/ha_log

主机打开icmp协议

iptables  -D  INPUT  -p  icmp  -j DROP                    -D 删除


和上相同的方式查看,会发现主机又把用户的服务自动切换回来了;

也可以停止主机的 heartbeat服务测试查看:

/etc/init.d/heartbeat    stop


其实配置各种高可用的服务,只是更改了ha.cf文件中的服务名;

然后安装相应的服务软件,比如参考下面的mysql高可用,就是有点太乱

扩展:概念   http://www.linuxidc.com/Linux/2013-08/88522.htm 

选用软件根据 http://svsky.blog.51cto.com/10184644/1672431 

mysql高可用  http://tianshi10cool.blog.51cto.com/1870184/1665900         

===更清晰      http://colderboy.blog.51cto.com/485582/104872