注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

韬光养晦

路漫漫其修远兮,吾将上下而求索

 
 
 

日志

 
 

局域网内负载均衡  

2009-05-13 10:52:13|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近我因为要做实验配置一个lvs集群提供web集群的负载均衡。我的第一步就是先配置出一个可以实现简单转发机制的集群。
但是花费了近一周的时间我都没有弄明白怎么配置,配置不成功。因此请求大家的帮忙。

我的环境是这样子的:
Director 是Ubuntu 8.04 desktop,内核是2.6.24-24-generic ,服务器全都是Windows XP。Director只有一块物理网卡。
Director和Client以及服务器都是在同一个局域网内部,这个局域网有个特点就是要想加入局域网必须通过用户名和密码登录,登录之后才能被别的机器发现。
局域网IP是这样子的:
网关210.43.109.253
Director的IP:210.43.109.161
采用VIP:210.43.109.254
服务器的IP:210.43.109.125,210.43.109.126
Client为局域网中的其他地址,例如210.43.109.25。

我的要求是这样的:尽可能的少在Windows Xp即服务器上少做修改,当然增加环回网卡还是可以的。
我的配置过程是这样的:
1  在Director上安装了ipvsadm,其version信息为:ipvsadm v1.24 2003/06/07 (compiled with popt and IPVS v1.2.0)。
2  在Director上对/etc/sysctl.conf进行修改,将这一句net.ipv4.ip_forward = 1 进行反注释。
3  运行ipvsadm时候,我采用210.43.109.254作为VIP。并这样在Direcotr配置的:
    sudo ifconfig eth0:0 210.43.109.254 broadcast 210.43.109.254 netmask 255.255.255.255 up
    sudo route add -host 210.43.109.254 dev eth0:0
    sudo echo "1" > /proc/sys/net/ipv4/ip_forward
    sudo echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
    sudo echo "0" > /proc/sys/net/ipv4/conf/default/send_redirects
    sudo echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
    sudo ipvsadm -C
    sudo ipvsadm -A -t 210.43.109.254:80 -s rr
    sudo ipvsadm -a -t 210.43.109.254:80 -r 210.43.109.125:8080 -g -w 1
    sudo ipvsadm -a -t 210.43.109.254:80 -r 210.43.109.126:80 -g -w 1
    sudo ipvsadm
4 在执行上面3的命令的时候,其中的:
    sudo echo "1" > /proc/sys/net/ipv4/ip_forward
    sudo echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
    sudo echo "0" > /proc/sys/net/ipv4/conf/default/send_redirects
    sudo echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
   总是不能执行,错误依次为:
    bash: /proc/sys/net/ipv4/ip_forward: Permission denied
    bash: /proc/sys/net/ipv4/conf/all/send_redirects: Permission denied
    bash: /proc/sys/net/ipv4/conf/default/send_redirects: Permission denied
    bash: /proc/sys/net/ipv4/conf/eth0/send_redirects: Permission denied
    
   于是我就对/etc/sysctl.conf进行修改。在其中添加了如下四句:
    net.ipv4.ip_forward=1
    net/ipv4/conf/all/send_redirects = 0
    net/ipv4/conf/default/send_redirects = 0
    net/ipv4/conf/eth0/send_redirects = 0
   并执行了sudo sysctl -p,结果显示为:
    kernel.printk = 4 4 1 7
    kernel.maps_protect = 1
    fs.inotify.max_user_watches = 524288
    vm.mmap_min_addr = 65536
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.ip_forward = 1
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0

5  然后我将3中的命令修改为:
    sudo ifconfig eth0:0 210.43.109.254 broadcast 210.43.109.254 netmask 255.255.255.255 up
    sudo route add -host 210.43.109.254 dev eth0:0
    sudo ipvsadm -C
    sudo ipvsadm -A -t 210.43.109.254:80 -s rr
    sudo ipvsadm -a -t 210.43.109.254:80 -r 210.43.109.125:8080 -g -w 1
    sudo ipvsadm -a -t 210.43.109.254:80 -r 210.43.109.126:80 -g -w 1
    sudo ipvsadm
6  执行5中的命令,没有错误,最后一句命令sudo ipvsadm的输出为:
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  lanvis-desktop.local:www rr
      -> 210.43.109.126:www           Route   1      0          0         
      -> 210.43.109.125:www           Route   1      0          0  
7 在两个服务器210.43.109.125,210.43.109.125上采取如下操作,注意他们的OS是Windows XP:
    从控制面板选择添加硬件;选择“是,硬件已连好”;选择“添加新的硬件设备”;选择“安装我手动从列表选择的硬件”;选择“网络适配器”;从厂商列表选择“Microsoft”,从网卡列表选择“Microsoft Loopback Adapter”;安装硬件,安装完毕后出现一个新的网卡,配置好IP为210.43.109.254和子网掩码255.255.255.0,网关和DNS都置空。然后在注册表修改子网掩码:从注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip \Parameters\Interfaces]下找到对应的网卡,将SubnetMask修改成255.255.255.255。然后禁用再启用该网卡。
    在他们的对应的端口210.43.109.125:8080(Apache2.2)和210.43.109.126:80(Apache2.2)下都放置了index.html文件,并能够在Client:210.43.109.22进行访问。
    注意尽量不要用tomcat,我一用tomcat就不能访问。
8 从Client:210.43.109.25通过浏览器访问http://210.43.109.254/index.html,分别用FireFox,IE,Maxton访问发现访问到不同的页面。
    成功!!!!



附注:
sudo ipvsadm -A -t 210.43.109.254:80 -s rr    // rr表示使用rr机制调度,默认为wlc
sudo ipvsadm -a -t 210.43.109.254:80 -r 210.43.109.126:80 -g -w 1  //-g表示dr方式 //-w 1表示服务器的权重
Client最好不好开启arp防火墙,否则有可能不能访问VIP。

参考资料:
http://kb.linuxvirtualserver.org/wiki/Compiling_ipvsadm_on_different_Linux_distributions
http://www.ultramonkey.org/papers/lvs_tutorial/html/
http://www.linuxvirtualserver.org/
http://zh.linuxvirtualserver.org/
http://hi.baidu.com/shengit/blog/item/06691e62b21c8b670c33fac6.html
http://hi.baidu.com/hfr6666/blog/item/981a07133e5678d8f6039e14.html
  评论这张
 
阅读(1332)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018