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