免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 932 | 回复: 0
打印 上一主题 下一主题

ADSL 负载平衡之实践战略 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-25 13:47 |只看该作者 |倒序浏览

                 ADSL 负载平衡之实践战略
自己前段时间做的双线负载平衡,本人现在才是成长阶段,斗胆上来献丑,各位表笑啊```
不废话了```看下面吧,也许对你真的有点用:
linux配置多线路ADSL的方法
此文档可以说明双ADSL及多ADSL增加线路的配置过程......
        linux配置多线路ADSL的方法
          powered by KindGeorge
  经过一段时间的观察,证明运行良好,现把设置过程及方法总结一下,欢迎指正.
  此文档可以说明双adsl及多adsl增加线路的配置过程.
实验环境:
  操作系统: RedHat7.3
  两条adsl,长期观察线路稳定,动态ip,带宽2M,
  三块网卡: eth0 tulip,接内网
        eth1 3c59x,接第一条adsl
        eth2 8139too,接第二条adsl
    ethn xxxx,(如果还有的话....)
目的:用两条adsl共同上网,分担负载,实现一般的简单负载平衡,带动内网上网.
1.添加网卡
插入网卡,启动机器,如果需要双线路上网,就要三块网卡了,配置网卡也可以参考其他资料.
配置为找到相应的型号模块,例如:eth2是8139的网卡
[root@kindgeorge root]# vi /etc/modules.conf
  alias parport_lowlevel parport_pc
  alias eth0 tulip
  alias eth1 3c59x
  alias eth2 8139too
把新的线路插在eth2上
2.配置adsl
方法一:
(1)运行adsl-setup程序,会一步一步的提示你完成配置过程.
  创建ppp0和ppp1的拨号配置文件,并保存配置,一般保存在/etc/sysconfig/network-scripts/ifcfg-ppp1
(2)确定/etc/sysconfig/network-scripts/ifcfg-ppp0文件,其中的PIDFILE参数设为:
  PIDFILE=/var/run/ppp-adsl.pid
  修改/etc/sysconfig/network-scripts/ifcfg-ppp1文件,将其中的PIDFILE参数设为:
  PIDFILE=/var/run/ppp-adsl1.pid
  如果你有更多的线路,可以继续增加0,1,2,3....等
  这是为了使不同的拨好用不同的pid,如果不修改此参数将无法启动第二条线路接口。
(3)配置文件一般是:
  USERCTL=no
  BOOTPROTO=dialup
  NAME=DSLppp1
  DEVICE=ppp1
  TYPE=xDSL
  ONBOOT=yes
  PIDFILE=/var/run/pppoe-adsl1.pid
  FIREWALL=NONE
  PING=.
  PPPOE_TIMEOUT=20
  LCP_FAILURE=3
  LCP_INTERVAL=20
  CLAMPMSS=1412
  CONNECT_POLL=6
  CONNECT_TIMEOUT=60
  DEFROUTE=yes
  SYNCHRONOUS=no
  ETH=eth2 (对应新线路的网卡)
  PROVIDER=DSLppp1
  USER=isp提供的新用户名字2
  PEERDNS=no
方法二:
(1)直接拷贝
  cp /etc/sysconfig/network-scripts/ifcfg-ppp0 /etc/sysconfig/network-scripts/ifcfg-ppp1
(2)修改其中的ppp0为ppp1,
  修改PIDFILE=/var/run/pppoe-adsl.pid 为PIDFILE=/var/run/pppoe-adsl1.pid
  修改采用的新接线路的网卡,例如:改ETH=eth1 为ETH=eth2
(3)增加新线路的帐号和密码. 帐号密码一般是保存在/etc/ppp/chap-secrets 和pap-secrets
  我们只需要在最后增加新的用户名2和密码2即可.
  /etc/ppp/chap-secrets文件一般是这样的:
  # Secrets for authentication using CHAP
  # client     server secret             IP addresses
  "用户名1"     *     "密码1"
  "用户名2"     *     "密码2"
  "用户名n"     *     "密码n"
3.启动ppp接口
因为adsl-start 命令缺省只能启动第一的ppp接口。所以要启动两个接口,必须指定配置文件。
可以用:方法一:
  ifup ppp0
  ifup ppp1
  (ifup pppn...)
  或方法二:
  adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp0
  adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp1
  (adsl-start /etc/sysconfig/network-scripts/ifcfg-pppn)
4.查看新设置是否启动:
  方法一:执行: ifconfig
  出现ppp0 和ppp1 ,并且均得到ip了.说明成功了,结果象这样:
  ppp0   Link encap:Point-to-Point Protocol
      inet addr:218.114.37.137 P-t-P:61.142.110.30 Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
      RX packets:165721 errors:0 dropped:0 overruns:0 frame:0
      TX packets:123673 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:3
      RX bytes:157324193 (150.0 Mb) TX bytes:14068892 (13.4 Mb)
  ppp1   Link encap:Point-to-Point Protocol
      inet addr:218.114.35.62 P-t-P:61.142.110.30 Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
      RX packets:560055 errors:0 dropped:0 overruns:0 frame:0
      TX packets:439711 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:3
      RX bytes:530025378 (505.4 Mb) TX bytes:80895162 (77.1 Mb)
方法二: 执行ip高级命令: ip link ls
也可以检验ppp0和ppp1,结果象这样:
      1: lo:  mtu 16436 qdisc noqueue
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      2: eth0:  mtu 1500 qdisc pfifo_fast qlen 100
        link/ether 00:50:bf:07:4e:32 brd ff:ff:ff:ff:ff:ff
      3: eth1:  mtu 1500 qdisc pfifo_fast qlen 100
        link/ether 00:01:02:9a:31:b9 brd ff:ff:ff:ff:ff:ff
      4: eth2:  mtu 1500 qdisc pfifo_fast qlen 100
        link/ether 00:e0:4c:79:44:71 brd ff:ff:ff:ff:ff:ff
    268: ppp1:  mtu 1492 qdisc pfifo_fast qlen 3
        link/ppp
    273: ppp0:  mtu 1492 qdisc cbq qlen 3
        link/ppp
方法三: 用命令测试反应
    ping -I ppp0 202.96.134.133   (测试ppp0的线路状况)
ping -I ppp1 202.96.134.133   (测试ppp1的线路状况)
ping -I ppp2 ......n   (如果还有多条的话)   
5.如果单单是要实现链路负载平衡,让ppp0和ppp1分担负载,那么我们象以下设置一下配置:
(1)启动路由,允许转发echo 1 > /proc/sys/net/ipv4/ip_forward
(2)进行伪装:
    iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
    iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp1 -j MASQUERADE
    iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o pppn -j MASQUERADE (如果还有多条的话)
(3)修改网关
    ip route replace default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1
        说明: 用replace的原因是当原来没有网关时会增加这个网关,当已经存在网关时,会修改原来的网关.
      用add 也可以,但是当已经存在默认网关时就要先delete再add.
  两个weight 1的意思是这两条链路的权值是相等的,两条链路承担的网络流量是相等的。
  有一点是需要说明的,因为路由表是基于缓存的,所以在实际中两条链路并不能100%的平分流量
      nexthop NEXTHOP 设置多路径路由的下一跳地址。NEXTHOP比较复杂,它的语法和以下高层参数类似:
          via ADDRESS--表示下一跳路由器;
          dev NAME--表示输出设备;
          weight NUMBER--在多路由路径中,这个元素的权重。表示相对带宽或者服务质量。
        如果你有多条线路,那么继续在其中增加 nexthop dev ppp2(ppp3......)即可
(4) 刷新路由
    ip route flush cache
6.即时检查数据的方向:
用tcpdump 分别监察两条线路,用下面命令:
tcpdump -i ppp0
tcpdump -i ppp1
tcpdump -i ppp2......n (有多条的话)
7.为了每次启动时自动启动,把命令写在启动脚本里面,在 /etc/rc.local 后面增加:
ifup ppp0
ifup ppp1
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp1 -j MASQUERADE
ip route replace default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1
ip route flush cache
结果:运行数月,效果稳定良好.
  上网会明显加快,为何呢,因为两条线路分摊了负载.例如,内网80人同时上网,
  如果网络是一条2M的adsl,那么整条线路都拥挤,挤得死死的,每人分得的带宽可能只有30k.大家都会明显感觉上网很慢.
  如果增加多一条线路,那么两条2M共同分摊拥挤程度,这样,可能每人分得的带宽就会变成60K,是原来的加倍,以这种形式来加快上网速度,增加了并发连接的个数.
   
不知道大家看了感觉怎么样 如果有帮助请回帖支持下````
公开自己手中的资源才会有更大的收获 希望大家多多支持 有好的观点不如拿到面上一起交流下.
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12974/showart_104612.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP