
今日は、
Microsoft Azureプラットフォームの基本的なサービスの1つであるクラウドサービスについて話しましょう。
クラウドサービスの主なアイデアは、1つ以上のWebロールと作業ロール(Webロール、ワーカーロール)を使用して、要求またはデータを分散処理するマルチレベルソリューションを実装することです。
したがって、入門的な定義:クラウドサービスMicrosoft Azureは、ロールモデルと柔軟なスケーリングの方向である程度再考された、マルチコンポーネントアプリケーションを作成する機能です。
たとえば、負荷が増加した場合、サーバー側のハンドラーのみをスケーリングできますが、Webフロントエンドインスタンスの数はそのままにします。
注:
クラウドサービスとWebサイトの一般的なポイントと主な違い、各サービスが特定の機能またはシナリオを実装する方法については、記事「 Azure Webサイト、クラウドサービス、仮想マシンのロシア語と英語の 比較」を参照してください。
クラウドサービスのアーキテクチャと役割

MVC(Model-View-Controller)を使用して記述された典型的なWebアプリケーションに基づいたロールモデルの原則を検討してください。
- プレゼンテーション(Webユーザーインターフェイス);
- コントローラー(ビジネスロジックレイヤー);
- データソースアクセスレイヤー。

アプリケーションへのアクセスは、エンドポイントアクセスポイント(HTTPまたはHTTPS)によって実行されます。
- ビューは名前をWeb ロールに変更します。
- コントローラー-Worker ロール 。
- データソースアクセスレイヤーは、別の ワーカー ロール 内に実装できます。
ハンドラーコントローラー(
ワーカー ロール )によってプレゼンテーション(
Web ロール )からデータを受信するために、ミドルウェアは伝統的にキューサービスとして使用されます。
同時に、ミドルウェアは、たとえば、Microsoft AzureストレージキューまたはMicrosoft Azureサービスバスにすることができます。
ミドルウェアの使用は、フォールトトレラントな分散アプリケーションの開発の優れた例です。
コンポーネントの1つ(たとえば、Webロール)が失われると、システム全体が機能しなくなり、データが失われる
密結合システムを開発する代わりに、開発者はミドルウェアをブローカーメッセージングモードで使用できます。
これは、
Web ロールが単にミドルウェアサービス(キュー内)にメッセージを置き、ガベージコレクターがそれらを処理するまで、または
Worker ロールインスタンスによって処理されるまで保存されることを意味し
ます。同時に、
Web ロールには、そこから来るメッセージを処理するハンドラーの数、これらのハンドラーが存在するかどうか、オフラインかオンラインかについての手掛かりがなく、これらのメッセージの処理ステータスについては特に提供されていません。
システムの一部の障害がシステム全体の障害につながることはないため、システムの接続性は明らかに低下します。
クラウドサービスアーキテクチャで見ることができるように、各役割は同じ役割機能を実行する多くのインスタンスに存在します。
これは、Webサイトへのリンクをクリックすることにより、ユーザーがWebロールの最初のインスタンスと、
ロードバランサーのローテーションにある他のインスタンスにアクセスできることを意味します。
ロールのタイプとその主な特徴について、以下で詳しく説明します。

- Web ロール 。 Webロールには、IIS 7 / 7.5がインストールされ、デフォルトでいくつかの標準HTTPアクセスポートが開いている仮想マシンを備えたサーバーインスタンスのセットが含まれています。 Webロールのセキュリティは、HTTPSエントリポイントにバインドされた証明書によって保証されます。
- ワーカーの 役割。 ワーカーロールには、ビジネスロジックを実行する仮想マシンを備えたサーバーインスタンスのセットが含まれ、通常はWebロールから作業用のデータを取得します。
デフォルトでは、Workerロールのインスタンス上の仮想マシンへの着信接続は拒否されます。
Workerロールプロジェクトは、次のプログラミングモデルを使用します。Workerロールのビジネスロジックを実装するクラスであるRoleEntryPointから継承する3つのメソッドを実装します。
- OnStart () -ロールの開始時に呼び出され、特に指定されない限り 、ロードバランサーに「ビジー」ステータスを返します。
- 実行 () -継続的に実行され、メインロジックが含まれます。
- OnStop () -ロールが切断されたときに30秒実行され、接続のクローズ、オブジェクトの削除などに使用できます。

