你的位置:首页 > 系统架构

lvs负载均衡及ha高可用集群

2010-09-11 浏览:(11146) 系统架构 评论(0)

目录

一 应用背景

二 应用环境

三 安装配置

四 FAQ 

一 应用背景

随着互联网应用的普及以及人们对互联网的要求也越来越高,在流量增加的同时,要求速度快,在线时间长或出故障的时间短或故障后能及时恢复等等。为了解决这些问题,各种负载均衡及集群技术应运而生

其中,LVS便是一个解决大流量分流很好的解决方案

详细请参考 http://www.linuxvirtualserver.org/zh/lvs1.html

HA(High Availability),则是高可用的意思,也可以说是双机热备双机等的应用。如在一些在线时间有特别的要求或是在故障后要在很短的时间内恢复,就有必要应用到这个ha了

本文的应用,由两台机组成的一个LVS及HA,主要是解决分流及单点故障。

如A,B机,正常情况下,A机为LVS转分机,同时又是提供web的服务机,当A机有问题时,B机接管A机的服务,同时自己也是一个web服务机。由于本文的应用中,机器数量有限,所以,将ha,lvs,realserver都放在一起了。在机器允许的情况下,最好分开,如:

LVS转发为独立一台机,再在这转发机上配置HA避免转发机故障,再用一台机来做转发及HA的备机,当主转发机故障时就可接管服务

二 应用环境

机器两台

系统为CentOS 5.4 x86_64版

heartbeat + ldirectord + lvs

结构如下:

VIP:192.168.1.90

Wd1 192.168.1.91

Wd2 192.168.1.92

三 安装

1 可以用源码安装,也可以用yum安装,用源码安装,定制性强一点,但用yum安装,很方便,如:

yum install -y heartbeat

yum install -y heartbeat-ldirectord

即可完成

2 配置(本例的配置文件沿用1.X的风格,2.X以上的功能很强大,也较复杂)

主要的配置文件有以下几个:

Authkeys

ha.cf

ldirectord.cf

haresources

文件内容

# cat authkeys

auth 1

1 crc

# cat ha.cf

#test conf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 8

deadtime 60

warntime 60

initdead 120

udpport 694

ucast eth0 192.168.1.92

auto_failback on

node wd1

node wd2

respawn hacluster /usr/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

# cat ldirectord.cf

#test conf

checktimeout=10

checkinterval=8

fallback=127.0.0.1:80

autoreload=yes

logfile="/var/log/ldirectord.log"

logfile="local0"

quiescent=no

virtual=192.168.1.90:80

real=192.168.1.91:80 gate

real=192.168.1.92:80 gate

fallback=127.0.0.1:80 gate

service=http

request="lt.html"

receive="Test Page"

scheduler=wrr

persistent=30

protocol=tcp

checktype=negotiate

checkport=80

# cat haresources

Wd1 lvs IPaddr::192.168.1.90/24/eth0:0 ldirectord

wd2上的lvs脚本文件

# cat /etc/rc.d/init.d/lvs

#!/bin/bash

/sbin/ipvsadm --set 10 10 10

Wd2上的lvs脚本文件

# cat /etc/rc.d/init.d/lvs

#!/bin/bash

# test

VIP=192.168.1.90

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

/sbin/ipvsadm --set 10 10 10

case "$1" in

start)

/sbin/ifconfig lo:0 down

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

/sbin/route add -host $VIP dev eth0:0

;;

stop)

/sbin/ifconfig eth0:0 down

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

/sbin/route add -host $VIP dev lo:0

;;

*)

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

exit 1

esac

#cat /etc/hosts

192.168.1.91 wd1

192.168.1.92 wd2

cat /etc/sysctl.conf

net.ipv4.ip_forward = 1

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

在iptables 增加一个对方IP的访问,否则在切换时会有问题

  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。