Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1488958
  • 博文数量: 408
  • 博客积分: 10036
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-06 13:57
文章分类

全部博文(408)

文章存档

2011年(1)

2010年(2)

2009年(1)

2008年(3)

2007年(7)

2006年(394)

我的朋友

分类: LINUX

2006-07-13 10:16:05

 
Webme09.cublog.cn
google
利用Linux架构负载均衡(Load balancer)系统(二)  

利用Linux架构高稳定、高可用、高效率的负载均衡(Load balancer)系统
(二)
作者: connili@sina.com

实现

1,硬件配置:我本人的实验环境是5台PC机,两台作为LLB,并且在两台LLB上各装两块网卡。另外三台做web服务器 。一台HUB.

2,LLB上的软件配置:
· OS:RedHat Linux 6.2
· Linux Kernel:linux-2.2.17
· ipvsadm: IPVS-0.9.16
· ipchains: ipchains 1.3.9
· Keepalived: keepalived-0.2.7
· Heartbeat:heartbeat-0.4.9

3,软件的安装:

· 安装ipvs-0.9.16-2.2.17.tar.gz
#tar zxvf ipvs-0.9.16-2.2.17.tar.gz
#cd /usr/src/linux
#cat /ipvs-0.9.16-2.2.17.patch | patch -p1

在这一步完成后你必须重新编译Linux的内核,并且确定下面的选项被编译到新的内核中!

Kernel Compile Options:

Code maturity level options ---
[*] Prompt for development and/or incomplete code/drivers
Networking options ---
[*] Network firewalls
....
[*] IP: firewalling
....
[*] IP: masquerading
....
[*] IP: masquerading virtual server support
(12) IP masquerading table size (the Nth power of 2)
<*> IPVS: round-robin scheduling
<*> IPVS: weighted round-robin scheduling
<*> IPVS: least-connection scheduling
<*> IPVS: weighted least-connection scheduling
....
[*] IP: aliasing support


内核编译完后用新的内核重新启动系统。
然后执行下面的命令:


#cd //ipvsadm/
#make
#make install
至此,ipvsadm安装完毕!

· 安装 keepalived-0.2.7.tar.gz,执行下面的命令:
#tar keepalived-0.2.7.tar.gz
#cd keepalived-0.2.7
#make
#make install
· 安装heartbeat-0.4.9.tar.gz
#tar zxvf heartbeat-0.4.9.tar.gz
#cd heartbeat-0.4.9
#make
#make install

4,配置:
IP地址的配置:
用户IP地址:192.168.2.21
两台LLB各有两块网卡:eth0,eth1,
Master LLB eth0: 192.168.2.1
Master LLB eth1: 10.10.10.1
Slave LLB eth0: 192.168.2.2
Slave LLB eth1: 10.10.10.2
Server-1 : 10.10.10.11
Server-2 : 10.10.10.12
Server-3 : 10.10.10.13

另外还有两个特殊的IP地址是最需要注意的,一个是整个集群对外统一使用的IP地址,我们称它为VIP(Virtual IP) ,我们
他设为:192.168.2.11,这个IP地址应该出现在您的DNS中,如:我们配置的这个集群提供的是web服务,则在DNS中应该有这样
的记录:
--> 192.168.2.11
在LLB启动后VIP会运行在LLB的eth0:0上;
另一个特殊的IP是运行在LLB的eth1:0上,这个IP是三台服务器的默认网关,我们称它为V-gate (Virtual gate)。
所有的IP地址的子网掩码全采用255.255.255.0。VIP与V-gate在后面进行配置。到目前为止,网络中应该是一个这样的环境:

client
192.168.2.21
________|__________
| |
| |
Master LLB Slave LLB
eth0:192.168.2.1 eth0:192.168.2.2
eth1:10.10.10.10.1 eth1:10.10.10.2
| |
|_________________|
|
HUB
____________|_______________
| | |
| | |
webserver1 webserver2 webserver3
10.10.10.11 10.10.10.12 10.10.10.13

