Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1473356
  • 博文数量: 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刚刚出来,性能不是很好。可以针对webftpcachemms甚至mysql等服务做load balances
  RealServer:后端需要负载均衡的服务器,可以为各类系统,LinuxSolarisAixBSDWindows都可,甚至Director本身也可以作为RealServer使用.
  lvs( Linux Virtual Server),Linux下的负载均衡器,支持LVS-NAT LVS-DRLVS-TUNL三种不同的方式,nat用的不是很多,主要用的是DRTUNL方式。
  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 BalancerBackup也可以兼任Real Server的角色。 以下的测试就是一台服务器既担任了LVSserver,同时也是realserver节点.

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

LVS
的安装部署

LVS+DR
模式的部署

准备工作:

1. VMware server
采用vmware GSX server3.2,然后在虚拟机上安装了2CENTOS4.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.rpmrpm包进行安装.

4:
地址规划:

LB
真实地址:192.168.60.132
VIP
地址(vistual IP,也就是你的URL需要解析到的地址或者说是提供对外http 服务的ip192.168.60.200
Realserver1:192.168.60.132
Realserver2:192.168.60.144
192.168.60.132LVSserver,也是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

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