标准内核包linux-2.4.20-tar.gz ,与内核匹配的软件ipvs-1.0.09.tar.gz
内核需要打的补丁,hidden-2.4.20per10-1.diff ,noarp-2.4.20-1.diff ,iproute-050816-noarp-1.diff
KTCPVS 内核补丁包,
标准内核包可以在:www.kernel.org download;
其它所需组件可以在:www.linuxvirtualserver.org download;
安装平台 :Red hat 9.0: kernel linux-2.4.20-8
安装步骤 :
1) 把内核解压到/usr/src目录下 tar -zxvf linux-2.4.20.tar.gz -C /usr/src 生成linux-2.4.20/目录
由于ipvs-1.0.09 的Makefile文件中默认的安装路径是/usr/src/linux 所以需要做如下连接
ln -s /usr/src/linux-2.4.20 /usr/src/linux
或者也可以修改ipvs-1.0.09的Makefile 文件设置。把/usr/src/linux改为/usr/src/linux-2.4.20
同时修改ipvsadm/目录下的Makefile文件路径。我们在次采用连接的方法。
2) 打补丁:
cd
make kernelpatch 给内核打ipvs补丁
make installsource 把ipvs的source 加进内核
cat
如果要使用vs/tul vs/dr 功能 需要按上面的方法打noarp-2.4.20-1.diff,iproute-050816-noarp-1.diff
补丁。
KTCPVS 所涉及的layer-7 补丁是在lvs内核编译通过后,使用新内核时加入。
3) 编译内核:
cp /boot/config-2.4.* /usr/src/linux/.config 把安装时的配置文件copy 到/usr/src/linux 中,再用
make menuconfig 编译,它会读取.config 中原来的配置信息,这样只要对IP:Virtual Server
Configuration中的新选项选择即可。
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
Make mrproper
Make menuconfig
执行make menuconfig时,我们将进入一个图形化的界面,在其中可以对Linux Kernel
进行详细设置。与LVS相关的kernel选项都在“Networking options”中,进入“Networking
options”,可以查看到“IP: Virtual Server Configuration”选项,将其它所有的子选项都
选上:
[*] IP virtual server debugging
(12) IPVS connection table size (the Nth power of 2)
--- IPVS scheduler
--- IPVS application helper
另外,“Networking options”中的“IP: Netfilter Configuration"中的选项的所有子项,除了以
下两项不要选之外,其它全可以选:
< > ipchains (2.2-style) support
< > ipfwadm (2.0-style) support
还有,“Networking options”中还有一些关于网络的选项,要注意按自己的需要去选择:
<*> Packet socket
[ ] Packet socket: mmapped IO
<*> Netlike device emulation
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging
[*] Socket Filtering
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
[*] IP: policy routing
[ ] IP: use netfilter MARK value as routing key
[ ] IP: fast network address translation
图2
图3
注意的问题:如果使用Standard Kernel,在make menuconfig 时可能在Networking op
tions选项中找不到IP:Virtual Server Configuration选项,这是因为没有选中Network
packet filtering选项,如图
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
Make dep
Make clean
Make bzImage
Make modules;make modules_install 注意最后的命令如果只执行了make modules_install命令就
可能不会在/lib/modules 目录下生成新内核的文件目录,所以保险期间采用先执行make modules
命令,再make modules_install命令
Make install 此命令可以自动加载新内核,如果你的编译环境不能用这个命令哪咱们就要辛苦一点
了, 手动加载J
步骤如下:
mkinitrd /boot/initrd-2.4.20ipvs.img 2.4.20 创建initrd映像
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20ipvs
cd /boot
rm vmlinuz
ln -s vmlinuz-2.4.20ipvs vmlinuz
cp /usr/src/linux/System.map /boot/System.map-2.4.20ipvs
cd /boot
rm System.map
ln -s System.map-2.4.20ipvs System.map
修改grub 文件 在/boot/grub/和/etc 下修改都可以在grub.conf 文件中加入如下设置
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
title LVS-linux (1.0.09)
root (hd0,5)
kernel /boot/vmlinuz-2.4.20ipvs ro
initrd /boot/initrd-2.4.20ipvs.img
原来的root=LABLE=/项可能会带来麻烦,所以把他去掉,也可以修改为root=/dev/hda6 也就是linux系
统所在的分区号
上面一切都搞定后我们进入下一个步骤,起用新内核并生成加载ipvs模块。
安装ipvs和ipvsadm
cd /usr/src/ipvs-1.0.09/
make all
make install
insmod ip_vs_wlc.o
当使用了支持ipvs 的内核后,就可以安装ipvsadm,ipvsadm 是设置ipvs 转发方式和调度算法的工具
cd /usr/src/ipvs/ipvsadm/
make all
make install
ipvsadm -Lcn
运行ipvsadm命令如果出现以下提示说明安装成功。
编写后记:不论使用使用什么版本的内核来编译,都要选择合适的补丁和ipvs 软件。在二着之中补丁
最为重要,直接关系编译后内核能否支持ipvs 和编译是否能够通过,起用新内核后可能会遇到root 文
件自检的问题,目前为止我还没有解决,好象只要是切换过内核就会出现。估计是二个内核的文件系统
有冲突.
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
LVS 使用文档VS-NAT
VS/NAT (Virtual Server via Network Address Translation)
VS/NAT的体系结构如图2所示。在一组服务器前有一个调度器,它们是通过Switch/HUB相
连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,
执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系
统(如NFS)共享,也可以通过一个分布式文件系统来提供。
Working way:当有用户从internet访问服务时Load balancer 首先接到用户的请求,
然后调用调度算法,把访问分发到后真实的服务器上,具体会被调度到那个后端服务器和设
定的调度算法有关.VS/NAT 在linux(LB)服务器和后端真实服务器上有不同的设置。在
linux 负载均衡器上的设置如下
VIP: Virtual IP
RIP: Real server IP
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
前端负载均衡器兼rael server:
VIP:192.168.6.100 netmask 255.255.255.0 broadcast 192.168.1.254
RIP:192.188.1.1 netmask 255.255.255.0 broadcast 192.188.1.254
后端真实服务器:
Real server 1:
RIP: 192.188.1.2 netmask 255.255.255.0 broadcast 192.188.1.254
Real server 2:
RIP: 192.188.1.3 netmask 255.255.255.0 broadcast 192.168.1.254
Load Balancer script:
#!bin/sh
#set ip_forward ON for vs-nat director (1 on , 0 off)
echo 1 > /proc/sys/net/ipv4/ip_forward
#director is gateway for realservers
#turn OFF icmp redirects(1 on , 0 off)
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
#set VIP
ifconfig eth0:100 192.168.6.100 broadcast 192.168.1.254 netmask
255.255.240.0
#set default gateway
route add default gw 192.168.1.254 netmask 0.0.0.0 metric 1
#clean ipvsadm tables
ipvsadm -C
#add http to VIP with rr (Round-Robin Scheduling) scheduling
ipvsadm -A -t 192.168.6.100:http -s rr
#forward http to real server 192.188.1.1 use LVS-NAT (-m), with weight 1
ipvsadm -a -t 192.168.6.100:http -r 192.188.1.1:http -m -w 1
#forward http to real server 192.188.1.2 use LVS-NAT (-m), with weight 1
ipvsadm -a -t 192.168.6.100:http -r 192.188.1.2:http -m -w 1
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
#forward http to real server 192.188.1.3 use LVS-NAT (-m), with weight 1
ipvsadm -a -t 192.168.6.100:http -r 192.188.1.3:http -m -w 1
#check that real server is scheduling from director
ping -c 1 192.168.1.1
ping -c 1 192.168.1.2
ping -c 1 192.168.1.3
#list ipvsadm tables
ipvsadm
###end###
set iptables Masq
凡是来自192.188.1.0/24 网段的数据包都进行 IP 伪装转发。为了测试的安全我们先清
空iptables 规则链。
iptables -F (INPUT FORWARD OUPUT POSTROUTING)
iptables -X
iptables -t nat -A POSTROUTING -r 192.188.1.0/24 -j MASQUERADE
以上就是负载均衡器在VS-NAT 模式下的设置。下面是真实服务器端的设置,Real server
1 ,2 , 3的设置相同,都是如下格式:
RealServer script:
#!bin/sh
#Set ip_forwark OFF for Real server (1 on, 0 off)
echo 0 > /proc/sys/net/ipv4/ip_forward
#installing default gateway 192.188.1.1 for vs-nat
route add default gw 192.188.1.1
#show route table
route(or netstat -rn)
#check if default gw is reachable
ping -c 1 192.188.1.*
#looking for VIP on director from realserver
ping -c 1 192.168.6.100
如果使用的是 Windows 2000 Server 操作系统只用把默认网关设置成
192.188.1.1
PDF 文件以 "FinePrint pdfFactory Pro" 试用版创建 http://www.pdffactory.com
附录:
客户通过Virtual IP Address(虚拟服务的IP 地址)访问网络服务时,请求报文到达
调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址
Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应
端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash 表中记录这
个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址
和端口,进行同样的改写操作,并将报文传给原选定的服务器。
当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为
Virtual IP Address和相应的端口,再把报文发给用户。我们在连接上引入一个状态机,
不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。
在TCP 连接中,根据标准的TCP有限状态机进行状态迁移,这里我们不一一叙述,请
参见W. Richard Stevens的《TCP/IP Illustrated Volume I》。
在UDP 中,我们只设置一个UDP 状态。不同状态的超时值是可以设置的,在缺省情
况下,SYN 状态的超时为1 分钟,ESTABLISHED状态的超时为15分钟,FIN状态的超
时为1 分钟;UDP 状态的超时为5 分钟。当连接终止或超时,调度器将这个连接从连接
Hash表中删除。