您的位置:首页 > 运维架构 > Linux

第 二 十 七 天 :HA 高 可 用 集 群 搭 建

2015-10-11 22:00 288 查看
小Q:凡事都要看得远一点,再远一点,当你迈出第一步,心中必须装着第三步,第二步
才能作为你的筹码,没有筹码的人生,注定会生存在别人的股掌之中。

今天学了一个特别好的知识,我发现我最近的进度慢,情有可原,一整天就只是看两三个知识点,但是每个知识点我都会研究好长时间,虽然我知道过后我会忘,但
大概我再复习的时候,原理我不会忘,第一遍的目的达到了;

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







图一是高可用集群的方式,很清晰明了,我就不介绍了;
图二是他的工作原理,讲解一下,只是我的理解啊,有错的话,希望多多指教:
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/attachment/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 认证文件,关于安全级别设置的

修改处如下图:




chmod 600 authkeys 改权限

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

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



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




====================测 试 ====================
测试无非就是宕掉主机,看备用服务器是否会立即接替,恢复主机,用户进程会不回自动切换过来;
其实就是验证配置文件中配置的能否实现,当然一些时间累的就不用测了;
启动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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux