这篇文章可以结合”Linux Virtual Server实作笔记 (VS/NAT)(VS/TUN)(VS/DR)“来看,会理解的更多一些,:) 1.简介 Fedora项目是由Redhat 公司赞助的开源Linux发行版本,由于Fedora系列界面简单易用,升级方便而且免费,得到笔者和很多Linux爱好者的追捧。 Fedora Core5(代号Bordeaux,内核为2.6.15-1,以下简称FC5)是Fedora最新的稳定版本,界面豪华美观,中文支持极佳。是笔者平常的办公学习用系统。 本 文FC5以作为负载均衡服务器(以下简称Director),以FC5、Sun Solaris10 x86h和FreeBSD5.4作为真实服务器(以下简称RealServer),实现了LVS中的两种负载均衡方式VS/NAT、VS/DR。调度算法 采用了比较简单的加权轮转算法。 由于笔者在VS/TUN方式下得出了新的结论,但正在完善之中,本文暂不使用VS/TUN方式。对于地理分布的系统而言,VS/TUN几乎是唯一的方法。 三种IP负载均衡技术的优缺点比较: 杂项 VS/NAT VS/TUN VS/DR 服务器操作系统 任意 支持隧道 多数(支持Non-arp ) 服务器网络 私有网络 局域网/广域网 局域网 服务器数目(100M网络) 10-20 100 多(100) 服务器网关 负载均衡器 自己的路由 自己的路由 效率 一般 高 最高 如何配置Director和RealServer是本文关注的焦点,读者可以将本文当作一篇Howto文档,文中给出了实现的详细方法、配置、和步骤。本文对LVS的原理阐述的非常少,如有需要,请参考章文嵩先生的博士论文和相关文章。 性能也不是本文的重点,事实上文中的很多机器都是在VMware上运行的。 本文中的所有例子,都是采用的Apache服务,这也是LVS经常应用的场合之一。三种操作系统的ip的最后一位,Linux总是160,FreeBSD总是170,Solaris总是180。测试的手段是在客户机(Linux)下运行 links 或elinks命令,用法如下: links -source http://VIP 这个手段非常简单,而且快速,笔者实验系统上的每个RealServer上Apache服务器上的缺省首页都不同,其中Linux上会显示"This is 160",连续执行此命令,会明显的看到ipvs在起作用。 本文原稿是用vim编辑的TEX 文件,使用了CJK宏包。文中的拓扑图用Gnome Desktop Project旗下的dia软件软件绘制。用多种LATEX 工具生成dvi、pdf和html版本的文件。笔者相信,即使在排版领域,自由软件也是最出色的。 2. 实现VS/NAT VS/NAT 是一种最简单的方式,所有的RealServer只需要将自己的网关指向Director即可。客户端可以是任意操作系统,但此方式下,一个 Director能够带动的RealServer比较有限。在VS/NAT的方式下,Director也可以兼为一台RealServer。 2.1网络拓扑图 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://blogimg.chinaunix.net/blog/upfile2/080912091812.png');}" onmousewheel="return imgzoom(this);" alt="" /> 2.2 Director 的配置 Director 的配置如下: 外部地址为192.168.10.254 内部地址为192.168.0.254 LVS在VS/NAT、VS/DR和VS/TUN3种方式下均需要打开ip_forward功能,这可以配置/etc/sysctl.conf 文件,保证其中有如下一行: net.ipv4.ip_forward = 1 执行: sysctl -p 可以使配置立即生效,并且重启电脑或network服务后,此设置仍然保存。 ipvs的脚本如下: ipvsadm -C ipvsadm -A -t 192.168.10.254:80 -s wlc ipvsadm -a -t 192.168.10.254:80 -r 192.168.0.160:80 -m ipvsadm -a -t 192.168.10.254:80 -r 192.168.0.170:80 -m ipvsadm -a -t 192.168.10.254:80 -r 192.168.0.180:80 -m ipvsadm -a -t 192.168.10.254:80 -r 192.168.0.254:80 -m 2.3Realserver的配置 3台RealServer的配置如下。 2.3.1 Linux Realserver的配置 /etc/sysconfig/network 文件的内容如下: NETWORKING=yes HOSTNAME=localhost.localdomain GATEWAY=192.168.0.254 网卡配置文件{/etc/sysconfig/network-scripts/ifcfg-eth0的内容如下: DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.160 NETMASK=255.255.255.0 BROADCAST=192.168.0.255 2.3.2 FreeBSD Realserver的配置 只需配置/etc/rc.conf,内容如下: sshd_enable="YES" ifconfig_lnc0="inet 192.168.0.170 netmask 255.255.255.0" defaultrouter="192.168.0.254" hostname="localhost.localdomain" apache_enable="YES" 2.3.3 Solaris x86 Realserver的配置 在Solaris 上配置主机名称、ip地址、子网以及网关,要比Linux和FreeBSD要复杂,需要配置多个文件。我机器上网卡名为pcn0,如果您的网卡名称不同,就请取代相应的部分。 /etc/hosts 和/etc/hostname.pcn0 联合作用的结果是配置ip地址和子网掩码,在hostname.pcn0 中填写了子网掩码,/etc/netmasks 文件就可以留空了。 /etc/defaultrouter 文件的作用是配置网关。只需要写一个做为网关的ip地址即可。 /etc/nodename文件的内容为hostname。 /etc/hosts文件: 127.0.0.1 localhost loghost 192.168.0.180 solaris /etc/hostname.pcn0文件: 192.168.0.180/24 /etc/defaultrouter文件 192.168.0.254 3 实现VS/DR 在很多Internet服务中,例如ftp和http,请求的流量往往远远小于回应的流量,VS/DR方式利用这种非对称的特点,只负责调度请求,而RealServer直接将相应的报文返回给客户机。 VS/DR 方式是通过改写请求报文中的MAC地址部分,来实现的Director和RealServer必需在物理上有一个网卡通过不间断的局域网相连。 RealServer上绑定VIP配置在各自Non-ARP的网络设备上(如lo或tunl),Director的VIP地址对外可见,而 RealServer的VIP对外是不可见的。RealServer的地址即可以是内部地址,也可以是真实地址。 在实现VS/DR的方式 中,我们配置了两台Router来模拟这种非对称路由的情况,RouterA地址为192.168.0.251, RouterB地址为192.168.0.252。当客户机访问Director时,由RouterA进入,当RealServer返回给客户机信息时, 由RouterB出去,根据实际情况您也可以只使用一台或使用多台Router。只要能确保客户发送信息到Director,而且RealServer可 以发送信息到客户即可。 3.1 网络拓扑图 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://blogimg.chinaunix.net/blog/upfile2/080912091827.png');}" onmousewheel="return imgzoom(this);" alt="" /> 3.2 Director的配置 Director 为单网卡,其中eth0的地址为192.168.0.254/32,eth0:0为192.168.0.200/32。网关为 192.168.0.251。这里的VIP地址就是192.168.0.200,当客户访问此地址,根据相应的调度算法,会访问到不同的 RealServer。 ipvs的脚本如下: #!/bin/bash ipvsadm -C ipvsadm -A -t 192.168.0.200:80 -s wlc ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.160 -g ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.170 -g ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.180 -g /etc/sysconfig/network 内容: NETWORKING=yes HOSTNAME=localhost.localdomain GATEWAY=192.168.0.251 /etc/sysconfig/network-scripts/ifcfg-eth0 文件内容: DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.254 NETMASK=255.255.255.0 /etc/sysconfig/network-scripts/ifcfg-eth0:0 内容如下: DEVICE=eth0:0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.200 NETMASK=255.255.255.255 3.3 Realserver的配置 3台RealServer的网关均指向另一路由器,地址为192.168.0.252 3.3.1Linux Realserver的配置 Linux Realserver配置的关键之一在于关闭arp,在Fedora Core5 中,不需要打任何补丁。但要配置/etc/sysctl.conf文件来关闭arp。/etc/sysctl.conf 内容如下: net.ipv4.ip_forward = 1 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 在/etc/sysconfig/network-scripts/ifcfg-eth0中配置ip地址和网关。 DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.160 NETMASK=255.255.255.0 BROADCAST=192.168.0.255 GATEWAY=192.168.0.252 配置VIP的网卡为/etc/sysconfig/network-scripts/ifcfg-lo:0。 DEVICE=lo:0 IPADDR=192.168.0.200 NETMASK=255.255.255.255 ONBOOT=yes 3.3.2 FreeBSD Realserver的配置 FreeBSD上的配置最为简单,只需要配置一个/etc/rc.conf文件即可。lnc0为真实网卡,lo0的别名上配置的网卡为VIP。/etc/rc.conf 内容如下: .... ifconfig_lnc0="inet 192.168.0.170 netmask 0xffffff00" ifconfig_lo0_alias0="inet 192.168.10.200 netmask 255.255.255.255" defaultrouter="192.168.0.252" hostname="localhost.localdomain" apache_enable="YES" .... 3.3.3 Solaris x86 Realserver的配置 Solaris上的网卡ip为192.168.0.180/24。lo0:1为VIP 192.168.0.200/32,另外需配置Solaris的缺省网关为192.168.0.252。 /etc/hosts 文件内容如下: 127.0.0.1 localhost loghost 192.168.0.180 test180.tt.com 192.168.0.200 vip /etc/hostname.pcn0文件内容如下: 192.168.0.180/24 hostname.lo0:1 文件用来配置lo网卡上的第二个P地址(VIP),文件内容 192.168.10.200/32 /etc/defaultrouter 文件内容 192.168.0.50 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 01:37 , Processed in 0.235846 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.