免费注册 查看新帖 |

Chinaunix

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

linux 2.6下使用多网口的负载均衡问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-21 11:27 |显示全部楼层 |倒序浏览
设在双网关,由于是2。6的内核只好使用scope global
ip route replace default scope global nexthop
                         via $wan1_gw dev $wan1_dev weight $wan1_weight
                         via $wan2_gw dev $wan2_dev weight $wan2_weight

问题1
根据资料说,可以将线路质量好的设置高些,我个人理解设置weight 可以实现一定的负载,想问下weight计算方法,1是默认值,我现在wan1_weight=1,wan2_weight=5,一个连接的话,根据5和1的值,它选择路由的机会各是多少(前提当然是系统找不到相同的路由),

问题2
假设内网用户A访问,www.163.com,走的是wan1出去的,内网用户B也访问www.163.com,也一定跟A用户一样走wan1出吗,还是有其他的选择方法

问题3
我还使用了连接数进行了负载,想看看这样设置有问题没,是用iptables做的,
iptables -t mangle  -A POSTROUTING -o $wan1_dev -p tcp --tcp-flags SYN,ACK SYN,ACK
                    -m state --state NEW,RELATED,ESTABLISHED
                    -m connlimit --connlimit-above 2000
                    -j ROUTE --oif $wan2_dev  --continue

由于其他原因不能使用基于包的负载,希望大大们能指点一下,谢谢

论坛徽章:
0
2 [报告]
发表于 2006-12-21 11:47 |显示全部楼层
没说清楚“由于其他原因不能使用基于包的负载”,意思是说,包负载就不需要讨论了,我这里有限制不能做

论坛徽章:
0
3 [报告]
发表于 2006-12-21 14:07 |显示全部楼层
先吃饭下午再来看看

[ 本帖最后由 hehao109 于 2006-12-21 18:47 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-12-21 18:34 |显示全部楼层
还发现一个问题,再请教下,我做2网连接的本机发出的数据包就可以进行负载均衡,但如果是后面内网用户发的数据包就只会走固定一个外网口出去,除非有策略路由规规定某个用户走另一个外网口,是我的snat做的不对吗,补丁包也打了呀,
我做的snat是
iptables -t nat -A POSTROUTING -o  $wan1_dev  -j SNAT --to-source $wan1_ip
iptables -t nat -A POSTROUTING -o  $wan2_dev  -j SNAT --to-source $wan2_ip
iptables -t nat -A POSTROUTING -o  $lan1_dev  -j SNAT --to-source $lan2_ip

后来改为
iptables -t nat -A POSTROUTING -o $wan1_dev  -j MASQUERADE
iptables -t nat -A POSTROUTING -o $wan2_dev  -j MASQUERADE
iptables -t nat -A POSTROUTING -o $lan1_dev  -j MASQUERADE
还是不行呀,不知道是什么原因

论坛徽章:
0
5 [报告]
发表于 2006-12-21 18:36 |显示全部楼层
等了一天了也没有人来回答呀,大大们都过圣诞去了吗

论坛徽章:
0
6 [报告]
发表于 2006-12-22 12:15 |显示全部楼层
原帖由 hehao109 于 2006-12-21 18:34 发表
还发现一个问题,再请教下,我做2网连接的本机发出的数据包就可以进行负载均衡,但如果是后面内网用户发的数据包就只会走固定一个外网口出去,除非有策略路由规规定某个用户走另一个外网口,是我的snat做的不对吗 ...

没有人遇到这个问题吗

论坛徽章:
0
7 [报告]
发表于 2006-12-25 15:00 |显示全部楼层
不要沉下去了

论坛徽章:
0
8 [报告]
发表于 2006-12-28 18:05 |显示全部楼层
原帖由 depthblue_xsc 于 2006-12-27 12:04 发表
不要在nat 上过滤,要在forward进行

没有过滤呀,只做了SNAT

论坛徽章:
0
9 [报告]
发表于 2007-01-04 19:12 |显示全部楼层
原帖由 zhy0414 于 2007-1-3 18:30 发表



你的这条作用怎么样?


都能用多口出去了,根据权重,高的负载多些,但不是很准确,因为这是基于会话的负载,根据高级路由的说法,路由优先级选择,1看路由策略,2看缓存中是否有相同的,有的话就走上次的,3看谁的权重高,高的被选择的机会就大一些,但我现在只有本机的数据能这样走,而转发的就只会走固定的一个网关出去,不知道为什么

论坛徽章:
0
10 [报告]
发表于 2007-01-05 19:08 |显示全部楼层
原帖由 zhy0414 于 2007-1-4 21:28 发表
weight都设成1,隔一段时间清一下cache,试试

还是不行,是不是我/proc设置的不对,以下为我的设置
# 1. 打开包转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
# 2. 打开TCP SYN保护
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# 3. 打开保护IP欺骗,并打开源地址验证
for i in /proc/sys/net/ipv4/conf/*/accept_redirects
do
        echo "0" > \$i
done
# 4. 关闭源路由包
for i in /proc/sys/net/ipv4/conf/*/accept_source_route
do
        echo "0" > \$i
done
# 5. 改变tcp_keepalive的状态,可以减少验证遗失所花的时间
echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes
echo "15" > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time
# 6. 修改timewait sockets的数目,能抵御简单的DoS攻击
echo "18000" > /proc/sys/net/ipv4/tcp_max_tw_buckets
# 7. 修改不属于任何进程的TCP sockets最大数目,能抵御简单的Dos攻击
echo "2000" > /proc/sys/net/ipv4/tcp_max_orphans
# 8. 增加TCP连接等待队列
echo "4096" > /proc/sys/net/ipv4/tcp_max_syn_backlog
# 9. 允许自动调整接收窗口
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling
# 10.允许对时间戳标记
echo "1" > /proc/sys/net/ipv4/tcp_timestamps
# 11.反向路径过滤
for i in /proc/sys/net/ipv4/conf/*
do
                echo "1" > \$i/rp_filter
done
# 12.忽略伪造的ICMP应答
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# 13.忽略ECN
echo "0" > /proc/sys/net/ipv4/tcp_ecn
# 14.忽略ICMP广播
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# 15.缩短套接字关闭的时间
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout
# 16.不记录非法地址信息的ip包记录
for i in /proc/sys/net/ipv4/conf/*/log_martians
do
        echo "0" > \$i
done
#17.关闭ICMP重定向
for i in /proc/sys/net/ipv4/conf/*/send_redirects
do
        echo "0" > \$i
done
#18.打开ICMP安全重定向
for i in /proc/sys/net/ipv4/conf/*/secure_redirects
do
        echo "0" > \$i
done
#19. syn-ack握手状态重试次数,默认为5,改小可抵御一下syn flood攻击
echo "2" > /proc/sys/net/ipv4/tcp_synack_retries
#20 发起连接时,syn状态握手次数,默认为5
echo "2" > /proc/sys/net/ipv4/tcp_syn_retries
#21. 增大iptables状态跟踪表的大小
echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max
# 22.允许多个网络介质回应arp询问
for i in /proc/sys/net/ipv4/conf/*
do
        echo "1" > \$i/arp_filter
        echo "2" > \$i/arp_announce
        echo "1" > \$i/arp_ignore
done

# 23.打开快速 TIME-WAIT sockets 回收
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
# 24.允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
# 25.当守护进程太忙而不能接受新的连接,就象对方发送reset消息
echo "1" > /proc/sys/net/ipv4/tcp_abort_on_overflow
# 26.丢弃发往time-wait状态TCP套接字的RST 包
echo "1" > /proc/sys/net/ipv4/tcp_rfc1337
# 27.支持动态地址
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# 28.打开arp代理功能
for i in /proc/sys/net/ipv4/conf/*
do
        echo "1" > \$i/proxy_arp
done

# snat
iptables -t nat -A POSTROUTING -j MASQUERADE
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP