Можете ли вы развернуть несколько веб-приложений на одном экземпляре Windows Azure?

19

Возможно ли иметь несколько веб-приложений, запущенных в одном маленьком экземпляре sql azure windows?

Я рассматриваю использование Azure как место для размещения кучи проектов (веб-приложений), которые находятся в dev и непроизводственных. Некоторые из них на самом деле мотыльки, но я хотел бы иметь их активный экземпляр. Я не хочу платить за отдельные расчетные часы за каждое приложение, которое просто сидит там 90% времени.

Другой вариант, который я рассматриваю, чтобы получить общую учетную запись хостинга для этих проектов.

    
задан Adam Bell 22.08.2010 в 19:33
источник

6 ответов

18

Да, теперь это возможно с последними обновлениями платформы Azure, выпущенными в конце 2010 года.

Вы должны внести соответствующие изменения в конфигурационный файл вашего приложения Azure Project. Ниже приведен пример нескольких сайтов в одном домене. На сайте Register используется конечная точка https (вы также должны настроить свой сертификат), а остальные - с помощью http. Публичный сайт не определяет заголовок узла и не будет обнаруживать что-либо, не указанное явно. Это здорово, когда у вас есть одно приложение, которое должно обрабатывать несколько поддоменов (например, shopify). Для выполнения этой работы вам нужно иметь dns, который позволяет создавать подстановочные cnames (GoDaddy dns). Очевидно, вам также нужна запись cname, указывающая на лазурь для каждого из других поддоменов. Еще одно замечание в этом примере состоит в том, что физический каталог для приложений относится к проекту Azure. Надеюсь, это поможет!

Вот ссылка, которая может помочь: Ссылка

    <?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>
    
ответ дан Randy Staats 01.03.2011 в 18:09
3

Это зависит от того, что вы подразумеваете под экземпляром Windows Azure.

Одна учетная запись Azure может содержать несколько сервисов и развертываний. Развертывание (на момент написания) может содержать несколько рабочих и веб-ролей (по существу, проекты).

Одна веб-роль может быть развернута в нескольких экземплярах развертывания.

Учитывая все это, вы можете легко разместить несколько веб-приложений на одной учетной записи Windows Azure или даже на одном развертывании .

Если вы заинтересованы в минимизации затрат и хранении нескольких тестовых веб-приложений под одним экземпляром веб-роли, это становится сложным - вам нужно объединить их в один проект и развернуть сразу.

Примечание: последний сценарий может вскоре увидеть резкие улучшения, поэтому Windows Azure - довольно безопасная ставка.

    
ответ дан Rinat Abdullin 22.08.2010 в 20:05
  • Я имел в виду малый экземпляр экземпляра windows azure. обновленный –  Adam Bell 22.08.2010 в 21:28
  • Таким образом, в принципе нет, если я не поставил их в одном решении. Однако вы ожидаете, что это изменится в будущем. –  Adam Bell 22.08.2010 в 21:29
3

Azure в своем текущем состоянии (Aug 2010) будет запускать только одно приложение («service», «role») на экземпляр VM.

Итак, простой ответ на ваш вопрос - нет, в настоящее время.

Теперь, учитывая все возможности платформы, вы можете придумать некоторые творческие способы предоставления такого рода песочницы. С помощью API управления службами вы можете установить развертывание в хранилище Azure и включить роли в момент их запроса, а затем отключить их («удалить развертывание»), когда они больше не нужны. Будет некоторое отставание от развертывания, поскольку ткань приносит виртуальные машины онлайн .. но в зависимости от варианта использования, это может дать вам некоторую значительную экономию.

    
ответ дан Taylor Bird 23.08.2010 в 00:06
  • +1. Если вы хотите иметь несколько развертываний без воздействия $$$, проще всего настроить свои сервисные конфигурации (имя, URL, аффинити, сертификаты и т. Д.), Но без какого-либо развернутого кода. У ваших приложений, работающих на плате, в блочном хранилище, с именами, зависящими от версии (может быть, контейнер для каждого приложения?). Затем используйте некоторые простые сценарии PowerShell (с помощью команд Azure) для развертывания приложения, когда это необходимо, и сбрасывайте его, когда это будет сделано. В среднем, может быть, 15 минут для развертывания, а тем более для срыва и удаления. –  David Makogon 23.08.2010 в 16:24
3

Единственный способ иметь несколько веб-приложений, запущенных в одном экземпляре Azure, - объединить несколько приложений в один проект WebRole. Azure требует одного веб-приложения для каждого экземпляра веб-роли.

Это может быть не слишком сложно, если ваши веб-приложения достаточно просты или просто сгенерированы hpml-страницами aspx - поместите каждое приложение в свой собственный подкаталог URL, чтобы сохранить названия страниц отдельно от других приложений. Поскольку ссылки между страницами внутри одного и того же приложения обычно относятся к домашнему каталогу, это не должно сильно расстраивать ваши ссылки. Вы можете получить доступ к каждому «субаппи» с помощью URL-адресов: http://mydomain.com/app1/default.html , http://mydomain.com/app2/... и т. Д.

Вы увидите уменьшение прибыли, поскольку сложность каждого веб-приложения увеличивается. Сложнее будет использовать несколько сложных приложений в общем главном приложении.

Но для экспериментов и доказательства работы типа понятия, как только вы запустите шаблон главного приложения, довольно легко сохранить его для будущей работы. Вы использовали бы экземпляр веб-роли Azure в качестве портфеля работ вместо одноразовой блокнота для любого последнего эксперимента.

    
ответ дан dthorpe 25.08.2010 в 18:27
  • Любовь к этому портфолио концепции работы - имеет смысл –  Adam Bell 25.08.2010 в 19:59
1

В основном вы ограничены одним приложением на роль.

Не уверен, что это изменится, так как есть причины, стоящие за ходом Windows Azure таким образом.

Из-за того, что вы читаете свой вопрос, похоже, что облако может быть не идеальным для вас в это время. Особенно, если у вас есть то, что «90%» не используется. Это очень много времени, затрачиваемого на то, что роль сидит без дела, а платит $$.

Моим советом было бы использовать общий хостинг или что-то еще, пока сайт не потребует более высокой производительности, масштабируемости и других облачных функций такого типа.

    
ответ дан Adron 25.08.2010 в 17:50
1

Azure может быть не лучшим для этого случая использования - одна виртуальная машина позволяет только одному приложению, а все другие варианты несколько сложны для реализации (например, наличие нескольких приложений в одной веб-роли или по требованию, развертывание и срыв - также обратите внимание, что Лазурные заряды для часового часа, поэтому я не уверен, что произойдет, если вы принесете экземпляр, снимите его, а затем поднимите его в течение часа).

Другим облачным провайдером, например, rackspace или Amazon, может быть лучше, вы можете создавать виртуальные машины Windows и размещать свои приложения в IIS, как на обычном сервере. Единственным преимуществом в этом случае было бы упрощение подготовки этого сервера и отсутствие управления инфраструктурой (вам все равно придется управлять ОС и другими зависимостями, хотя, в отличие от Azure).     

ответ дан Roopesh Shenoy 25.08.2010 в 17:57