Экспорт (0) Печать
Развернуть все

Настройка облачной службы для Windows Azure

Обновлено: Декабрь 2013 г.

Чтобы настроить облачную службу, необходимо создать модель службы. Модель службы содержит параметры определения для облачной службы и значения конфигурации для этих параметров. Нельзя изменить определение облачной службы во время ее выполнения в Windows Azure. Изменить конфигурацию модели службы для выполняющейся облачной службы можно, но, чтобы изменить параметры определения модели службы, необходимо обновить облачную службу с помощью переключения виртуального IP-адреса (VIP).

noteПримечание
С помощью Visual Studio можно создавать и настраивать файлы модели службы. Дополнительные сведения см. в разделе Настройка приложения Windows Azure в Visual Studio.

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

Модель службы состоит из файлов ServiceDefinition.csdef и ServiceConfiguration.cscfg. Когда приложение для облачной службы готово к развертыванию, файл определения упаковывается в двоичные файлы роли. Файл ServiceConfiguration.cscfg развертывается с пакетом приложения и используется Windows Azure для определения способа запуска приложения.

Файл ServiceDefinition.csdef задает параметры, используемые Windows Azure для настройки облачной службы. Схема определения службы Windows Azure (файл CSDEF) предоставляет допустимый формат файла определения службы. В следующем примере показаны параметры, которые можно задать для веб-ролей и рабочих ролей.


<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole1" vmsize="Medium"> 
   <Sites>
      <Site name="Web">
         <Bindings>
            <Binding name="HttpIn" endpointName="HttpIn" />
         </Bindings>
      </Site>
   </Sites>
   <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InternalEndpoint name="InternalHttpIn" protocol="http" />
   </Endpoints>
   <Certificates> 
      <Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" />
   </Certificates>
   <Imports>
      <Import moduleName="Connect" />
      <Import moduleName="Diagnostics" />
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
   </Imports>
   <LocalResources>
      <LocalStorage name="localStoreOne" sizeInMB="10" />
      <LocalStorage name="localStoreTwo" sizeInMB="10" cleanOnRoleRecycle="false" />
   </LocalResources>
   <Startup>
      <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" />
   </Startup>
</WebRole>

<WorkerRole name="WorkerRole1">
   <ConfigurationSettings>
      <Setting name="DiagnosticsConnectionString" />
   </ConfigurationSettings>
   <Imports>
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
   </Imports>
   <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="tcp" port="10000" />
      <InternalEndpoint name="Endpoint2" protocol="tcp" />
   </Endpoints>
</WorkerRole>
</ServiceDefinition>

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

  • Sites — содержит определения для веб-сайтов или веб-приложений, размещаемых в IIS7.

  • InputEndpoints — содержит определения для конечных точек, используемых для связи с облачной службой.

  • InternalEndpoints — содержит определения для конечных точек, используемых экземплярами роли для общения друг с другом.

  • ConfigurationSettings — содержит определения параметров для функций определенной роли.

  • Certificates — содержит определения для сертификатов, которые необходимы для роли. В предыдущем примере кода показан сертификат, используемый для настройки Windows Azure Connect.

  • LocalResources — содержит определения для ресурсов локального хранилища. Ресурс локального хранилища представляет собой зарезервированный каталог в файловой системе виртуальной машины, на которой выполняется экземпляр роли.

  • Imports — содержит определения для импортированных модулей. В предыдущем примере кода показаны модули для подключения к удаленному рабочему столу и Windows Azure Connect.

  • Startup — содержит задачи, которые выполняются при запуске роли. Задачи определены в файле CMD или исполняемом файле.

Настройка параметров для облачной службы определяется значениями в файле ServiceConfiguration.cscfg. При этом в этом файле указывается количество экземпляров, которые необходимо развернуть для каждой роли. Значения для параметров конфигурации, заданных в файле определения службы, добавляются в файл конфигурации службы. Отпечатки для всех сертификатов управления, связанных с облачной службой, также добавляются к этому файлу. Схема конфигурации службы Windows Azure (файл CSCFG) предоставляет допустимый формат файла конфигурации службы.

Файл конфигурации службы не объединяется в пакет с приложением, а отправляется в Windows Azure как отдельный файл и используется для настройки облачной службы. Можно отправить новый файл конфигурации службы без повторного развертывания облачной службы. Значения конфигурации для облачной службы можно изменять во время выполнения службы. В следующем примере показаны параметры конфигурации, которые можно задать для веб-ролей и рабочих ролей.


<?xml version="1.0"?>
<ServiceConfiguration serviceName="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="WebRole1">
   <Instances count="2" />
   <ConfigurationSettings>
      <Setting name="SettingName" value="SettingValue" />
   </ConfigurationSettings>
    
   <Certificates>
      <Certificate name="CertificateName" thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" 
         thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
    </Certificates>  
</Role>
</ServiceConfiguration>

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

  • Instances — настраивает количество запускаемых экземпляров для роли. Для предотвращения недоступности облачной службы во время обновлений рекомендуется разворачивать более одного экземпляра ролей, которые должны быть доступны из сети. Делая это, вы придерживаетесь условий соглашения об уровне обслуживания среды Windows Azure (SLA), которое гарантирует 99,95 % внешней доступности для ролей, доступных из Интернета, если для службы развернуто два или более экземпляра роли. Дополнительные сведения о соглашении об уровне обслуживания Windows Azure см. в разделе Соглашения об уровнях обслуживания.



  • ConfigurationSettings — задает параметры для выполняемых экземпляров роли. Имена элементов Setting должны соответствовать определениям параметров в файле определения службы. В следующей таблице перечислены некоторые параметры, которые можно настроить.

     

    Имя параметра Значение параметра

    Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString

    DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey

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

    Microsoft.WindowsAzure.Plugins.Connect.ActivationToken

    TokenValue

    Этот параметр необходим для использования Windows Azure Connect. Дополнительные параметры используются для полной настройки Windows Azure Connect. Дополнительные сведения о завершении конфигурации см. в разделе Use Windows Azure Connect When Roles Are Joined to a Domain.

    Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled

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

  • Certificates — настройка сертификатов, используемых службой. В предыдущем примере кода показано, как определить сертификат для модуля RemoteAccess. Значением атрибута thumbprint необходимо задать отпечаток сертификата, который следует использовать.

    Отпечаток сертификата можно добавить в файл конфигурации с помощью текстового редактора; можно также добавить значение на вкладке Сертификаты страницы Свойства роли в Visual Studio.

Модель службы приложения с несколькими веб-сайтами в Windows Azure разрешает только одну точку входа для веб-роли. Это означает, что весь трафик идет через один IP-адрес. Можно настроить ваши веб-сайты для обеспечения совместного доступа через порт, настраивая заголовок узла, чтобы отправлять запрос в нужное место. Можно также настроить прослушивание веб-сайтами и веб-приложениями известных портов IP-адреса.

В следующем примере показана конфигурация для веб-роли с веб-сайтом и веб-приложением. Веб-сайт настроен как расположение входа по умолчанию для порта 80, а веб-приложения настроены для получения запросов из альтернативного заголовка узла, который называется «mail.mysite.cloudapp.net».

<WebRole>
  <ConfigurationSettings>
    <Setting name="DiagnosticsConnectionString" />
  </ConfigurationSettings>
    <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InputEndpoint name="Https" protocol="https" port="443" certificate="SSL"/>
      <InputEndpoint name="NetTcp" protocol="tcp" port="808" certificate="SSL"/>
    </Endpoints>
    <LocalResources>
       <LocalStorage name="Sites" cleanOnRoleRecycle="true" sizeInMB="100" />
    </LocalResources>
  <Site name="Mysite" packageDir="Sites\Mysite">
    <Bindings>
      <Binding name="http" endpointName="HttpIn" />
      <Binding name="https" endpointName="Https" />
      <Binding name="tcp" endpointName="NetTcp" />
    </Bindings>
  </Site>
  <Site name="MailSite" packageDir="MailSite">
    <Bindings>
      <Binding name="mail" endpointName="HttpIn" hostheader="mail.mysite.cloudapp.net" />
    </Bindings>
    <VirtualDirectory name="artifacts" />
    <VirtualApplication name="storageproxy" />
      <VirtualDirectory name="packages" packageDir="Sites\storageProxy\packages"/>
    </VirtualApplication>
  </Site>
</WebRole>

Можно обновить конфигурацию облачной службы, запущенной в Windows Azure, не выводя службу из сети. Чтобы изменить данные конфигурации, можно либо отправить новый файл конфигурации, либо изменить файл конфигурации на месте и применить его к работающей службе. В конфигурации службы можно сделать следующие изменения.

  • Изменение значений параметров конфигурации. Когда параметр конфигурации изменяется, экземпляр роли может выбрать, будет ли изменение применено при нахождении экземпляра в сети или экземпляр очистится и изменение будет применено, пока экземпляр будет вне сети.

  • Изменение топологии экземпляров ролей службы. Изменения топологии не влияют на выполняемые экземпляры, за исключением случаев удаления экземпляра. Все остальные экземпляры обычно не нуждаются в очистке, однако можно выбрать очистку экземпляров роли в ответ на изменение топологии.

  • Изменение отпечатка сертификата. Отпечаток сертификата можно обновить, только когда экземпляр роли находится вне сети. Если сертификат добавлен, удален или изменен, когда экземпляр роли находится в сети, Windows Azure надлежащим образом прекращает работу экземпляра для обновления сертификата и возвращает его в сеть по завершении обновления.

Управляемая библиотека Windows Azure содержит пространство имен Microsoft.WindowsAzure.ServiceRuntime, которое предоставляет классы для взаимодействия со средой Windows Azure из кода, выполняемого в экземпляре роли. Класс RoleEnvironment определяет следующие события, которые вызываются до и после изменения конфигурации.

  • Событие Changing происходит перед применением изменения конфигурации к указанному экземпляру роли. Это событие может быть отменено, при этом Windows Azure очищает роль. Когда роль очищается, изменение конфигурации применяется перед выведением роли обратно в сеть. Дополнительные сведения о событии Changing см. в разделе Использование события RoleEnvironment.Changing.

  • Событие Changed происходит после применения изменения конфигурации к указанному экземпляру роли. Дополнительные сведения о событии Changed см. в разделе Использование события RoleEnvironment.Changed.

noteПримечание
Поскольку изменения сертификата всегда отключают роль от сети, они не вызывают событий RoleEnvironment.Changing и RoleEnvironment.Changed.

См. также

Показ:
© 2014 Microsoft