この記事では、Azureに WordPress の大規模なストレージ集中型インストールをホストするコンテナー ソリューションについて説明します。 このソリューションによってスケーラビリティとセキュリティが最大化されます。 主要なコンポーネントには、Azure Front Door、Azure Kubernetes Service (AKS)、および Azure NetApp Files があります。
アーキテクチャ
注意
任意の WordPress ホスティング 方法に適用されるヒントと推奨事項を実装することで、このソリューションを拡張できます。 WordPress のインストールを展開する方法に関する一般的なヒントについては、「Azure の
データフロー
次のデータフローは、前の図に対応しています。
ユーザーは、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 Managed Redis は、マネージド インメモリ データ ストアおよびキャッシュ サービスです。 このアーキテクチャでは、Azure Managed 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 load balancerです。 このアーキテクチャでは、内部ロード バランサーによって、Azure Front Door Premium レベルからのトラフィックが、低待機時間と高スループットでイングレス コントローラー ポッドに分散されます。
ネットワーク セキュリティ グループ (NSG) は、セキュリティ規則を使用して、送信元または送信先の IP アドレス、ポート、プロトコルに基づいて受信または送信のネットワーク トラフィックを許可または拒否するセキュリティ機能です。 このアーキテクチャでは、NSG ルールによって、サブネット内のアプリケーション コンポーネント間のトラフィック フローが制限されます。
選択肢
Azure Managed Redis マネージド サービスを使用する代わりに、AKS クラスター内のセルフホステッド Redis ポッドをキャッシュとして使用できます。
Azure NetApp Filesなどのマネージド ストレージ ソリューションを使用する代わりに、Rook-Ceph storage などのセルフホステッド ソリューションを使用できます。 詳細については、「Use Rook Ceph on AKSを参照してください。
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 Application Firewall を参照してください。 データベース層からのアウトバウンド インターネット トラフィックは許可されません。
プライベート ストレージへのパブリック アクセスは許可されません。リソースへのパブリック アクセスは無効になります。 Azure Database for MySQL、Azure Managed Redis、Key Vault、Azure Container Registry に対してプライベート エンドポイントを使用します。 詳細については、「Azure Private Linkを参照してください。
詳細については、General 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 | シニア クラウド ソリューション アーキテクト
次の手順
製品ドキュメント:
- Azure Front Doorの概要
- Web Application Firewallの概要
- Azure NetApp Filesの概要
Azure NetApp Files - Azure NetApp Files を AKS 用に構成する
- Azure Database for MySQL - フレキシブル サーバー
- Virtual Networkの概要
- Key Vaultの概要
- Load Balancerの概要
- DDoS Protection の概要
Microsoft トレーニング モジュール:
- Kubernetes でのアプリケーションの開発とデプロイ
Azure NetApp Filesの導入 - キー ボールトの実装
- 仮想ネットワークの紹介