エクスポート (0) 印刷
すべて展開

Azure のクラウド サービスのセットアップ

更新日: 2014年10月

クラウド サービスをセットアップするには、サービス モデルを作成する必要があります。サービス モデルは、クラウド サービスの定義設定、および、定義設定の構成値を規定します。Azure で実行中に、クラウド サービスの定義を変更することはできません。実行中のクラウド サービスのサービス モデルの構成を変更することはできますが、サービス モデルの定義設定を変更するには、VIP スワップを使用して、クラウド サービスをアップグレードする必要があります。

noteメモ
Visual Studio を使用してサービス モデル ファイルの作成と構成ができます。詳細については、「Configuring the Azure Application with Visual Studio (Visual Studio を使用して Azure アプリケーションを構成する)」を参照してください。

次の情報を参照して、クラウド サービスのサービス モデルの作成、構成、および変更を開始できます。

サービス モデルは、ServiceDefinition.csdef ファイルと ServiceConfiguration.cscfg ファイルで構成されます。定義ファイルは、クラウド サービスのアプリケーションをデプロイ用に準備するときに、ロールのバイナリと同じパッケージに収められます。ServiceConfiguration.cscfg ファイルは、アプリケーション パッケージと共にデプロイされ、アプリケーションの実行方法を決定するために Azure によって使用されます。

ServiceDefinition.csdef ファイルは、Azure でクラウド サービスを構成するときに使用される設定を指定します。Azure サービスの定義スキーマ (.csdef ファイル)は、サービス定義ファイルで使用できる形式を規定します。Web ロールとワーカー ロールで定義できる設定の例を次に示します。


<?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 でホストされている Web サイトまたはアプリケーションを定義します。

  • InputEndpoints – クラウド サービスにアクセスするときに使用するエンドポイントを定義します。

  • InternalEndpoints – ロール インスタンスが相互に通信するときに使用するエンドポイントを定義します。

  • ConfigurationSettings – 特定のロールの設定を定義します。

  • Certificates – ロールに必要な証明書を定義します。上記のコード例では、Azure Connect の構成に使用する証明書が示されています。

  • LocalResources – ローカル ストレージ リソースを定義します。ローカル ストレージ リソースとは、ロールのインスタンスが実行されている仮想マシンのファイル システム上の予約されたディレクトリです。

  • Imports – インポートしたモジュールを定義します。上記のコード例では、リモート デスクトップ接続および Azure Connect のモジュールが示されています。

  • Startup – ロールの開始時に実行されるタスクです。タスクは、.cmd ファイルまたは実行可能ファイルで定義されます。

クラウド サービスの設定の構成は、ServiceConfiguration.cscfg ファイルの値によって決まります。このファイルでロールごとにデプロイするインスタンスの数を指定します。サービス定義ファイルで定義した構成設定の値は、サービス構成ファイルに追加されます。クラウド サービスに関連付けられている管理証明書のサムプリントも、ファイルに追加されます。Azure サービスの構成スキーマ (.cscfg ファイル)は、サービス構成ファイルで使用できる形式を規定します。

サービス構成ファイルはアプリケーションと同じパッケージには格納されず、Azure に別個のファイルとしてアップロードされて、クラウド サービスを構成するときに使用されます。新しいサービス構成ファイルは、クラウド サービスを再デプロイしなくてもアップロードできます。クラウド サービスの構成値は、クラウド サービスの実行中に変更できます。Web ロールとワーカー ロールで定義できる構成設定の例を次に示します。


<?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 – ロールの実行中のインスタンスの数を構成します。アップグレード時にクラウド サービスが利用できなくなる可能性をなくすために、Web に直接接続されたロールはインスタンスを複数デプロイすることをお勧めします。これにより、サービスのロール インスタンスが複数デプロイされているときに、インターネットに直接接続されたロールの 99.95% の外部接続を保証するという Azure コンピューティング サービス レベル契約 (SLA) のガイドラインに従うことになります。Azure サービス レベル契約の詳細については、「サービス レベル契約」を参照してください。



  • ConfigurationSettings – ロールの実行中インスタンスの設定を構成します。Setting 要素の name はサービス定義ファイルの設定定義と一致する必要があります。

  • Certificates – サービスで使用する証明書を構成します。上記のコード例では、RemoteAccess モジュールの証明書を定義する方法が示されています。thumbprint 属性の値は、使用する証明書のサムプリントに設定する必要があります。

    証明書のサムプリントを構成ファイルに追加するには、テキスト エディターを使用するか、または、Visual Studio を使ってロールの [プロパティ] ページの [証明書] タブで値を追加します。

Azure の複数 Web アプリケーション サービス モデルでは、Web ロールにエントリ ポイントは 1 つだけです。これは、すべてのトラフィックが 1 つの IP アドレスを経由することを意味します。正しい場所に要求を送るようにホスト ヘッダーを構成することで、ポートを共有する Web サイトを構成できます。また、Web サイトと Web アプリケーションが IP アドレスで既知のポートをリッスンするように構成することもできます。

次の例では、Web サイトおよび Web アプリケーションを持つ Web ロールの構成を示します。Web サイトはポート 80 の既定のエントリ場所として構成され、Web アプリケーションは 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>

Azure で実行中に、クラウド サービスをオフラインにしなくても、クラウド サービスの構成を更新できます。構成情報を変更するには、新しい構成ファイルをアップロードするか、構成ファイルをその場で編集して実行中のサービスに適用します。サービスの構成に次の変更を加えることができます。

  • 構成設定の値の変更。 構成設定を変更する場合は、インスタンスがオンラインの間に変更を適用するか、それともインスタンスを適切に再利用して、インスタンスがオフラインの間に変更を適用するかを、ロール インスタンスが選択できます。

  • ロール インスタンスのサービス トポロジの変更。 トポロジの変更は、インスタンスが削除中の場合を除いて、実行中のインスタンスに影響しません。残りのすべてのインスタンスは通常、再利用する必要はありません。ただしトポロジの変更に応じてロール インスタンスを再利用することもできます。

  • 証明書のサムプリントの変更。 証明書を更新できるのは、ロール インスタンスがオフラインのときだけです。ロール インスタンスがオンラインの間に証明書が追加、削除または変更されると、Azure はインスタンスを正常にオフラインにして証明書を更新し、変更の完了後、オンラインに戻します。

Azure マネージ ライブラリには、Microsoft.WindowsAzure.ServiceRuntime 名前空間が含まれています。この名前空間には、ロールのインスタンスで実行されているコードから Azure 環境とやり取りするクラスが用意されています。RoleEnvironment クラスは、構成の変更前後に発生する次のイベントを定義します。

  • Changing イベントは、指定されたロール インスタンスに構成変更が適用される前に発生します。このイベントは取り消すことができます。その場合、Azure はロールを再利用します。ロールを再利用するときは、ロールを再度オンラインに戻す前に構成変更が適用されます。Changing イベントの使用方法の詳細については、「RoleEnvironment.Changing イベントを使用する」を参照してください。

  • Changed イベントは、指定されたロール インスタンスに構成変更が適用された後に発生します。Changed イベントの使用方法の詳細については、「RoleEnvironment.Changed イベントを使用する」を参照してください。

noteメモ
証明書を変更した場合は、必ずロール インスタンスがオフラインになるため、RoleEnvironment.Changing または RoleEnvironment.Changed イベントは発生しません。

関連項目

表示:
© 2014 Microsoft