Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1527393
  • 博文数量: 463
  • 博客积分: 10540
  • 博客等级: 上将
  • 技术积分: 5450
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-12 08:30
文章分类

全部博文(463)

文章存档

2014年(2)

2012年(14)

2011年(42)

2010年(18)

2009年(78)

2008年(35)

2007年(182)

2006年(92)

我的朋友

分类: LINUX

2007-12-10 17:55:04

基本术语:  
Director
:前端负载均衡器,运行lvs,目前只能为Linux,针对FreeBSD刚刚出来,性能不是很好。可以针对web、ftp、cache、mms甚至mysql等服务做load balances。
  RealServer:后端需要负载均衡的服务器,可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作为RealServer使用.
  lvs( Linux Virtual Server),Linux下的负载均衡器,支持LVS-NAT、 LVS-DR、LVS-TUNL三种不同的方式,nat用的不是很多,主要用的是DR、TUNL方式。
  DR方式适合所有的RealServer同一网段下,即接在同一个交换机上.
  TUNL方式就对于RealServer的位置可以任意了,完全可以跨地域、空间,只要系统支持Tunnel就可以.方便以后扩充的话直接Tunl方式即可.

由此可知,配置集群分以下几种情况:

一、配置基于DR模式Lvs集群
二、配置基于隧道模式Lvs集群
三、配置基于高可用Lvs+heartbeat
四、此种配置方式可以加强LVS的主节点的高安全性前提下(主节点简称DR,备份主节点DRbak),考虑充分利用资源可以将DRbak做为realserver。

集群系统基本构架:

 



Load Balancer(负载均衡器):

Load Balancer
是整个集群系统的前端,负责把客户请求转发到Real Server上。

Backup
是备份Load Balancer,当Load Balancer不可用时接替它,成为实际的Load Balancer。

Load Balancer
通过Ldirectord监测各Real Server的健康状况。在Real Server不可用时把它从群中剔除,恢复时重新加入。
 
Server Array(
服务器群):
Server Array
是一组运行实际应用服务的机器,比如WEB, Mail, FTP, DNS, Media等等。在实际应用中,Load Balancer和Backup也可以兼任Real Server的角色。 以下的测试就是一台服务器既担任了LVSserver,同时也是realserver节点.

Shared Storage(
共享存储):
Shared Storage
为所有Real Server提供共享存储空间和一致的数据内容。这一部分在这里下面将详述.

LVS
的安装部署

LVS+DR
模式的部署

一. 准备工作:

1. VMware server
采用vmware GSX server3.2,然后在虚拟机上安装了2个CENTOS4.4,安装CENTOS的原因是它完全是免费的,且可以升级,是稳定的redhat版本.

2. 
操作系统:

CENTOS 4.4
下载: 
到 下载 1,2,3,4 张.iso 就可以了。

3. IPVS
管理软件

可以到 下载源代码编译文件ipvsadm-1.24.tar.gz
也可以直接在 下载类似ipvsadm-1.24-6.i386.rpm ,piranha-0.8.2-1.i386.rpm的rpm包进行安装.

4:
地址规划:

LB
真实地址:192.168.60.132
VIP
地址(vistual IP,也就是你的URL需要解析到的地址, 或者说是提供对外http 服务的ip)192.168.60.200
Realserver1:192.168.60.132
Realserver2:192.168.60.144
即192.168.60.132是LVSserver,也是realserver.

二. 开始安装:

1. 
安装 CENT OS 4.4 在vmware中
我在选择安装包时选择了 xwindows system, GNOME desktop environment,
KDE K DESKTOP environment, development tools, x software development,
gnome software development, kde software development.
2. 
安装完成后,copy 操作系统. 生成第二个.

3. 三个操作系统的ip 分别 为:
(lvs server) 192.168.60.132
255.255.255.0
192.168.60.1 (gw)
(real server) 192.168.60.132
255.255.255.0
192.168.60.1 (gw)
(real server) 192.168.60.144
255.255.255.0
192.168.60.1 (gw)
192.168.60.132
既是LVS server,又是real server.

4:
在LVSserver上安装IPVS管理软件

IPVS
安装主要包括三方面:
在Load Banlancer上安装IPVS内核补丁 
在Load Banlancer上安装IPVS管理软件 
在Real Server上安装ARP hidden内核补丁
我采用的是rpm安装方式,其它的realserver节点不用安装这些东西.
Rpm –ivh ipvsadm-1.24-6.i386.rpm
Rpm –ivh  piranha-0.8.2-1.i386.rpm
# ipvsadm --help 
如果看到提示帮助就表成功。

5. 
进入192.168.60.132 检查kernel 是否已经包含 ipvs 模块
modprobe -l |grep ipvs
如果看到如下,就可以了,如果没有还要重编内核,选 上ipvs 模块。
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
6:
配置启动脚本

 LvsServer
上的脚本:
#!/bin/bash
VIP=192.168.60.200
RIP1=192.168.60.132
RIP2=192.168.60.144
GW=192.168.60.1
# set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0 
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#Run LVS
/sbin/ipvsadm
#end
说明:
echo "1" >/proc/sys/net/ipv4/ip_forward,
通过该参数来启用包转发功能,从而使系统充当路由器。参数值为1时启用ip转发,为0时禁止ip转发。注意,我们可以在单网卡或双网卡的主机上实现ip转发.

也可以写成这样的服务脚本:
#!/bin/sh
# description: start LVS   of  Directorserver
VIP=192.168.60.132
RIP1=192.168.60.132
RIP2=192.168.60.144
 
./etc/rc.d/init.d/functions
 
case "$1" in
    start)
        echo " start LVS  of DirectorServer"

# set the Virtual  IP Address and sysctl parameter
 /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
       echo "1" >/proc/sys/net/ipv4/ip_forward 
#Clear IPVS table
       /sbin/ipvsadm -C
 
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g

#Run LVS
      /sbin/ipvsadm
       ;
    stop)
        echo "close LVS Directorserver"
        echo "0" >/proc/sys/net/ipv4/ip_forward
        /sbin/ipvsadm -C
        /sbin/ifconfig eth0:0 down
        ;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

把此文件放到/etc/init.d/lvsdr
chomd 755 /etc/init.d/lvsdr
service lvsdr start
Realserver
上的脚本:
在192.168.60.132上也配置这个脚本.
#!/bin/bash
VIP=192.168.25.200
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
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
sysctl -p
#end

上面脚本也可以写成服务:
vi /etc/init.d/lvsrs
#!/bin/bash
#description : start realserver 
VIP=192.168.60.200
./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
然后:
chomd 755 /etc/init.d/lvsrs
service lvsrs start

在RS上必须对VIP忽略ARP响应, 对于2.4以下低版本,在Real Server上要安装ARP hidden内核补丁,幸运的是,在2.6内核中通过调整内核参数即可忽略ARP广播回应。真好!上面脚本就是实现这些功能.

7:
配置lvs文件

Lvs
安装完毕后,会产生/etc/sysconfig/ha/lvs.cf文件,编辑此文件,内容类似如下:
[root@rac1 ~]# more /etc/sysconfig/ha/lvs.cf
serial_no = 18
primary = 192.168.60.132
service = lvs
network = direct
debug_level = NONE
virtual {
active = 1
address = 192.168.60.200 eth0:0
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0

server RS1 {
address = 192.168.60.132
active = 1
weight = 1
}
server RS2 {
address = 192.168.60.144
active = 1
weight = 1
}
}
编辑完成,然后启动pulse服务,即启动lvs服务
Service pulse start

阅读(1317) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~