2011-01-13 83 views
4

我在这个安静的环境中工作了一段时间,但仍然没有结论。Microsoft Azure中Tomcat的水平缩放

我想(为一个服务1,2,3,... Tomcat实例)做微软Azure Tomcat实例的水平缩放。我阅读了很多关于会话复制,集群......与Tomcat的文章。由于Azure不支持多播,所以没有简单的方法来对Tomcat进行群集。另外,粘性会话无法选择,因为Azure会循环负载均衡。设置两个服务 - 一个与兵马俑或Apache mod_jk的 - 和其他与Tomcat实例似乎矫枉过正,我(如果连可行)...

这甚至可能吗?

在此先感谢您阅读和回答我的问题。每个评论/想法都非常感谢。

回答

1

有,你可以使用新的AppFabric缓存服务,或有使用Azure上的Memcache,将这种帮助的例子吗?

http://code.msdn.microsoft.com/winazurememcached

+0

非常感谢 - 这看起来非常有趣,我会与http://code.google.com/p/memcached-session-manager/一起尝试。你有没有使用winazurememcached的经验? – Fabe 2011-01-13 23:23:29

+0

不怕,但我知道克里斯奥尔德,他在twitter @ cauld – Doobi 2011-01-14 00:01:26

+0

非常感谢你;) - 一个简短的问题:inordner保持所有实例是最新的,有必要强制tomcat将每一个更改的会话存储在数据库。这是可能的,而无需更改应用程序的代码? – Fabe 2011-01-14 09:26:37

0

我不认为你可以在Azure上运行Tomcat。即使您可以(使用虚拟机角色),在Amazon EC2上的Linux VM上运行它也可能更便宜。

编辑

我看这是可能使用Tomcat解决方案加速器。但看看免责声明:

此解决方案加速器提供 仅供参考和 微软或Infosys公司不作任何保证 ,任何明示或暗示

这是不支持的解决方案。我知道管理决策往往很难回答。但使用不支持的生产系统软件时,如果有更便宜的支持替代品,通常不是一个好主意。

1

为什么你觉得运行2个服务确实是矫枉过正?如果您有没有问题,有向外扩展至ň Tomcat实例,为负载分配添加其他服务是在我的书是完全可以接受的解决方案。通过运行在最小2个实例该服务,该服务本身符合Azure的SLA要求:因为它是会得到在Azure上您的正常运行将是一样好,而你避免SPOF(单点故障)。

你可以与像兵马俑产品去的,但它也非常简单写一个简单的socket服务器路由HTTP会话恢复在Windows Azure上运行的特定实例。你将不得不知道节点recyles,但这是相当可行的。

注意的memcached需要额外Azure的服务,以及(Web角色)时,AppFabric缓存服务不(但也有与它相关的成本)。我不知道Tomcat,但是对于IIS,您可以轻松地将会话状态从内存中移至持久(SQL Azure或Azure存储)。一个需要注意的:对于高容量的网站,交易成本Azure存储实际上可以成为您的部署成本驱动程序,如果您存储会话信息出现。 SQL Azure可能是更具成本效益的解决方案,但另一方面可能不支持您的解决方案的开箱即用。