免费注册 查看新帖 |

Chinaunix

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

请教我的服务能否通过LVS实现负载均衡集群? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-24 15:48 |显示全部楼层 |倒序浏览
服务介绍:
有个固定的TCP端口用于监听,当客户连上来之后会协商一个UDP端口用于通信;于是服务器开启协商的UDP端口与客户端通信。
(请别问我为什么服务设计成这个样子,这是没办法的事情,受到通信协议的制约。)
(请注意:该UDP端口是协商出来的,是动态变化的)

该服务与传统的服务(如WEB之类)有一定的区别,即TCP链接与UDP套接字对之间有耦合关系。

翻看了论坛内的帖子,似乎大多数的集群都是基于IPVS的。 而IPVS在我这种情况下肯定是不适用的,因为无法保证TCP报文与对应的
UDP报文会被schedule到相同的real server 上去。

请问各位师兄,有否碰到过类似情况? 有没有解决办法呢?
我发现有个叫KTCPVS(基于layer-7的)的东东似乎可以用于我这种情况,但是这个KTCPVS好像还没有成熟,是吧?

论坛徽章:
0
2 [报告]
发表于 2008-10-24 16:03 |显示全部楼层

回复 #2 jerrywjl 的帖子

总要有点理论依据了之后才能实践啊,要不会很盲目的啊。

论坛徽章:
0
3 [报告]
发表于 2008-10-24 17:02 |显示全部楼层
自己顶一下!

各位楼上的,楼下的,路过的大哥,给点意见吧。

论坛徽章:
0
4 [报告]
发表于 2008-10-25 08:50 |显示全部楼层
原帖由 gl00ad 于 2008-10-25 07:16 发表
有个固定的TCP端口用于监听,当客户连上来之后会协商一个UDP端口用于通信;于是服务器开启协商的UDP端口与客户端通信。


LVS schedule -- 固定的TCP端口(NOT UDP)-- to real server
当客户连上来之后 -- r ...



Yes. My question is how to schedule the subsequent UDP packets to the same real server as the corresponding TCP packets?

论坛徽章:
0
5 [报告]
发表于 2008-10-25 12:23 |显示全部楼层
原帖由 gl00ad 于 2008-10-25 09:31 发表
I already told you, schedule 固定的TCP端口 to one of the real server, which one does not matter, as it will change.  

your own application 协商一个UDP端口用于通信 on the real server, that mean ...



非常感谢gl00ad的帮助。

是的根据客户IP地址来将相同的源地址的IP报文schedule到同一个real server上去,是一个不错的注意。
不过(怪我最开始没说清楚),我的这个服务基本上只有一个客户IP地址,非常特殊。
实际上是这样,我要做两个负载均衡集群。一个做客户端,另一个做服务器端。所以客户端基本上就只有一个IP地址。
不知道我表达清楚没?

论坛徽章:
0
6 [报告]
发表于 2008-10-25 12:44 |显示全部楼层
原帖由 jerrywjl 于 2008-10-25 12:33 发表


那你去看Red Hat的lvs 管理手册好了。http://www.redhat.com.cn/docs --> RHCS/GFS

我正是因为做过并看过才告诉你。不过你那个服务,只有你自己试了。你不试怎么知道?!



关于LVS的配置等我都看过的。
问题的关键不在于怎么配置,而是目前的LVS解决方案是否在理论上能满足我的需求?
我目前需要的应该是一种layer-7的schedule算法,并且能够插入我自己的用户数据解析代码来实现特定
用户数据流之间的schedule绑定。

论坛徽章:
0
7 [报告]
发表于 2008-10-25 16:17 |显示全部楼层
原帖由 jerrywjl 于 2008-10-25 14:38 发表



行不行的问题,我觉得还是要靠benchmark来以事实说明;用与不用LVS,毕竟要经过不断调试才能真正说明问题。
既然已经是熟手,我想做这样的工作并不需要花多少时间和精力。
你说对了,除了IPVS方面的其他 ...



Anyway, thank you very much.

论坛徽章:
0
8 [报告]
发表于 2008-10-27 12:19 |显示全部楼层

回复 #13 gl00ad 的帖子

那我来详细解释一下吧:

|--------------|                            |-------------|
|Network A      |                            |Network B     |
|                    |                           |                   |
|                    |                           |                   |
|                    |                           |                   |
|                    |                           |                   |
|  |---------|   |    |-----------|    |  |----------| |
|  |             |  |     |               |    |  |              | |
|  |Server A |------|My Server  |-----|Server B   | |
|  |             |  |     |               |    |  |              | |
|  |---------|   |    |-----------|    |  |----------| |
|                    |                           |                   |
|                    |                           |                   |
|                    |                           |                   |
|--------------|                            |-------------|

拓扑图上
首先,我这个服务器是一个网关,是两个网络A和B之间通信的网关。 所有A网络的用户必须通过Server A 和Network B通信,所有B网络的用户也必须通过Server B 和Network B通信。 因此,对我的服务器My Server 来说性能是必须要考虑的因素,因此我希望做个集群来做load balance。
Server A 与My Server 之间 以及 Server B 与 My Server 之间都是通过TCP 固定端口来协商UDP端口号来进行数据收发。
并且,对于不同的会话,有可能协商出许多的UDP端口号来进行通信。
这样一来对My Server 而言,客户其实就是Server A和Server B.

[ 本帖最后由 miaoer 于 2008-10-27 12:23 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-10-27 13:13 |显示全部楼层

回复 #15 Au_Hank 的帖子

HA 也需要 LOAD BALANCE 也是需要的,因为在我的服务器上除了做数据的通信中转以外,还要做大量数据的编码/解码,计算量是很大的,如果不做LOAD BALANCE;以后如果用户多了以后,超负载后就无法扩容啊。

论坛徽章:
0
10 [报告]
发表于 2008-10-28 21:34 |显示全部楼层

回复 #18 gl00ad 的帖子

我目前碰到的关键问题是:
如何将协商UDP端口的TCP链接与协商出来的UDP通信数据 schedule到相同的RS上去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP