Microsoft Azure中Tomcat的水平扩展

时间:2011-01-13 22:26:26

标签: session tomcat azure replication cluster-computing

我正在努力工作一段时间,但仍然没有结论。

我想在Microsoft Azure中对Tomcat实例进行水平扩展(1,2,3,...一个服务的Tomcat实例)。我在Tomcat上阅读了很多关于会话复制,集群,...的文章。由于Azure不支持多播,因此没有简单的方法来集群Tomcat。粘性会话也没有选项,因为Azure会进行循环负载平衡。设置两个服务 - 一个使用Terracotta或Apache mod_jk - 另一个使用Tomcat实例对我来说似乎有点过分(如果可行)...

这甚至可能吗?

提前感谢您阅读和回答我的问题。每个评论/想法都受到高度赞赏。

3 个答案:

答案 0 :(得分:1)

您可以使用新的appFabric缓存服务,或者在Azure上使用Memcache的例子会有帮助吗?

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

答案 1 :(得分:1)

为什么你觉得运行2项服务有点矫枉过正?如果您没有扩展到 n Tomcat实例的问题,那么在我的书中添加另一个用于负载分配的服务是一个完全可以接受的解决方案。通过在至少2个实例上运行该服务,该服务本身符合Azure SLA要求:您的正常运行时间将与在Azure上获得的一样好,并且您可以避免SPoF(单点故障)。

您可以使用像赤土陶器这样的产品,但编写一个简单的套接字服务器以将HTTP会话路由回运行在Windows Azure中的特定实例也非常简单。您必须知道节点重新开始,但这是非常可行的。

请注意,memcached也需要额外的Azure服务(Web角色),appFabric缓存服务不需要(但也有与之相关的成本)。我不知道Tomcat,但是对于IIS,您可以轻松地将会话状态从内存中移动到持久性(SQL Azure或Azure存储)。需要注意的是:对于大容量站点,如果在那里存储会话信息,Azure存储的事务成本实际上可以成为部署的成本驱动因素。 SQL Azure可能是更具成本效益的解决方案,但另一方面可能不支持开箱即用的解决方案。

答案 2 :(得分:0)

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

修改

我发现使用Tomcat Solution Accelerator可以实现这一点。但请看免责声明:

  

提供此解决方案加速器   仅供参考和   微软或Infosys没有   保证,明示或暗示

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