前言:

    上文介绍了高可用集群的基本概念,下面让我们来试试用两台提供web服务的虚拟机来实现一个小小的高可用集群吧~

    首先,配置一个高可用集群的前提有:

    1.至少两个节点;

    2.共享存储(为了提供的页面一致,需要在后端用某些机制来实现。这里我们就做个简单的实验,后端存储先不考虑。先让这两个节点各自提供一个不同的页面,方便我们知道哪台在提供服务);

    3.STONIN(共享存储时为了避免争用资源,指挥特定的设备,如电源交换机等避免共享存储的崩溃,所以一般的集群都得需要这个否则它会不工作的哦~~这里我们依旧不用管它)

    4.时间需要同步,这里我们在虚拟机中做的实验,可以安装VM工具来实现其与宿主机的时间同步,并改一个虚拟机文件的参数即可,这里不再赘述i_f30.gif

    5.主机名称解析。(/etc/hosts)

    6.至少先配置好一个节点(首个节点):提供基本集权配置和配置文件,可以没有资源;

    7.ssh互信。

这里先做个小小的规划:

    node1.zc.com     192.168.1.7

    node2.zc.com     192.168.1.8

验证是否能互相ping通:

#ping node1.zc.com

#ping node2.zc.com

建立ssh互信:(两个节点都需要做,这里只是显示了node2的)

wKiom1OdW0uSu1JDAARyK8-XbSQ815.jpg

下面安装:heartbeat;heartbeat-stonith;heartbeat-gui;

# yum install libnet.so.1 libnetsnmp.so.20 net-snmp-libs pygtk2-libglade(解决包依赖关系,先按照提示安装这几个包)

# rpm -ivh heartbeat-2.1.4-12.el6.i686.rpm heartbeat-pils-2.1.4-12.el6.i686.rpm heartbeat-stonith-2.1.4-12.el6.i686.rpm heartbeat-gui-2.1.4-12.el6.i686.rpm 

总是报这个错误:libnet.so.1 is needed by heartbeat-2.1.4-12.el6.i686

我就试试安装了这个包:# yum install libnetfilter_conntrack-0.0.100-2.el6.i686.rpm 

可是还是不行......

解决办法(使用epel源yum安装这个依赖包,epel的源比较全~):

在这个网址下载epel包:http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

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

#yum install libnet 

这样就可以了~

wKiom1Odq6WwArKHAAGjxdgpcMI217.jpg

以上都在node1和node2安装好后,就可以不用管node2了,只在node1上配置:

先确保两台httpd服务没问题,并且提供不同的页面,然后在将其关闭,并且一定要保证开机不会启动:(#service httpd stop;#ckconfig httpd off)

#cd /usr/share/doc/heartbeat-2.1.4/

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

#cd /etc/ha.d/

#openssl rand -hex 8 >> authkeys (生成个随机数给这个文件。)

#vim authkeys 

wKioL1OduWLxntKNAABW7o2Tlu4598.jpg

#chmod 600 authkeys

#vim ha.cf (配置文件)改如下写参数:


logfile /var/log/ha-log (日志位置,方便查看错误)

mcast eth0 225.0.0.1 694 1 0

#node kathy 下面加

node node1.zc.com

node node2.zc.com

#ping 10.10.10.254 (下面加,这是一个ping node)

ping 192.168.1.1


#vim haresources (这是资源管理器,在最下面加上我们的资源) 

node1.zc.com   192.168.1.10/24/eth0   httpd


#scp -p authkeys ha.cf haresources node2:/etc/ha.d/   (把我们配置好的这3个文件传给node2)

好啦!可以启动服务啦!注意:记得先把SElinux先关掉,否则会出问题的哦~

#service heartbeat start  (可以查看下694端口启动否)

#ssh node2 'service heartbeat start' (在当前启动的节点去启动另一个节点)

这时你可以用ifconfig和ss  -tanl来查看下node1的web服务是否启动起来了

wKiom1OeqAiAiUUFAAMjOESUiSo220.jpg

wKioL1Oep--A-DL5AAEe_FJbtig010.jpg现在试得访问下192.168.1.10吧!

wKiom1OeqKvBlbIrAADAhAP7DII365.jpg

访问到node1了,再让node1挂掉,#service heartbeat stop(或者设条iptables规则),再试试刷新页面:

wKiom1OeqZ_wDARhAADJGb1YShU816.jpg

ok啦!!!高可用性还是很明显的!可以再试的将node1启动:#service heartbeat start ,刷新页面,node1的界面就又回来了!O(∩_∩)O~