アップグレードアクションを実行するときにサービスの継続的な動作を保証し、サービスレベルの要件を満たすためには、各ロールの少なくとも2つのコピーを決定する必要があります。
クラウドサービスの構成
構成を説明するために、クラウドサービスとはプロジェクト、つまり クラウドサービスを記述するファイルのコレクション。 このプロジェクトはVisual Studioで使用できます。
したがって、構成は2つのXMLファイルで構成されます。
- 拡張子が.csdefのサービス定義ファイル。 Microsoft Azureがクラウドサービスの構成に使用する設定(ロール、エントリポイント、および定義済みの値なしの構成設定)を指定します。
- サービス構成ファイル(拡張子.cscfg)。 特定のロールを提供するサーバーインスタンスの数など、さまざまなパラメーターの即時値が含まれます。
Microsoft Azure構成ファイルには、展開されたサービスを提供するオペレーティングシステムのバージョンを示す
2つのパラメーターを設定する機能もあります。 最初のパラメーターはオペレーティングシステムの「ファミリ」、osFamily属性、2番目のosVersionはオペレーティングシステムの「バージョン」です。
この設定を受け取ったMicrosoft Azureサービスは、ファミリの開発者によって定義されたオペレーティングシステムの特定のイメージを検索します。 この設定のデフォルト値は「*」です。つまり、サービスはオペレーティングシステムの最新バージョンで起動され、新しいバージョンが利用可能になると更新されます。
Microsoft Azureでクラウドサービスソリューションを構成すると、両方の構成ファイルは特別な自動サービス
Azure Fabricによって処理され、これらのファイルに基づいて、構成を満たす空きリソースが検索され、仮想マシンの作成とインストール、およびソリューションのさらなる展開が開始されます。
したがって、
構成ファイルの適切な
構成は 、クラウドにデプロイする際に非常に重要です。
環境
Cloud Servicesの各インスタンスは、開発者にデプロイされたソリューションの2つの場所を提供します-実環境で動作するバージョンに使用される
Productionと
Stagingおよびテスト用にデプロイされたソリューション。

展開プロセス中に、開発者はソリューションを展開する場所を構成します。
これらの場所は展開セルと呼ば
れ、ドメイン名と内部ルーティングルールのみが異なり
ます 。
実稼働セルの場合、クラウドサービスの作成時に開発者が指定したDNS名が構成されます。たとえば、ステージングの場合、
http://appname.cloudapp.netのように、次のタイプの一時DNS名が作成され
ます。http:// [guid] .cloudapp.netステージングでソリューションを正常にテストした後、開発者はソリューションを実稼働で展開する必要はありません。管理ポータルで
VIPスワップ手順を開始するだけで十分です。
したがって、転送や移行を行うことなく、数分でステージングセルからのソリューションが実稼働に移行します。
実稼働セルでエラーが検出された場合、VIPスワップ手順を再起動して、ステージングセルでソリューションのテストを続行できます。これは、偶然、エンドユーザーが利用できません。

クラウドサービスのスケーリング
Microsoft Azureクラウドサービスの場合 、CPU負荷またはMicrosoft Azureストレージキュー内の現在のメッセージ数に基づいて自動的にスケーリングできます。
開発者は、管理パネルでスケーリング予測を追跡できます。管理パネルは、クラウドサービスのスケーリングを実行する必要性について報告します。
クラウドサービスの自動スケーリングを構成するには、各ズームの待機時間(分単位)を指定する必要があります。

キュー内のメッセージの数に基づくスケーリングは、キュー内のメッセージの数が特定のしきい値を超えるか、それを下回る場合、ロールインスタンスが作成または削除される場合、または仮想マシンが可用性グループに含まれるか、可用性グループから除外される場合に便利に使用されます。
開発者は、Azureがサービスを自動的にスケーリングするキュー内のメッセージ数を個別に設定します。



多くの場合、ロールをスケーリングするとき、アプリケーションが使用するデータベースもスケーリングすると有益です。 データベースがクラウドサービスに関連付けられている場合、管理ポータルでSQLデータベースのバージョンとサイズを変更できます。

自動スケーリングエンジンは5分間隔を使用し、各間隔は過去1時間のCPU負荷をチェックします。 したがって、エンジンは5分ごとに自動スケーリングプロセスを開始できます。
ただし、異なる期間のスケジュールを設定して、アプリケーションの自動スケーリングをスケジュールすることもできます。

