wordPress on Azure Kubernetes Service

Azure マネージド再配布
Azure Front Door
Azure Kubernetes Service (AKS)
Azure Load Balancer
Azure NetApp Files

この記事では、Azureでストレージを集中的に使用する大規模な WordPress インストールをホストするためのコンテナー ベースのアーキテクチャについて説明します。 主要なコンポーネントには、Azure Front DoorAzure Kubernetes Service (AKS)、および Azure NetApp Files があります。

アーキテクチャ

AKS WordPress 展開のアーキテクチャ図。Azure NetApp Filesは静的コンテンツを格納します。プライベート エンドポイントは、他のサービスへのアクセスを提供します。

このアーキテクチャのVisio ファイルをダウンロードしてください。

注意

任意の WordPress ホスティング 方法に適用される推奨事項を実装することで、このソリューションを拡張できます。 WordPress の展開に関する一般的なガイダンスについては、「Azure の WordPress」を参照してください。

データ フロー

次のデータ フローは、前の図に対応しています。

  1. ユーザーは、Azure Web Application Firewallが有効になっているAzure Front Doorを介してフロントエンド Web サイトにアクセスします。

  2. Azure Front Door Premium は、内部ロード バランサーを公開する Azure Private Link サービスを介して AKS 内部ロード バランサーの配信元に接続します。 内部ロード バランサーは AKS のコンポーネントです。 Azure Front Doorは、キャッシュされていないデータを取得します。

  3. 内部ロード バランサーは、AKS 内のイングレス コントローラーにイングレス トラフィックを分散します。 マネージド NGINX イングレス コントローラーは、アプリケーション ルーティング アドオンまたは Application Gateway for Containers をイングレス コントローラーとして使用できます。

  4. Azure Key Vaultは、秘密キーを含む、データベース パスワードやトランスポート層セキュリティ (TLS) 証明書などのシークレットを格納します。

  5. WordPress アプリケーションは、プライベート エンドポイントを使用して、Azure Database for MySQLフレキシブル サーバー インスタンスにアクセスします。 WordPress アプリケーションは、このマネージド データベース サービスから動的な情報を取得します。

  6. すべての静的コンテンツは、Azure NetApp Filesでホストされます。 このソリューションでは、ネットワーク ファイル システム (NFS) プロトコルで Trident Container Storage Interface (CSI) ドライバーを使用します。

