Session Microsoft Azure中Tomcat的水平扩展

Session Microsoft Azure中Tomcat的水平扩展,session,tomcat,azure,replication,cluster-computing,Session,Tomcat,Azure,Replication,Cluster Computing,我正在安静地研究这个问题,但仍然没有结论 我想对Microsoft Azure中的Tomcat实例进行水平扩展(1,2,3,…一个服务的Tomcat实例)。我读了很多关于会话复制、集群,。。。和雄猫。因为Azure不支持多播,所以没有简单的方法对Tomcat进行集群。另外,粘滞会话也没有选择,因为Azure进行循环负载平衡。设置两个服务——一个使用Terracotta或Apache mod_jk,另一个使用Tomcat实例——对我来说似乎有些过分(如果可行的话) 这可能吗 提前感谢您阅读并回答我

我正在安静地研究这个问题,但仍然没有结论

我想对Microsoft Azure中的Tomcat实例进行水平扩展(1,2,3,…一个服务的Tomcat实例)。我读了很多关于会话复制、集群,。。。和雄猫。因为Azure不支持多播,所以没有简单的方法对Tomcat进行集群。另外,粘滞会话也没有选择,因为Azure进行循环负载平衡。设置两个服务——一个使用Terracotta或Apache mod_jk,另一个使用Tomcat实例——对我来说似乎有些过分(如果可行的话)

这可能吗


提前感谢您阅读并回答我的问题。非常感谢每一条评论/想法。

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


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

编辑

我发现使用Tomcat解决方案加速器可以实现这一点。但请看免责声明:

此解决方案提供了加速器 仅供参考,且 微软或Infosys不承认 明示或暗示的保证


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

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

您可以使用像terracotta这样的产品,但编写一个简单的套接字服务器将HTTP会话路由回运行在WindowsAzure中的特定实例也是非常简单的。您必须知道node recyles,但这是完全可行的


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

您可以使用Tomcat解决方案加速器运行Tomcat。Azure已设置—管理决策—不是我的—但PaAS有它的优势;)Tomcat Solution Accelerator由Domino Pizza使用,而且Tomcat不做任何保证,并且被广泛使用;)非常感谢-这看起来很有趣,我将与您一起尝试。你有使用winazurememcached的经验吗?恐怕没有,但我知道Chris Auld有,他在twitter上@cauldThank;)-一个简短的问题:为了使所有实例保持最新,有必要强制tomcat在数据库中存储每个更改的会话。在不更改应用程序代码的情况下,这是可能的吗?我不是java专家,但看起来您可以将tomcat配置为使用jdbc作为会话存储:没错。是我干的。但是Tomcat只会在Tomcat实例不知道的情况下提取会话,但在应用程序更改会话内容后不会频繁更新会话。你是对的,这种观点是可以接受的,但我喜欢避免一点失败。你认为terracottA或Apache mod_jk大麻可以在azure中使用吗?更新了我的答案。我既没有兵马俑也没有阿帕奇的经验,所以在这方面我帮不了你。