如何使用LVS+heartbeat构建高可用web集群

这篇文章将为大家详细讲解有关如何使用LVS+heartbeat构建高可用web集群,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

为龙华等地区用户提供了全套网页设计制作服务,及龙华网站建设行业解决方案。主营业务为网站建设、成都网站设计、龙华网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

从事运维两年多以来一直没有去碰heartbeat,以前凡是牵扯到HA的应用一般都是用keepalived。原因是因为heartbeat太笨重,配置起来不不像keepalived那么简单,如果一个应用越是复杂,那么它的故障并发率必然也就越高,恢复故障时用的时间也就越长。这次接触heartbeat是被逼无奈,因为公司线上的集群环境是用LVS+heartbeat为后端应用做的分发。所以要血补一下heartbeat上的知识。搭建heartbeat时遇到一些小麻烦,在此分享一下lvs+heartbeat的部署过程和搭建时该注意细节

准备工作:

1、在master和backup系统的hosts文件中添加如下信息

10.10.10.1 master

10.10.10.2 backup

 

2、开启master节点和backup节点系统的IP转发功能

# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

 

一、安装LVS、heartbeat

#tar zxvf ipvsadm-1.24.tar.gz

#cd ipvsadm-1.24

#ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux

#make && make install

 

#tar zxvf libnet-1.1.2.1.tar.gz

#cd libnet

#./configure

#make && make install

 

#groupadd -g 694 haclient

#useradd -u 694 -g haclient hacluster

#tar zxvf heartbeat-2.0.8.tar.gz

#cd heartbeat-2.0.8

#./ConfigureMe configure

#make && make install

 

二、配置heartbeat和LVS

安装完heartbeat后系统会生成一个/etc/ha.d/目录,此目录用于存放heartbeat的有关配置文件。Heartbeat自带配置文件的注释信息较多,我们在此手工编写有关配置文件,heartbeat常用配置文件有四个,分别是:

ha.cf:heartbeat主配置文件

ldirectord.cf:资源管理文件

haresources:本地资源文件

authkeys:认证文件

 

1  、配置  ha.cf

#vi /etc/ha.d/ha.cf

logfile /var/log/ha.log    #日志文件放置路径    

keepalive 2    #心跳频率,默认为秒    

deadtime 10    #判断节点死亡时间    

warntime 5    #警告时间    

initdead 30    #deadtime的最少两倍    

udpport 694    #监听端口    

bcast eth2    #心跳使用的网络接口    

auto_failback off    #当主节点恢复正常后,是否切换到主节点    

node master    #主节点    

node backup    #备用节点    

ping_group group1 192.168.1.103 192.168.1.104    #real server地址    

respawn hacluster /usr/lib/heartbeat/ipfail    

apiauth ipfail gid=haclient uid=hacluster    

 

2  、配置  ldirectord.cf

# vi /etc/ha.d/ldirectord.cf

 checktimeout=5    #检测超时时间    

checkinterval=1    #检测时间    

autoreload=yes    #配置文件改动时是否自动加载    

logfile="/var/log/ldirectord.log"    # ldirectord日志路径    

quiescent=no    #检测到real server异常后是否保留该real server的配置    

virtual=192.168.1.100:80    #VIP    

    real=192.168.1.103:80 gate    #real server    

    real=192.168.1.104:80 gate    #real server    

    service=http    

    checkport=80    

    protocol=tcp    

    persistent=600    #连接会话保持时间    

    scheduler=wlc    #LVS负载算法    

    checktype=negotiate    #通过交互来判断服务是否正常    

 

3  、配置  haresources

#vi /etc/ha.d/haresources

master IPaddr::192.168.1.100 ipvsadm ldirectord    

注:master为LVS主节点主机名称;IPaddr为VIP;ipvsadm ldirectord为所要监视的应用

 

4  、配置  authkeys

# vi /etc/ha.d/authkeys

auth 3    

3 md5 test    

# chmod 600 /etc/ha.d/authkeys

注:权限一定要设置为600,不然heartbeat启动时会报错

 

5  、配置  IPVS

#vi /etc/sysconfig/ipvsadm

-A -t 192.168.1.100:80 -s wlc -p 600    

-a -t 192.168.1.100:80 -r 192.168.1.103:80 -g    

-a -t 192.168.1.100:80 -r 192.168.0.104:80 -g    

注:-p 600的意思是会话保持时间为600秒,应该和ldirectord.cf文件配置一致

 

6  、启动  heartbeat

# /etc/init.d/heartbeat start

#echo "/etc/init.d/heartbeat start" >>/etc/rc.local

注:启动heartbeat后注意观察三点:①:检查系统UDP694是否启动;②:观察heartbeat日志,看是否有错误信息输出,本次启动heartbeat时日志中报错信息如下

ResourceManager[11840]: 2011/04/09_19:56:51 ERROR: Return code 2 from /etc/init.d/ldirectord

ResourceManager[11840]: 2011/04/09_19:56:51 ERROR: Resource script for ldirectord probably not LSB-compliant.

后来经过排查是发现系统通过heartbeat去启动ldirectord时无法启动,报错信息如下:

Can’t locate LWP/UserAgent.pm

原因是因为缺少相应perl模块,安装上libwww-perl 、perl-MailTools后ldirectord便可正常启动。③检查网卡是否加载上了VIP,启动heartbeat约15秒左右,系统会自动生成VIP并自动加载到eth0:0网卡,可使用ifconfig查看

 

7  、查看  LVS  是否载入了  real server

#  watch ipvsadm –ln

Every 2.0s: ipvsadm -ln                                                                        Tue Apr 12 00:33:58 2011    

     

IP Virtual Server version 1.2.1 (size=4096)    

Prot LocalAddress:Port Scheduler Flags    

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn    

TCP  192.168.1.100:80 wlc persistent 600    

  -> 192.168.1.104:80             Route   1      0          0    

  -> 192.168.1.103:80             Route   1      0          0    

现在还LVS还无法正常处理访问分发,原因是因为现在LVS只知道如何把请求转向后端服务器,但是后端服务器还不知道如何处理返回的请求。因此,还需要在real server上绑定LVS服务器

注:本次环境lvs+heartbeat在master和backup节点上的安装、配置均一模一样,所以在此不再累述backup节点的安装和配置

 

三、配置real server(web1和web2)

在web1和web2上分别编写如下脚本,然后启动即可,启动后系统会在回环接口上自动绑定一个虚拟IP

#  vi /etc/sysconfig/real.sh

#!/bin/bash    

#description : start realserver    

VIP=192.168.1.100    

/etc/rc.d/init.d/functions    

case "$1" in    

start)    

echo " start LVS of REALServer"    

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up    

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore    

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce    

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore    

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce    

;;    

stop)    

/sbin/ifconfig lo:0 down    

echo "close LVS Directorserver"    

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore    

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce    

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore    

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce    

;;    

*)    

echo "Usage: $0 {start|stop}"    

exit 1    

esac    

#  chmod +x /etc/sysconfig/real.sh

#  /etc/sysconfig/real.sh start

#echo "/etc/sysconfig/real.sh start" >>/etc/rc.local

 

四、测试

1、关闭web1或者web1上任意一台web服务,看访问VIP是否正常

2、停止master节点上的heartbeat进程,看VIP是否会自动切换到backup节点;恢复master节点,停止backup上的heartbeat进程,看VIP是否会自动切换到master节点

3、将master节点关机,看VIP是否会自动切换到backup;开启master节点,关闭backup,看VIP是否会自动切换到master节点。测试时多观察一下heartbeat日志

注:本环境中backup节点与bmaster节点安装配置均相同,所以在此不再累述backup节点的配置。 

关于“如何使用LVS+heartbeat构建高可用web集群”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


分享标题:如何使用LVS+heartbeat构建高可用web集群
链接地址:http://azwzsj.com/article/jecohe.html