如何实现Linux服务集群的高可用性(heartbeat)
在服务器集群中还有一项就是服务的高可用性,为了保证我们的服务不被成为单点故障,为此我们使用heartbeat来解决这一点,简单点说,就是当我们的主服务器掉线的时候,我们的辅助节点服务器能够快速接管主节点服务器的服务,这样就保证了我们的服务不会出现单点故障了。(当然我们一下做的只是针对单点故障做的一个小实验而已,具体到应用的时候,心跳通信通道不会只有一条,还有服务器通常还会有共享存储设备,好了,不多说了,开始准备一下实验环境吧)我们需要准备三台虚拟机:一台客户机,两台heartbeat服务器,其中这两个服务器先配置一个,另外一个根据以下步骤再配置)实验拓扑图如下: http://blogimg.iyunv.com/blog/upfile2/100404172303.png实验步骤:1先配置一下主节点:主机名设为:node1.example.com#vim/etc/hosts192.168.0.165. node1.example.comnode1192.168.0.166 node2.example.cm node2#vim/etc/sysconfig/networkHOSTNAME=node1.example.com#hostnamenode1.example.com#uname–n (查看一下现在的主机名)1. 配置一下ip地址外网为192.168.0.165 心跳通道地址192.168.10.20 2. 安装并配置httpd服务#yuminstallhttpd.conf#vim /var/www/html/index.html#servicehttpdstart #elinks192.168.0.220(测试一下www服务)3. 开始配置heartbeat了:先安装八个包:libnet-1.4.3-el5.i386heartbeat-2.1.4-9.el5.i386heartbeat-devel-2.1.4.9.el5.i386heartbeat-gui-2.1.4-9.el5.i386heartbeat-ldirectord-2.1.4-9.el5.i386heartbeat-pils-2.1.4.-10.el5.i386heartbeat-stonith-2.1.4-10.el5.i386perl-MailTools-1.77-1.el5.noarch #yum- -nogpgcheck install*.rpm可以将这几个包一起安装(使用rpm来安装的话会有好多依赖关系要解决,建议还是使用yum来安装)4.#cd /etc/ha.d/ (接下来拷贝几个重要的文件到该目录下)#cp/usr/share/doc/heartbeat-2.1.4/ha.cf ./#cp/usr/share/doc/heartbeat-2.1.4/haresources./#cp/usr/share/doc/heartbeat-2.1.4/authkeys ./#ls(查看一下是否复制完全)#vimauthkeys 在最后添加两行auth11 sha1(以上也可以使用以下命令来配置authkeys这个文件)#echo-ne“auth 1/n1 sha1”>> /etc/ha.d/authkeys#ddif=/dev/urandombs=512 count=1| openssl md5>> /etc/ha.d/authkeys (追加密钥)#cat authkeys (查看一下,看密钥是否追加上了,密钥要跟1 sha1在同一行)#chmod0600authkeys(修改一下权限)#vimha.cf确保以下几行没有被注释掉debugfile/var/log/ha-debuglogfacility local0keepalive2deadtime 30warntime 10initdead 120udpport 694auto_failbackonbcasteth1接着在最后添加以下两行nodenode1.example.comnodenode2.example.com #vim haresources(设置浮动的ip和服务)在文件中添加一下一行信息:node1.example.com 192.168.0.169httpd#cd/etc/ha.d( 将我们的httpd服务添加软连接到resource.d中:)#ln-s/etc/init.d/httpd /etc/ha.d/resource.d/#cdresource.d/#ls (查看一下链接创建成功了没)(为了让我们的实验简化,我们克隆一个虚拟机来做backup server辅节点吧。)将主节点关机,然后克隆一个辅节点,不过我们要对辅节点修改一下,具体修改如下:修改它的主机名#vim/etc/hosts#vim/etc/sysconfig/network#hostnamenode2.example.com#uname-n修改它的ip地址设置外网ip地址为192.168.0.166内网心跳通信地址为192.168.10.30#servicenetwork restart测试一下整个网络的联通性:#ping192.168.0.165#ping192.168.0.166#ping192.168.10.20#ping192.168.10.30 最好在主节点和辅节点上都测试一下,看80服务开了没,#netstat-tnlp| grep 80 这个时候主节点和辅节点80端口应该都是没有开的 在主节点和辅节点上开启心跳服务#service heartbeatstart#ifconfig(在主节点上看一下,eth0:0这个浮动ip地址已经出现了) http://blogimg.iyunv.com/blog/upfile2/100404172328.png在主节点上查看80端口现在已经是开启的了 http://blogimg.iyunv.com/blog/upfile2/100404172353.png 这个时候在客户机上访问来测试一下 http://blogimg.iyunv.com/blog/upfile2/100404172407.png 在主节点上#cd /usr/lib/heartbeat#./hb_standby将节点停掉,这样httpd服务就转移到辅节点了 在辅节点上查看: http://blogimg.iyunv.com/blog/upfile2/100404172429.png在客户机上访问一下192.168.0.169http://blogimg.iyunv.com/blog/upfile2/100404172442.png
(呵呵,辅节点就顺利的接替了主节点的资源) 使用抓包工具来测试一下:了解一下它们的心跳#tcpdump-ieth1udp port694 http://blogimg.iyunv.com/blog/upfile2/100404172515.png
页:
[1]