9

Azure に移行する公開 Web アプリケーションが 3 つあります。すべてのサイトがポート 80 を使用します。

オプション

私が理解している限り、Web ロールを使用する場合、3 つの異なるオプションがあります。

1. 単一のクラウド サービス内の 1 つの Web ロールでホストされている 3 つのサイトすべて:

  • HTTP アクセスは、hostHeader で構成できます。ServiceDefinition.csdef
  • これが一番安い
  • すべてのプロジェクトを同時に公開する必要がある
  • サイトを個別にスケーリングすることはできず、全体としてのみスケーリングできます
  • Visual Studio の 1 つのクラウド サービス プロジェクト

2. 単一のクラウド サービス内の個別の Web ロールでホストされる各サイト:

  • HTTP アクセスは、hostHeader で構成できます。ServiceDefinition.csdef
  • 各サイトには独自のインスタンスがあります
  • すべてのプロジェクトを同時に公開する必要がある
  • サイトは個別にスケーリングできます
  • Visual Studio の 1 つのクラウド サービス プロジェクト

3. 個別のクラウド サービスの Web ロールでホストされている各サイト:

  • 各サイトには独自の cloudapp.net DNS と IP があります
  • 各サイトには独自のインスタンスがあります
  • サイトは個別に公開できます
  • サイトは個別にスケーリングできます
  • Visual Studio の複数のクラウド サービス プロジェクト

私が見逃している重要なものは他にありますか?

考えられる解決策

オプション 1 と 2 の組み合わせ。

1 つのクラウド サービスですべてをホストする:すべてのプロジェクトで一貫して更新する必要がある共通のライブラリ プロジェクトをすべて参照しているため、それらをすべて一緒に公開しても問題ありません。

1 つの Web ロールで 2 つのサイトをホストする:一緒にうまくスケーリングできます。

独自の Web ロールで 3 番目のサイトをホストするには、大量のピーク需要があるため、独自のスケーリングが必要になります。

ServiceDefinition.csdef:

<ServiceDefinition name="WebTestCloudService.Test" xmlns="..." schemaVersion="2012-10.1.8">
  <WebRole name="AzureWebTest1" vmsize="Small">
    <Sites>
      <Site name="AzureWebTest1">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="test1.mydomain.com" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
  </WebRole>
  <WebRole name="AzureWebTest2" vmsize="Small">
    <Sites>
      <Site name="AzureWebTest2">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="test2.mydomain.com" />
        </Bindings>
      </Site>
      <Site name="AzureWebTest3" physicalDirectory="..AzureWebTest4">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="test3.mydomain.com" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
  </WebRole>
</ServiceDefinition>

私が正しい軌道に乗っていることを確認してください。任意の入力をいただければ幸いです。

4

1 に答える 1

4

あなたは正しい軌道に乗っているようですね。いくつかの明確化のポイント:

  • 同じ展開内の別の Web ロールで実行するサイトを定義する場合、Web ロールごとに別のポート番号が必要になることに注意してください。すべてのサイトをポート 80 にする場合は、オプション #1 または #3 が必要です。
  • 1 つの展開内で、すべてのロール コードを一度に公開する必要がありますが、すべてのロールではなく特定のロールを更新することを選択できます。
  • また、Web サイトを BLOB に圧縮して保存し、必要に応じて再デプロイせずに Web サイトをダウンロード/解凍/インストールするなど、デプロイとは関係なく Web コードをデプロイするための代替手法を検討することもできます。
  • また、すべての静的コンテンツを BLOB ストレージに保持し、これらのオブジェクトをいつでも再デプロイなしで更新できます。
于 2013-07-08T02:23:11.770 に答える