配置文件:
在LLB中,ipchains与ipvsadm是由keepalived来启动的,keepalived是由heartbeat来启动。Keepalived有两个配置文件:
/etc/keepalived/keepalived.conf和/etc/lvs.conf


/etc/lvs.conf内容如下:



#Configuration file for portFW NAT
#/etc/lvs.conf

#Port forwarding
ipvsadm -A -t 192.168.2.11:80 -s rr

#nat
ipchains -A forward -j MASQ -p tcp -s 10.10.10.0/24 80 -d 0.0.0.0/0


解释:
ipvsadm -A -t 192.168.2.11:80 -s rr
这句的意思是说192.168.2.11是一个集群地址(VIP),并且是针对80端口的,也就是说是一个web集群。在这个集群中采用
Round-Robin(rr)的算法。

ipchains -A forward -j MASQ -p tcp -s 10.10.10.0/24 80 -d 0.0.0.0/0
这句的作用是在服务器给用户做出回应时,将IP地址进行伪装,由10.10.10.11, 10.10.10.12, 10.10.10.13伪
装成192.168.2.11。


/etc/keepalived/keepalived.conf内容如下:


# Configuration File for keepalived

#begin www server config.......
virtual_server 192.168.2.11 80{
lb_algo rr
lb_kind NAT
protocol TCP

real_server 10.10.10.11 80 {
weight 1
ICMP_CHECK
}
real_server 10.10.10.12 80 {
weight 1
ICMP_CHECK
}
real_server 10.10.10.13 80 {
weight 1
ICMP_CHECK
}
}
#end of Fweb config!

解释:在这个文件里对三台服务器进行具体的说明,并且三台服务器有相同的Weight值。Keepalived以Layer3的方式(ICMP_CHECK)工作,
既定期检查服务器是否存在。


heartbeat 有三个配置文件:/etc/ha.d/ha.cf;/etc/ha.d/haresources;/etc/ha.d/ authkeys

/etc/ha.d/ha.cf内容如下:
#
# keepalive: how many seconds between heartbeats
#
keepalive 2
logfile /var/log/ha-log
#
# deadtime: seconds-to-declare-host-dead
#
deadtime 10
# hopfudge maximum hop count minus number of nodes in config
hopfudge 1
#
# What UDP port to use for udp or ppp-udp communication?
#
udpport 1001
# What interfaces to heartbeat over?
udp eth0
#
# Facility to use for syslog()/logger (alternative to log/debugfile)
#
logfacility local0
#
# Tell what machines are in the cluster
# node nodename ... -- must match uname -n
node Master #Master是Master LLB的机器名,必须与uname –n 相一致
node Slave #Slave是Slave LLB的机器名,必须与uname –n 相一致







/etc/ha.d/haresources内容如下:
Master IPaddr::10.10.10.9/24/eth1 IPaddr::192.168.2.11/24/eth0 keepalived
其中10.10.10.9是V-gate的值,192.168.2.11是VIP的值,这两个特殊的IP地址就是在这里设置的。并且说明了Master是主用的LLB,
Keepalived是需要heartbeat启动的程序。Keepalived是在安装Keepalived时自动生成的一个可执行文件,heartbeat会
在/etc/ha.d/resource.d目录下寻找keepalived,所以您需要将可执行的keepalived文件复制到/etc/ha.d/resource.d/目录下。


/etc/ha.d/ authkeys内容如下:
auth 1
1 sha1 cluster
这个文件不是很重要,但一定要有。在这里说明了LLB之间的一种AUTH机制。详细的说明请参考:


至此,所有的安装配置全部完成。一共有五个配置文件:
· /etc/keepalived/keepalived.conf
· /etc/lvs.conf
· /etc/ha.d/ha.cf
· /etc/ha.d/haresources
· /etc/ha.d/ authkeys
请您在仔细检查一下,而且确定这五个文件都安装在了Master LLB与Slave LLB上。下一步就可以启动了。

启动系统:
[root@master heartbeat]#heartbeat start
[root@slave heartbeat ]# heartbeat start

 
Webme09.cublog.cn
google
阅读(1151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~