コンポーネント

  • AKS は、コンテナー化されたアプリケーションをデプロイ、管理、スケーリングするためのマネージド Kubernetes サービスです。 このアーキテクチャでは、AKS は WordPress コンテナーをホストし、高可用性とスケーラビリティのためのオーケストレーション プラットフォームを提供します。

  • Azure Managed Redis は、マネージド インメモリ データ ストアおよびキャッシュ サービスです。 このアーキテクチャでは、すべてのポッドが Azure Managed Redis Cache を共有します。 WordPress パフォーマンス最適化プラグインでは、このキャッシュを使用して応答時間を短縮します。

  • Azure Database for MySQL フレキシブル サーバー は、オープンソースの MySQL データベース エンジンに基づくマネージド リレーショナル データベース サービスです。 このアーキテクチャでは、このデータベースには WordPress データが格納されます。

  • Azure DDoS Protection は、強化された分散 DDoS 軽減機能を提供するネットワーク セキュリティ サービスです。 DDoS Protection には、 DDoS ネットワーク保護と DDoS IP 保護の 2 つの層があります。 このアーキテクチャでは、DDoS Protection をアプリケーション設計のベスト プラクティスと組み合わせて境界ネットワーク上で有効にすると、DDoS 攻撃から保護されます。

  • Azure Front Door は、クラウド コンテンツ配信ネットワークとグローバル ロード バランサーです。 このアーキテクチャでは、Azure Front Door Premium レベルが必要です。内部ロード バランサーを公開するPrivate Link サービスを介して配信元に接続するためにAzure Private Linkを使用するためです。 このアーキテクチャでは、Azure Front Doorは WordPress 展開へのパブリック エントリ ポイントです。

  • Azure NetApp Files は、管理され、パフォーマンスが高く、待機時間の影響を受けやすいストレージ ソリューションです。 このアーキテクチャでは、すべてのポッドが高パフォーマンスのファイル ストレージを介して共有データにアクセスできるように、Azure NetApp Filesは WordPress コンテンツをホストします。

  • Azure Virtual Network は、デプロイされたリソースを相互、インターネット、およびオンプレミスネットワークに接続するネットワーク サービスです。 このアーキテクチャでは、仮想ネットワークによって分離とセグメント化が提供されます。

  • Key Vault は、シークレット、証明書、キー、パスワードへのアクセスを格納および制御するクラウド サービスです。 このアーキテクチャでは、Key Vaultは、実行時にポッドが取得するデータベース資格情報や TLS 証明書などのシークレットを格納します。

  • Azure Load Balancer は、ルールと正常性プローブの結果に基づいて受信トラフィックを分散するレイヤー 4 ロード バランサーです。 このアーキテクチャでは、内部ロード バランサーが Private Link サービス の背後に配置され、Premium Azure Front Doorが配信元にプライベートに到達できるようにします。 その後、内部ロード バランサーによって、イングレス コントローラー ポッドにトラフィックが分散されます。

  • Azure Container Registry は、マネージド コンテナー イメージ レジストリ サービスです。 このアーキテクチャでは、Container Registry は WordPress コンテナー イメージを格納し、プライベート エンドポイントを介して AKS クラスターで使用できるようにします。

  • ネットワーク セキュリティ グループ (NSG) は、セキュリティ規則を使用して、送信元または送信先の IP アドレス、ポート、プロトコルに基づいて受信または送信のネットワーク トラフィックを許可または拒否するセキュリティ機能です。 このアーキテクチャでは、NSG ルールによって、サブネット内のアプリケーション コンポーネント間のトラフィック フローが制限されます。

選択肢

  • Azure Managed Redis マネージド サービスではなく、AKS クラスター内のセルフホステッド Redis ポッドをキャッシュとして使用します。

  • Azure NetApp Filesなどのマネージド ストレージ ソリューションではなく、Rook-Ceph storage などのセルフホステッド ソリューションを使用します。 セルフホステッド ストレージ ソリューションを使用すると、運用の複雑さが増し、チームはストレージ レイヤーを直接管理する必要があります。 このアプローチを選択する前に、運用オーバーヘッドが組織で許容できるかどうかを評価します。

  • Azure Container Apps を使用して、AKS ではなくコンテナー化された 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 Front Doorはキャッシュされたコンテンツを引き続き提供できます。 キャッシュだけでは、完全な可用性ソリューションは提供されません。

  • ペアになっているリージョン間Azure NetApp Filesストレージをレプリケートして、可用性を向上させます。 詳細については、「Azure NetApp Files レプリケーションを参照してください。

  • 高可用性オプションを実装してAzure Database for MySQL可用性を向上させます。

  • このアーキテクチャでは、マルチリージョンのデプロイ、データ レプリケーション、自動スケールがサポートされています。 ヘルスプローブにより、正常なポッドのみがトラフィックを受け取ります。

  • Azure Front Doorは、複数のリージョンの配信元にトラフィックをルーティングできるグローバル サービスです。

セキュリティ

セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、セキュリティ設計レビューのチェックリストを参照してください。

このソリューションをデプロイするときは、次の推奨事項を考慮してください。

  • Azure Front DoorのAzure Web Application Firewallを使用して、フロントエンド アプリケーション層に流れる仮想ネットワーク トラフィックを保護します。 詳細については、Azure Front Door の Azure Web Application Firewall を参照してください。

  • データベース層からの送信インターネット トラフィックをブロックします。

  • プライベート ストレージへのパブリック アクセスをブロックし、リソースへのパブリック アクセスを無効にします。 Azure Database for MySQL、Azure Managed Redis、Key Vault、コンテナー レジストリに対して、Azure プライベート エンドポイントを使用します。 詳細については、「 Private Link」を参照してください。

