Azure Kubernetes Service 上の WordPress
この記事では、Azure 上の WordPress の大規模なストレージ集中型インストールをホストするコンテナー ソリューションについて説明します。 このソリューションによってスケーラビリティとセキュリティが最大化されます。 主要なコンポーネントには、Azure Front Door、Azure Kubernetes Service (AKS)、Azure NetApp Files があります。
アーキテクチャ
このアーキテクチャの Visio ファイルをダウンロードします。
注意
任意の WordPress ホスティング 方法に適用されるヒントと推奨事項を実装することで、このソリューションを拡張できます。 WordPress インストールをデプロイする方法に関する一般的なヒントについては、 Azure 上の WordPress を参照してください。
データフロー
次のデータフローは、前の図に対応しています。
ユーザーは、Azure Web Application Firewall が有効になっている Azure Front Door を介してフロントエンド Web サイトにアクセスします。
Azure Front Door は、Azure Load Balancer の内部インスタンスを配信元として使用します。 内部ロード バランサーは、AKS の不可視コンポーネントです。 Azure Front Door は、キャッシュされていないすべてのデータを取得します。
内部ロード バランサーは、AKS 内のポッドに受信トラフィックを分散させます。
Azure Key Vault には、秘密キー (X.509 証明書) を含むシークレットが格納されます。
WordPress アプリケーションは、プライベート エンドポイントを使用して、Azure Database for MySQL のフレキシブル サーバー インスタンスにアクセスします。 WordPress アプリケーションは、このマネージド データベース サービスから動的な情報を取得します。
すべての静的コンテンツは Azure NetApp Files でホストされます。 このソリューションでは、ネットワーク ファイル システム (NFS) プロトコルで Astra Trident Container Storage Interface (CSI) ドライバーを使用します。
コンポーネント
AKS は、コンテナー化されたアプリケーションのデプロイ、管理、スケーリングに使用できるマネージド Kubernetes サービスです。 このアーキテクチャでは、AKS は WordPress コンテナーをホストし、コンテナー化された WordPress アプリケーションを実行して高可用性とスケーラビリティを確保するオーケストレーション プラットフォームを提供します。
Azure Cache for Redis は、マネージド インメモリ データ ストアおよびキャッシュ サービスです。 このアーキテクチャでは、Azure Cache for Redis は、すべてのポッドが共有するキーと値のキャッシュをホストします。 WordPress パフォーマンス最適化プラグインは、応答時間を向上させるためにキャッシュを使用します。
Azure Database for MySQL - フレキシブル サーバー は、オープンソースの MySQL データベース エンジンに基づくマネージド リレーショナル データベース サービスです。 このアーキテクチャでは、このデータベースには WordPress データが格納されます。
Azure DDoS Protection は、強化された分散型サービス拒否 (DDoS) 軽減機能を提供するネットワーク セキュリティ サービスです。 このアーキテクチャでは、DDoS Protection は、アプリケーション設計のベスト プラクティスと組み合わせて境界ネットワーク上で有効にすると、DDoS 攻撃から防御するのに役立ちます。
Azure Front Door は、最新のクラウド コンテンツ配信ネットワークとグローバル ロード バランサーです。 このアーキテクチャでは、Azure Front Door は WordPress デプロイへのパブリック エントリ ポイントです。
Azure NetApp Files は、管理され、パフォーマンスが高く、待機時間の影響を受けやすいストレージ ソリューションです。 このアーキテクチャでは、Azure NetApp Files は WordPress コンテンツをホストするため、すべてのポッドが高パフォーマンスのファイル ストレージを介して共有データにアクセスできます。
Azure Virtual Network は、デプロイされたリソースが相互、インターネット、およびオンプレミス ネットワークと通信できるようにするネットワーク サービスです。 このアーキテクチャでは、仮想ネットワークによって分離とセグメント化が提供されます。
Key Vault は、シークレット、証明書、キー、パスワードへのアクセスを格納および制御するクラウド サービスです。 このアーキテクチャでは、ポッドに必要な場合、Key Vault によって AKS クラスターにシークレットが提供されます。
Load Balancer は、ルールと正常性プローブの結果に基づいて受信トラフィックを分散するレイヤー 4 ロード バランサーです。 このアーキテクチャでは、ロード バランサーは Azure Front Door からのトラフィックを、低待機時間と高スループットでイングレス コントローラー ポッドに分散します。
ネットワーク セキュリティ グループ (NSG) は、セキュリティ規則を使用して、送信元または送信先の IP アドレス、ポート、プロトコルに基づいて受信または送信のネットワーク トラフィックを許可または拒否するセキュリティ機能です。 このアーキテクチャでは、NSG ルールによって、サブネット内のアプリケーション コンポーネント間のトラフィック フローが制限されます。
代替
Azure Cache for Redis マネージド サービスを使用する代わりに、AKS クラスター内のセルフホステッド ポッドをキャッシュとして使用することができます。
Azure NetApp Files などのマネージド ストレージ ソリューションを使用する代わりに、Rook-Ceph ストレージなどのセルフホステッド ソリューションを使用することができます。 詳細については、「 AKS での Rook Ceph の使用」を参照してください。
AKS を使用する代わりに、 Azure Container Apps を使用してコンテナー化された WordPress ワークロードをホストできます。 Container Apps は、よりシンプルまたは小規模なシナリオに適したマネージド サーバーレス コンテナー サービスです。 大規模でストレージを集中的に使用し、高度にカスタマイズ可能なデプロイでは、AKS を使用します。
シナリオの詳細
このシナリオ例は、WordPress の大規模なストレージ集中型インストールに最適です。 このデプロイ モデルは、サイトへのトラフィックの急増に合わせてスケーリングすることができます。
考えられるユース ケース
- WordPress をコンテンツ管理システムとして使用している高トラフィックのブログ
- WordPress を使用しているビジネス Web サイトまたは eコマース Web サイト
考慮事項
これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「 Well-Architected Framework」を参照してください。
[信頼性]
信頼性は、アプリケーションが顧客に対して行ったコミットメントを確実に満たすことができるのに役立ちます。 詳細については、「信頼性の設計レビュー チェックリスト」を参照してください。
このソリューションをデプロイするときは、次の推奨事項を考慮してください。
AKS のポッドとロード バランサーを使用して、イングレス トラフィックを分散します。 この方法では、ポッドの障害が発生した場合でも高可用性が提供されます。
すべてのネットワーク コンポーネントを Azure Front Door の背後に配置します。 この方法により、ネットワーク リソースとアプリケーションは、トラフィックを中断し、ユーザー アクセスに影響を与える可能性がある問題に対する回復性が高まります。
Azure Front Door を使用してすべての応答をキャッシュし、可用性のメリットを小さくします。 具体的には、配信元が応答しない場合でも、コンテンツにアクセスできます。 ただし、キャッシュには、完全な可用性ソリューションを提供する機能はありません。
ペアになっているリージョン間で Azure NetApp Files ストレージをレプリケートして、可用性を向上させます。 詳細については、「 Azure NetApp Files レプリケーションについて」を参照してください。
ニーズを満たす 高可用性オプション に従って、Azure Database for MySQL の可用性を向上させます。
このソリューションは、複数リージョン、データ レプリケーション、自動スケーリングをサポートしています。 コンポーネントがトラフィックをポッドに分散させます。 正常性プローブにより、正常なポッドのみがトラフィックを受信します。
Azure Front Door は、別のリージョンにデプロイされた仮想マシン スケール セットをサポートするグローバル サービスです。
セキュリティ
セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティの設計レビュー チェックリスト」を参照してください。
このソリューションをデプロイするときは、次の推奨事項を考慮してください。
Azure Front Door の Web Application Firewall を使用して、フロントエンド アプリケーション層に流入する仮想ネットワーク トラフィックを保護します。 詳細については、「 Azure Front Door の Web アプリケーション ファイアウォール」を参照してください。
データベース層からのアウトバウンド インターネット トラフィックは許可されません。
プライベート ストレージへのパブリック アクセスは許可されません。リソースへのパブリック アクセスは無効になります。 Azure Database for MySQL、Azure Cache for Redis、Key Vault、Azure Container Registry にはプライベート エンドポイントを使用します。 詳細については、Azure Private Link に関するページを参照してください。
詳細については、 WordPress のセキュリティとパフォーマンスに関する一般的なヒントとAzure のセキュリティに関するドキュメントを参照してください。
コストの最適化
コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。
このソリューションをデプロイする場合は、コストに関する次の考慮事項を確認してください。
トラフィックの期待値 (GB/月): トラフィック量はコストに最も大きな影響を与えます。 受信するトラフィックの量によって、必要な AKS ノードの数と送信データ転送の価格が決まります。 また、トラフィック量は、送信データ転送コストが安いコンテンツ配信ネットワークが提供するデータ量と直接関連付けられます。
ホストされるデータの量: Azure NetApp Files の価格は予約容量に基づいているため、ホストするデータの量を考慮してください。 コストを最適化するには、データに必要な最小容量を予約します。
書き込みパーセンテージ: Web サイトに書き込む新しいデータの量と、それを格納するためのコストを検討します。 複数リージョンのデプロイの場合、Web サイトに書き込む新しいデータの量は、リージョン全体でミラー化されたデータの量と関連付けられます。
静的コンテンツと動的コンテンツ: データベース ストレージのパフォーマンスと容量を監視して、低コストの SKU がサイトをサポートできるかどうかを判断します。 データベースは動的コンテンツを格納し、コンテンツ配信ネットワークは静的コンテンツをキャッシュします。
AKS クラスターの最適化: 仮想マシン (VM) のサイズや Azure 予約に関するガイダンスなど、AKS の一般的なヒントに従って、AKS クラスターのコストを最適化します。 詳細については、「 AKS コストの最適化」を参照してください。
パフォーマンス効率
パフォーマンス効率とは、ユーザーの要求を効率的に満たすためにスケーリングするワークロードの能力を指します。 詳細については、「パフォーマンス効率の設計レビュー チェックリスト」を参照してください。
このシナリオでは、AKS のポッドを使用してフロントエンドをホストします。 自動スケーリング機能を使用すると、フロントエンド アプリケーション層を実行するポッドの数を、顧客の需要に応じて自動的にスケーリングできます。 定義済みのスケジュールに基づいてポッドの数をスケーリングすることもできます。 詳細については、「 AKS でのアプリケーションのスケーリング オプション」を参照してください。
重要
パフォーマンスを最大限に高めるには、NFS プロトコル バージョン 4.1 を使用する永続ボリュームをマウントします。 次の YAML の例は、この目的で PersistentVolume オブジェクトを構成する方法を示しています。
mountOptions フィールドの値に注目してください。
kind: PersistentVolume
...
accessModes:
- ReadWriteMany
mountOptions:
- vers=4.1
nfs:
server: xx.xx.xx.xx
共同作成者
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
プリンシパル作成者:
- Vaclav Jirovsky | クラウド ソリューション アーキテクト
その他の共同作成者:
- Adrian Calinescu | シニア クラウド ソリューション アーキテクト
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次の手順
製品ドキュメント:
- Azure Front Door の概要
- Web アプリケーション ファイアウォールの概要
- Azure NetApp Files の概要
- Azure NetApp Files の NFS ボリュームを作成する
- AKS 用に Azure NetApp Files を構成する
- Azure Database for MySQL - フレキシブル サーバー
- 仮想ネットワークの概要
- Key Vault の概要
- Load Balancer の概要
- DDoS Protection の概要
Microsoft トレーニング モジュール: