イントロダクション
Azure Service Fabric は、スケーラブルで信頼性の高いマイクロサービスとコンテナーのパッケージ化、デプロイ、管理を容易にする分散システム プラットフォームです。
Service Fabric は、マシンのクラスター全体にマイクロサービスをデプロイするための Microsoft の コンテナー オーケストレーター です。 Service Fabric は、Microsoft で大規模なサービスを実行している年の間に学んだ教訓からメリットを得られます。
マイクロサービスは、 Service Fabric プログラミング モデル ( ASP.NET Core) の使用から任意 のコードのデプロイまで、さまざまな方法で開発できます。 または、 コンテナーをデプロイして管理するだけの場合は、Service Fabric も最適な選択肢です。
既定では、Service Fabric はこれらのサービスをプロセスとしてデプロイしてアクティブ化します。 プロセスは、クラスター内のリソースの最も高速なアクティブ化と最も密度の高い使用状況を提供します。 Service Fabric では、コンテナー イメージにサービスをデプロイすることもできます。 プロセス内のサービスとコンテナー内のサービスを同じアプリケーションで混在させることもできます。
Service Fabric でコンテナーをすぐに試すには、クイック スタート、チュートリアル、またはサンプルを試してください。
クイック スタート: Linux コンテナー アプリケーションを Service Fabric にデプロイする
クイック スタート: Windows コンテナー アプリケーションを Service Fabric にデプロイする
既存の .NET アプリをコンテナー化する
Service Fabric コンテナーのサンプル
コンテナーとは
コンテナーは、アプリケーションを実行するための不変環境を提供することで、異なるコンピューティング環境でアプリケーションを確実に実行する問題を解決します。 コンテナーは、アプリケーションとそのすべての依存関係 (ライブラリや構成ファイルなど) を、コンテナー内でソフトウェアを実行するために必要なすべてのものを含む独自の分離された 'box' にラップします。 コンテナーがどこで実行される場合でも、その中のアプリケーションには、依存ライブラリの適切なバージョン、構成ファイル、実行する必要があるその他のものなど、実行する必要があるすべてのものが常に含まれます。
コンテナーはカーネルの上で直接実行され、ファイル システムとその他のリソースの分離ビューが表示されます。 コンテナー内のアプリケーションは、そのコンテナーの外部にある他のアプリケーションやプロセスを認識しません。 各アプリケーションとそのランタイム、依存関係、およびシステム ライブラリは、コンテナー内で実行され、コンテナー独自のオペレーティング システムの分離ビューへの完全なプライベート アクセス権が付与されます。 さまざまなコンピューティング環境で実行する必要があるアプリケーションのすべての依存関係を簡単に提供できるだけでなく、セキュリティとリソースの分離は、Service Fabric でコンテナーを使用する重要な利点です。それ以外の場合は、プロセスでサービスを実行します。
仮想マシンと比較すると、コンテナーには次の利点があります。
- 小: コンテナーでは、効率を高めるために、単一のストレージ領域とレイヤー バージョンと更新プログラムが使用されます。
- 高速: コンテナーはオペレーティング システム全体を起動する必要がないため、通常は数秒で起動できます。
- 移植性: コンテナー化されたアプリケーション イメージは、クラウド、オンプレミス、仮想マシン内、または物理マシン上で直接実行するように移植できます。
- リソース ガバナンス: コンテナーは、ホストで使用できる物理リソースを制限できます。
コンテナーに対する Service Fabric のサポート
Service Fabric では、Linux での Docker コンテナーのデプロイと、Windows Server 2016 以降での Windows Server コンテナーのデプロイと、Hyper-V 分離モードのサポートがサポートされています。
ServiceFabric と互換性のあるコンテナー ランタイム:
- Linux: Docker
- ウィンドウズ:
- Windows Server 2022: Mirantis Container Runtime
- Windows Server 2019/2016: DockerEE
Linux 上の Docker コンテナー
Docker には、Linux カーネル コンテナー上にコンテナーを作成および管理するための API が用意されています。 Docker Hub には、コンテナー イメージを格納および取得するための中央リポジトリが用意されています。 Linux ベースのチュートリアルについては、「 Linux で最初の Service Fabric コンテナー アプリケーションを作成する」を参照してください。
Windows Server コンテナー
Windows Server 2016 以降では、分離レベルによって異なる 2 種類のコンテナーが提供されます。 Windows Server コンテナーと Docker コンテナーは、どちらも名前空間とファイル システムの分離を持ち、実行中のホストとカーネルを共有しているため、似ています。 Linux では、従来、この分離は cgroup と名前空間によって提供されており、Windows Server コンテナーも同様に動作します。
Hyper-V サポートされている Windows コンテナーでは、オペレーティング システム カーネルを他のコンテナーやホストと共有するコンテナーがないため、分離性とセキュリティが強化されます。 この高度なセキュリティ分離により、Hyper-V 有効なコンテナーは、潜在的に敵対的なマルチテナント シナリオを対象とします。 Windows ベースのチュートリアルについては、「 Windows で最初の Service Fabric コンテナー アプリケーションを作成する」を参照してください。
次の図は、使用可能なさまざまな種類の仮想化と分離レベルを示しています。
コンテナーを使用するためのシナリオ
コンテナーが適切な選択である一般的な例を次に示します。
IIS のリフト アンド シフト: 既存 の ASP.NET MVC アプリを、ASP.NET Core に移行するのではなく、コンテナーに配置できます。 これらの ASP.NET MVC アプリは、インターネット インフォメーション サービス (IIS) に依存します。 これらのアプリケーションは、事前に作成された IIS イメージからコンテナー イメージにパッケージ化し、Service Fabric と共にデプロイできます。 Windows コンテナーの詳細については、 Windows Server 上 のコンテナー イメージを参照してください。
コンテナーと Service Fabric マイクロサービスの混在: アプリケーションの一部に既存のコンテナー イメージを使用します。 たとえば、アプリケーションの Web フロントエンドに NGINX コンテナー を使用し、より集中的なバックエンド計算にステートフル サービスを使用できます。
"ノイズの多い近隣" サービスの影響を軽減する: コンテナーのリソース ガバナンス機能を使用して、サービスがホストで使用するリソースを制限できます。 サービスが多くのリソースを消費し、他のリソースのパフォーマンス (実行時間の長いクエリのような操作など) に影響する可能性がある場合は、リソース ガバナンスを持つコンテナーにこれらのサービスを配置することを検討してください。
注
Service Fabric クラスターはシングル テナントとして設計されており、ホストされるアプリケーションは信頼できるものと見なされます。 信頼されていないアプリケーションのホストを検討している場合は、「Service Fabric クラスターでの信頼されていないアプリケーションのホスト」をご覧ください。
Service Fabric は、コンテナーが複数のサービス レプリカが配置されているアプリケーション ホストを表すアプリケーション モデル を提供します。 Service Fabric では、組み込みの Service Fabric プログラミング モデルを使用せず、任意の言語またはフレームワークを使用して記述された既存のアプリケーションをコンテナー内にパッケージ化する ゲスト実行可能シナリオ もサポートされています。 このシナリオは、コンテナーの一般的なユース ケースです。
コンテナー内で Service Fabric サービスを実行することもできます。 コンテナー内での Service Fabric サービスの実行のサポートは現在制限されています。
Service Fabric には、コンテナー化されたマイクロサービスで構成されるアプリケーションを構築するのに役立つコンテナー機能がいくつか用意されています。次に例を示します。
- コンテナー イメージのデプロイとアクティブ化。
- Azure クラスターでの既定のリソース値の設定を含むリソース ガバナンス。
- リポジトリ認証。
- コンテナー ポートからホスト ポートへのマッピング。
- コンテナー間の検出と通信。
- 環境変数を構成および設定する機能。
- コンテナーにセキュリティ資格情報を設定する機能。
- コンテナーのさまざまなネットワーク モードの選択。
Azure Kubernetes Service を使用して Kubernetes クラスターを作成する方法、Azure Container Registry でプライベート Docker レジストリを作成する方法など、Azure でのコンテナー サポートの包括的な概要については、 Azure for Containers に関するページを参照してください。
次のステップ
この記事では、Service Fabric がコンテナーを実行するためのサポートについて説明しました。 次に、各機能の例を見て、それらを使用する方法を示します。
Linux で最初の Service Fabric コンテナー アプリケーションを作成する
Windows で最初の Service Fabric コンテナー アプリケーションを作成する
Windows コンテナーの詳細