我在探索Azure平台,但我遇到了一些问题。
实际上有些事我不明白..。
我理解网络角色和员工角色之间的区别。但是,如何具体地为Java应用程序创建web角色呢?
因为在eclipse中为azure开发java应用程序时,我们必须复制/粘贴一个java服务器(我学到了tomcat7) + jdk。我猜想它只是在模拟器中运行java应用程序。
但是,当将应用程序作为webrole.....Does部署到azure时,它只上传war包+ xml配置文件(cscfg等),还是也上载服务器和jdk?我试着用"Cloud“参数而不是”仿真器“参数来构建这个项目,它创建了一个150 it的巨大cspkg文件.我真的不能在每次更新应用程序的时候上传150‘t.
为什么不允许上传一个.war文件呢?如果我们必须上载服务器发行版,那么故障转移和会话复制是如何设置的?
我可能错过了什么..。
谢谢你的回答
编辑:
实际上,从我从web上看到的情况来看,java应用程序不是由Azure本地处理的,所以您必须提供自己的应用服务器(tomcat、glassfish等)。在包中,启动脚本将运行服务器与您的应用程序在里面。每次要重新部署新包时,都必须上载jre +服务器二进制文件+应用程序代码。
不支持会话复制或其他任何内容。如果希望在多个实例之间“共享”会话,则必须使用表存储服务来存储会话信息。
注意:使用eclipse,最新的插件允许您设置粘性会话,但我不知道更多关于它的信息。
因此,java应用程序不是作为webrole部署的,而是作为添加自己服务器的工作角色部署的。
Webroles只适用于.NET和PHP应用程序。
如果我错了就纠正我。
发布于 2012-02-05 23:05:57
你是正确的。通常,您也可以在web角色中运行java/Tomcat,但是在web角色中,IIS中必须至少有一个站点(不要将端口80绑定到此站点,因为IIS和Tomcat不能共享TCP端口)。
你应该试试Azure VM角色。在这个场景中,您使用所有系统需求(JRE、Tomcat、.)在本地创建虚拟macine。您将此虚拟映像上传到Azure,作为VM角色的模板。现在,您只能上传应用程序文件。
您还可以通过从Blob存储下载和解压缩JRE和Tomcat的starup任务来加快上载/部署过程。Azure Bootstrapper可以帮你。
发布于 2012-02-06 10:13:52
谢谢你们的回答,伙计们。
这带来了另一个问题:当部署java包的新版本时,“幕后”会发生什么?
让我们想象一下tomcat发布了一个主要的安全修补程序,您需要使用tomcat的新版本,要么将它嵌入cspkg (heavyyyyy),要么如您(David)所建议的那样,将其存储在blob (light!)中!当然,java代码几乎没有更新。在已经运行的实例上部署此包。
他们怎么了?他们会用新的包重新启动吗?它会产生新的实例并终止当前的运行吗?它是否在每个实例中杀死正在运行的应用程序服务器,并在新包中运行新的应用程序服务器?(非持久的)本地存储(如果用作廉价的缓存)会发生什么?在使用中的会话会发生什么(如果它们不是存储在blob中而是只存储在内存中)?
Azure内部是否有不同java服务器的基准/比较表?(内存占用、并发连接等)
我的问题可能看起来很奇怪,但我目前正在使用(并且愿意迁移到Azure),我唯一需要做的部署/更新应用程序的操作就是单击eclipse中的Deploy按钮。因此,目前的情况仍然相当混乱。但事实上,你必须上传你自己的jre和你自己的应用服务器,这增加了很多自由。它在IaaS中引入了一段PaaS。
https://stackoverflow.com/questions/9150617
复制相似问题