下面是基于NAT结构的:访问http://www.210.210.210.111 会把负载平衡的分配到RS1和RS2上
一共存在四个操作系统,windows作为客户机相当于Internet上的任何一台PC
Windows的网络设置为:
Ip: 210.210.210.110
SUBMASK:255.255.255.0
GATEWAY:210.210.210.1
在VMware上虚拟出三个RHEL4 分别为 BL,RS1,RS2
BL(负载均衡机)上设置两个网卡: 例如
Eth0: 作为外网IP,外部能访问到
Ip: 210.210.210.111
SUBMASK:255.255.255.0
GATEWAY:210.210.210.1
Eth0:1 : 只设置IP即可,内网使用
IP: 192.168.255.10
RS1 与RS2上面需要设置的较少,设置好IP和开启APACHE即可(默认网页根.目录为/var/www/html初始为空)
例如:
RS1:
IP:192.168.255.4
SMASK: 255.255.255.0
GW: 192.168.255.10 //注意该网关为BL上的内网IP
RS2:
IP:192.168.255.5
SMASK: 255.255.255.0
GW: 192.168.255.10 //注意该网关为BL上的内网IP
以上仅为各机IP的设置
BL上其他配置部分:目前系统一般都有IPVS补丁,不需另装。
安装上对应内核版本号的ipvsadm程序。此处使用1.24版本(见附1)。
接着执行下面命令:
echo “1”> /proc/sys/net/ipv4/ip_forward
#下面4条不知道干什么的,是否用得着?
echo “0” > /proc/sys/net/ipv4/conf/all/send_redirects
echo “0” >/proc/sys/net/ipv4/conf/default/send_redirects
echo “0” >/proc/sys/net/ipv4/conf/eth0/send_redirects
echo “0”>/proc/sys/net/ipv4/conf/ethl/sendse_redirects
vi /etc/rc.d/init.d/ipvsadm
#以下黄颜色信息写在/etc/rc.d/init.d/ipvsadm文件里
ipvsadm -C
ipvsadm -A -t 210.210.210.112:80 -s rr
ipvsadm -a -t 210.210.210.112:80 -r 192.168.255.4:80 -m -w 1
ipvsadm -a -t 210.210.210.112:80 -r 192.168.255.5:80 -m -w 1
service ipvsadm start
service –Ln
以下命令相当于上面黄色信息里面的作用,不过是临时的
#清除ipvsadm表:
/sbin/ipvsadm -C
#使用ipvsadm安装LVS服务
#add http to VIP with wlc scheduling
/sbin/ipvsadm -A -t 210.210.210.111:80 -s rr
#增加第一台RS1:
#forward http to real server 1 using LVS -NAT(-m),with weight=l
/sbin/ipvsadm -a -t 210.210.210.111:80 -r 192.168.255.4:80 -m -w 1
#增加第二台RS2:
#forward http to real server 2 using LVS -NAT(一m),with weight=1
/sbin/ipvsadm -a -t 210.210.210.111:80 -r 192.168.255.5:80 -m -w l
*客户端访问的时候写全网址//210.210.210.112:80/index.html
附:
1.判断是否具备完整IPVS模块?
LVS所需的核心模组
LVS发展出一个名为IPVS(IP Virtual Server)的核心模组,直接于Linux的核心中运作,进行连线的导引与调度.IPVS模组于2.4.23版开始,已正式纳入Linux的内核中,成为Linux的一部分。
若使用的发行版预设核心版本高于2.4.23,那么应该已具架设LVS群集的能力.如果预设内核低于2.4.23,且发行版亦未特别另加IPVS模组,可以到www.kernel.org下载最新版本的核心,重新编译内核,主意编译时一定开启所有IPVS的相关选项。
如果不知道发行版预设核心是否已包含IPVS模组,可以如下查询:
[root@smart401 ~]# grep "CONFIG_IP_VS" /boot/config-`uname -r` // ` :直接按1前面的按键即可
CONFIG_IP_VS=m //已包含IPVS模组,m代表已编译为模组,y则是已内建于内核,n表示不支援
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12
CONFIG_IP_VS_PROTO_TCP=y //这些是IPVS所支援的通讯协定
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_RR=m //这些是IPVS所支援的调度演算模组
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
CONFIG_IP_VS_FTP=m //此为IPVS支援FTP协议的模组
确定内核已经支援IPVS,还需要安装IPVS管理工具套件,才能进行LVS集群的设定.此管理工具为ipvsadm,查询是否已经安装这个管理工具:
【Fedora ,Red Hat Linux和Mandrake Linux】:
#rpm -qa | grep ipvsadm
下载:http://www.linux-vs.org/software/ipvs.html,依照核心下载ipvsadm原始档,自行编译安装。
1> 通过tar包安装ipvsadm
2> #yum install ipvsadm 【此方式无法实现】
由于安装的是RHEL4-U5 因此使用的是下载安装的是ipvsadm-1.24.tar.gz
[root@smart401 ~]# ln -s /usr/src/kernels/2.6.9-55.EL-smp-i686/ /usr/src/linux
[root@smart401 ~]# tar zxvf ipvsadm-1.24.tar.gz
[root@smart401 ~]# cd ipvsadm-1.24
[root@smart401 ipvsadm-1.24]# make &&make install
make -C libipvs
make[1]: Entering directory `/root/ipvsadm-1.24/libipvs'
gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -I/usr/src/linux/include -DHAVE_NET_IP_VS_H -c -o libipvs.o libipvs.c
ar rv libipvs.a libipvs.o
ar: 正在创建libipvs.a
a - libipvs.o
make[1]: Leaving directory `/root/ipvsadm-1.24/libipvs'
gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -I/usr/src/linux/include -I.. -I. -DVERSION=/"1.24/" -DSCHEDULERS=/""rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq"/" -DHAVE_POPT -DHAVE_NET_IP_VS_H -c -o ipvsadm.o ipvsadm.c
gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -I/usr/src/linux/include -I.. -I. -DVERSION=/"1.24/" -DSCHEDULERS=/""rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq"/" -DHAVE_POPT -DHAVE_NET_IP_VS_H -c -o config_stream.o config_stream.c
gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -I/usr/src/linux/include -I.. -I. -DVERSION=/"1.24/" -DSCHEDULERS=/""rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq"/" -DHAVE_POPT -DHAVE_NET_IP_VS_H -c -o dynamic_array.o dynamic_array.c
gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -o ipvsadm ipvsadm.o config_stream.o dynamic_array.o libipvs/libipvs.a -L/usr/lib -lpopt
make -C libipvs
make[1]: Entering directory `/root/ipvsadm-1.24/libipvs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/ipvsadm-1.24/libipvs'
if [ ! -d /sbin ]; then mkdir -p /sbin; fi
install -m 0755 -s ipvsadm /sbin
install -m 0755 ipvsadm-save /sbin
install -m 0755 ipvsadm-restore /sbin
[ -d /usr/man/man8 ] || mkdir -p /usr/man/man8
install -m 0644 ipvsadm.8 /usr/man/man8
install -m 0644 ipvsadm-save.8 /usr/man/man8
install -m 0644 ipvsadm-restore.8 /usr/man/man8
if [ -d /etc/rc.d/init.d ]; then /
install -m 0755 ipvsadm.sh /etc/rc.d/init.d/ipvsadm; /
fi