詳細については、General WordPress のセキュリティとパフォーマンスのヒントおよびAzureセキュリティに関するドキュメントを参照してください。

コストの最適化

コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイする場合は、コストに関する次の考慮事項を確認してください。

  • 1 か月あたりのトラフィックの期待値 (GB): トラフィック量はコストに最も大きな影響を与えます。 受信するトラフィックによって、必要な AKS ノードの数と送信データ転送の価格が決まります。 また、トラフィック量は、送信データ転送コストが低いコンテンツ配信ネットワークが提供するデータと直接関連付けられます。

  • Hosted data: Azure NetApp Filesの価格は予約容量によって異なるため、ホストするデータを検討してください。 コストを最適化するには、データに必要な最小容量を予約します。

  • 書き込みパーセンテージ: Web サイトに書き込む新しいデータの量と、それを格納するためのコストを検討します。 マルチリージョンデプロイの場合、Web サイトに書き込む新しいデータは、リージョン間でミラー化されたデータと関連付けられます。

  • 静的コンテンツと動的コンテンツ: データベース ストレージのパフォーマンスと容量を監視して、低コストの SKU がサイトをサポートしているかどうかを判断します。 データベースは動的コンテンツを格納し、コンテンツ配信ネットワークは静的コンテンツをキャッシュします。

  • AKS クラスターの最適化: 仮想マシンのサイズやAzure予約に関するガイダンスなど、AKS の一般的なガイダンスに従って、AKS クラスターのコストを最適化します。 詳細については、「 AKS コストの最適化」を参照してください。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「 オペレーショナル エクセレンスの設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイするときは、次の推奨事項を考慮してください。

  • AKS クラスターのAzure MonitorでKubernetesの監視を有効にし、マネージドPrometheusメトリックやコンテナーのログを含めます。 ユーザーに影響を与える前に問題に対応できるように、ノードとポッドのリソース使用率のアラートを構成します。

  • Kubernetes マニフェスト、Helm チャート、およびコードとしてのインフラストラクチャ (IaC) テンプレートをバージョン 管理システムに格納します。 継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを使用して AKS クラスターに変更をデプロイし、手動エラーを減らし、繰り返し可能なデプロイを確保します。

  • AKS ノード イメージのアップグレードと通常の Kubernetes バージョンのアップグレードを使用して、セキュリティ パッチとバグ修正プログラムを最新の状態に保ちます。

  • AKS のAzure Policyを使用して、プライベート レジストリの要求や特権コンテナーの制限など、クラスター全体に組織の標準を適用します。

パフォーマンス効率

パフォーマンス効率とは、ユーザーの要求を効率的に満たすためにスケーリングするワークロードの能力を指します。 詳細については、「パフォーマンス効率のための設計レビュー チェックリスト」を参照してください。

このシナリオでは、AKS のポッドを使用してフロントエンドをホストします。 自動スケーリング機能を使用すると、フロントエンド アプリケーション層を実行するポッドの数を、顧客の需要に基づいて自動的にスケーリングできます。 ポッドは、スケジュールに基づいてスケーリングすることもできます。 詳細については、「 AKS でのアプリケーションのスケーリング オプション」を参照してください。

重要

パフォーマンスを最大限に高めるには、NFS プロトコル バージョン 4.1 を使用する永続ボリュームをマウントします。 次の YAML の例は、この目的で PersistentVolume オブジェクトを構成する方法を示しています。 mountOptions フィールドは NFS バージョン 4.1 を指定します。

kind: PersistentVolume
...
    accessModes:
    - ReadWriteMany
    mountOptions:
    - vers=4.1
    nfs:
      server: xx.xx.xx.xx

貢献者

Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。

主執筆者

その他の共同作成者:

  • Adrian Calinescu | シニア クラウド ソリューション アーキテクト
  • Andrew Cardy |シニア ソフトウェア エンジニア

パブリックでないLinkedIn プロファイルを表示するには、LinkedIn.

次の手順

製品ドキュメント:

Microsoft トレーニング モジュール: