论坛风格切换切换到宽版
  • 1230阅读
  • 5回复

[问题求助]请教一个DNAT做负载均衡的问题 [复制链接]

上一主题 下一主题
离线neverbye.
 
发帖
2058
C币
-60785
威望
381
贡献值
1
银元
0
铜钱
4567
人人网人气币
0
只看楼主 正序阅读 使用道具 楼主  发表于: 2009-05-01
服务器上有两个服务, . 分别在6666和6667端口上listen, 但是由于某些原因, 公网.上的用户只能访问该服务器上的6666端口。 --------------彩票
想到iptables的DN.AT 功.能, 为了让客户端的请求大致均衡的分发到6666和6667端口,  想了一个觉得比较“傻瓜”的办法:服务器

i.ptables -t nat -A PREROUTING -p tcp  --spor.t 1024:32767 -d 192..168.80.100 --dport 6666  -j DNAT --to-destination 192.168.80.10.0:6666健康
iptables -t nat -A PRER.OUTING -p tcp  -.-sport 32768:65535 -d 19.2.168.80.100 --dport 6666  .-j DNAT --to-destination 192.168.80.100:6667健康

就是对源端口是1024-32767的, 都分发.到6666, 源端口是32768-65535的请求, 都分发到6667。  不过觉得不够完美, 毕竟这种.不能做到真正的负载均衡。 看了iptab.les的手册页--- 印刷
也了解DNAT能做某种类型的负载均衡“ DNAT target是非常有用的。比如,你的Web服务器在LAN内部,而且没有可在Internet上使用的真实IP地址,那就可.以使用这个 target让防火墙把所有到.它自己HTTP端口的包.转发给LAN内部真正的Web服务器。目的地址也可以是一个范围,这样的话,DNAT会为每一个流随机分配一个地.址。因此,我们.可以用这个target做某种类型地负载平衡。”  手册页原话。 .

所以我把之前的两台规则都干掉, 用下面这一条规则, 想让ip.ta.bles帮我实现真正的请求均衡的分发到6666和6667的服务:学习
iptables -t nat -A PR.EROUTING -p tcp -d 192.168.80.10.0 --dport 6666  -j DNAT --to-.destination 192.168.80.100:6666-6667              乙肝

不过这样, 发现.netstat的结果是:(        游戏          )
~$ netstat -na | .grep :6666 | .grep EST | wc -l.
258
~.$ netstat -na | grep :6667 | grep EST |. wc -l    外汇
0
请求根本没有分发到6667端口.上的服务哦。.

在这里请教各位大拿, 我这种需求: “想到iptables的DNAT 功能, .为了让客户端的请求大致均衡的..分发到6666和6667端口”, 能实现么?     健康
先谢过了

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线uranas.
发帖
1976
C币
3483
威望
369
贡献值
2
银元
-2
铜钱
4543
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13


QUOTE:直接公网的话可能不行,因为要涉及到 IP 地址转换,因此必须有 NAT 设备负责此功能
用法可以通过 iptables ...
platinum 发表于 2010-03-11 14:43



我刚刚看了, 公司机器上的内核还不支持statistic这个功能。  不过还是谢谢版主了~
继续用我1楼说的土办法了, 呵呵:)
离线lsp678.
发帖
2033
C币
-60763
威望
381
贡献值
1
银元
-3
铜钱
4575
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
直接公网的话可能不行,因为要涉及到 IP 地址转换,因此必须有 NAT 设备负责此功能
用法可以通过 iptables -m statistic -h 查看,也可以 google 一下,应该有例子
好像 iptables 1.4.0 以上都支持,内核要 2.6.21 以上

离线partner.
发帖
2025
C币
-60541
威望
379
贡献值
1
银元
-1
铜钱
4522
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13


QUOTE:很简单

你在服务器前面的 NAT 机器上用 statistic 模块的 nth 方式去做数据包轮询匹配
分别 DNAT 到后面 ...
platinum 发表于 2010-03-11 12:49



   谢谢版主:)
不过我服务器前端没有机器啊, 直接公网ip的。
你说的那个statistic模块, 是哪个版本的iptables才有?  可以给个实例么?

离线aeleven.
发帖
2203
C币
-262342
威望
435
贡献值
1
银元
-1
铜钱
5066
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
很简单

你在服务器前面的 NAT 机器上用 statistic 模块的 nth 方式去做数据包轮询匹配
分别 DNAT 到后面的 6666 和 6667 端口上即可

离线sk19880221.
发帖
2128
C币
-152225
威望
402
贡献值
1
银元
-3
铜钱
4827
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
木有顶, 自己沙个发先~~~

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个