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

63次阅读
没有评论

共计 4678 个字符,预计需要花费 12 分钟才能阅读完成。

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

从事运维两年多以来一直没有去碰 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 集群”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计4678字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)