有可能在一个windows azure小型计算实例中运行一堆Web应用程序吗?
我正在考虑使用Azure作为一个场所来放置一些开发和非生产准备的项目(Web应用程序)。有些实际上是蛾子,但我想在某个地方有一个活跃的实例。我不想为每个应用程序支付单独的计算时间,这只是90%的时间都在那里。
我正在考虑为这些项目获取共享主机帐户的另一个选项。
答案 0 :(得分:18)
是的,现在可以使用2010年底发布的最新Azure平台更新。
您必须在Azure项目的服务定义文件中进行适当的配置更改。以下是同一域中多个站点的示例。注册站点使用https端点(您还必须配置您的证书),其余的使用http。公共站点未指定主机标头,并将捕获未指定明确的任何内容。当您有一个需要处理多个子域的应用程序(如shopify)时,这非常棒。为了完成这项工作,你需要有一个允许使用通配符cnames的dns(GoDaddy dns不支持)。显然,您还需要一个cname记录,指向每个其他子域的azure。此示例中需要注意的另一件事是应用程序的physicalDirectory是相对于Azure项目的。希望这有帮助!
以下是可能有用的链接:http://msdn.microsoft.com/en-us/library/gg433110.aspx
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="SampleAzureProject" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="RegisterSite_WebRole">
<Sites>
<Site name="RegisterSite" physicalDirectory="..\RegisterSite">
<Bindings>
<Binding name="RegisterBinding" endpointName="Endpoint1" hostHeader="register.sample.com" />
</Bindings>
</Site>
<Site name="PublicSite" physicalDirectory="..\PublicSite">
<Bindings>
<Binding name="PublicBinding" endpointName="Endpoint2" hostHeader="" />
</Bindings>
</Site>
<Site name="ManageSite" physicalDirectory="..\ManageSite">
<Bindings>
<Binding name="ManageBinding" endpointName="Endpoint2" hostHeader="manage.sample.com" />
</Bindings>
</Site>
<Site name="MarketingSite" physicalDirectory="..\MarketingSite">
<Bindings>
<Binding name="MarketingBinding" endpointName="Endpoint2" hostHeader="www.sample.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="https" port="443" certificate="SampleReg" />
<InputEndpoint name="Endpoint2" protocol="http" port="80" />
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
<Certificates>
<Certificate name="SampleReg" storeLocation="LocalMachine" storeName="My" />
</Certificates>
</WebRole>
</ServiceDefinition>
答案 1 :(得分:3)
这取决于Windows Azure实例的含义。
单个Azure帐户可以容纳多个服务和部署。部署(在撰写本文时)可以包含多个工作者和Web角色(主要是项目)。
可以在多个部署实例中部署单个Web角色。
考虑到所有这些,您可以轻松地在单个Windows Azure帐户或甚至单个部署中托管多个Web应用程序。
如果您有兴趣最大限度地降低成本并在单个Web角色实例下保留多个测试Web应用程序,则会变得棘手 - 您需要将它们组合到一个项目中并立即部署。
注意:最后一个场景可能会很快看到大幅改进,因此Windows Azure是一个相当安全的选择。
答案 2 :(得分:3)
Azure处于当前状态(2010年8月),每个VM实例仅运行一个应用程序(“服务”,“角色”)。
所以现在问题的简单答案是否定的。
现在,鉴于该平台的所有功能,您可以想出一些创造性的方法来提供这种沙箱。使用Service Management API,您可以让部署位于Azure存储中,并在请求时将角色置于联机状态,然后在不再需要时将其关闭(“删除部署”)。由于结构使VM在线,因此部署会有一些延迟..但根据用例,这可能会为您带来一些重大节省。
答案 3 :(得分:3)
在一个Azure实例中运行多个Web应用程序的唯一方法是将多个应用程序组合到一个WebRole项目中。 Azure每个Web角色实例需要一个Web应用程序。
如果您的网络应用程序相当简单或只是aspx生成的html页面,这可能不会太难 - 将每个应用程序放在其自己的URL子目录中,以使页面名称与其他应用程序分开。由于同一应用程序中的页面之间的链接通常与主目录相关,因此不应过多地扰乱链接。您可以使用网址路径访问每个“子应用”:http://mydomain.com/app1/default.html
,http://mydomain.com/app2/...
等。
随着每个网络应用程序的复杂性增加,您会看到收益递减。将多个复杂的应用程序变成一个普通的主应用程序会更加困难。
但是对于实验和概念证明类型的工作,一旦你启动主应用程序模式,它应该相当容易,以便将来继续工作。您可以将Azure Web角色实例用作工作组合,而不是用于最新实验的一次性暂存器。
答案 4 :(得分:1)
基本上,每个角色只限一个应用程序。
不确定这是否会发生变化,因为Windows Azure以这种方式托管背后有原因。
通过阅读您的问题,听起来云可能不适合您。特别是如果你有“90%”没有使用的东西。这是一个浪费的处理时间,让一个角色闲置,同时支付$$。
我的建议是使用共享托管或其他东西,直到网站需要更高的正常运行时间,可扩展性和其他类似的云功能。
答案 5 :(得分:1)
Azure可能不是这个用例的最佳选择 - 一个VM只允许一个应用程序,所有其他选项实现起来有点复杂(比如在一个Web角色中有多个应用程序或按需部署和拆除 - 同时请注意Azure为时钟小时收费,所以我不确定如果你打开一个实例,将其关闭然后在一小时内再次启动会发生什么。
另一个云提供商,如rackspace或亚马逊可能会更好,您可以像在普通服务器上一样创建Windows VM并在IIS上托管您的应用程序。在这种情况下,唯一的优势是更容易配置该服务器而无需基础架构管理(尽管与Azure不同,您仍然需要管理操作系统和其他依赖项)。