找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

LVS在Fedora Core5上的配置指南

2009-12-20 13:22| 发布者: admin| 查看: 58| 评论: 0|原作者: 夙瑶

这篇文章可以结合”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







最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏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.

返回顶部