REST APIを使用してAzure管理ポータルに参加しなくても、自動スケーリングのためにWASABiと呼ばれる追加のソフトウェアをインストールすることもできます。
Microsoft Visual Studio用のAzureツール
Azure Visual Studio Toolkitは、開発者がAzureでWebアプリケーションを作成、管理、実行、および展開するのに役立ちます。
このパッケージには、プロジェクトテンプレート(Webロール、ワーカーロールなど)、
リモートデバッグおよび仮想マシンの作成 、Emulator Express、Visual Studioインターフェイス拡張、ストレージエクスプローラーおよびサーバーエクスプローラー拡張、Web配置を使用した統合配置が含まれます。クラウド、IntelliTraceなど
に 。
Azure Toolsの最新リリースは、次のバージョンのVisual Studioでサポートされています。
- Visual Studio 2012
- Visual Studio 2013
- Visual Studio Express 2012 for Web
- Visual Studio Express 2013 for Web
Microsoft Azure SDK
開発者がローカルで使用する機能を提供するには、Azure SDKが必要です。 Azure SDKは、デフォルトでは.NET Frameworkに含まれておらず、
個別にインストールされます。
Azure SDKの主要なコンポーネントは、ローカルコンピューターでクラウドサービスを実行、デバッグ、およびテストするために必要なコンピューティングおよびストレージエミュレーターです。これは、インターネット接続がない場合に非常に便利です。
計算エミュレーターは、動作中のクラウドサービスソリューションの診断ログを管理および表示する基本的なタスクを実行するためのグラフィカルインターフェイスを提供します。

以下は、エミュレーターで実行されるソリューションとクラウドで実行されるソリューションのいくつかの違いです。つまり、クラウドでソリューションの一部をテストする必要があります。
- エミュレータは、限られた数のロールとインスタンスをサポートします。 展開ロールの最大数は50です。
- エミュレーターは、ソリューションを実行するための管理ソリューションを提供しますが、Azureで実行されるソリューションにはデフォルトで管理者権限がありません。
- エミュレータは、負荷分散を完全にはシミュレートしません。
- エミュレーターはIIS Expressを使用し、AzureではIISを使用します。
- 計算エミュレータでは、すべてのロールはローカルコンピューターで実行されますが、Azureでは、ロールは個別の仮想マシンで実行されます。
違いの完全なリストは、次の
リンクから入手できます。
ストレージエミュレーターは、ローカルコンピューター上の3つのAzureストレージサービス(BLOB、テーブル、キュー)をモデリングするためのローカル環境を提供します。 ローカルストレージエミュレーターの主要なメカニズムはSQL Serverです。
現在、エミュレータのグラフィカルツールは廃止されたと見なされており、今後SDKから除外されます。 エミュレーター機能へのアクセスは、コマンドラインで提供されるようになりました。
クラウドサービス用のウイルス対策
少し前まで、Microsoft
はAzureクラウドサービス用のウイルス対策を導入しました。これは、リアルタイムまたはスケジュールされた保護を提供し、Azure Diagnosticsを通じてアカウントに対する攻撃に関する情報を収集します。
Azureアンチウイルスは、Microsoft Security Essentials [MSE]、Microsoft Forefront Endpoint Protection、Microsoft System Center Endpoint Protection、Windows Intune、およびWindows Defender for Windows 8.0以降と
同じプラットフォーム上に構築されています。 バックグラウンドで動作するように設計されています。
開発者は、ソリューションのニーズに基づいてウイルス対策を構成し、リアルタイム保護またはスケジュールスキャンを選択し、保護ツールの更新を開始したり、悪意のあるインシデントに関する情報を収集したりできます。
アンチウイルスは、クラウドサービスの各インスタンスに
デフォルトで
インストールされます 。
基本構成を使用して保護サービスを有効にするか、必要に応じて構成できます。 デフォルトのセキュリティサービス設定は、Microsoft Azure環境で使用するためにすでに最適化されています。 ただし、ソリューションの詳細に合わせてカスタマイズすることもできます。
以下は、クラウドサービスおよび仮想マシンでMicrosoft Azureウイルス対策ツールがどのように機能するかの一般的な概要です。

便利なリンク