Oracle Cloud Infrastructure Kubernetes EngineでMySQL Database Serviceを使用してWordPressをデプロイします

Oracle Cloud Infrastructure (OCI)でWordPress Webページおよびブログをホストすることによる柔軟性とコストのメリットを活用してください。

WordPressは、Webページおよびブログの管理に使用される最も一般的なコンテンツ管理システム(CMS)の1つです。WordPressデプロイメントを、次のOCIサービスで高いスケーラビリティと可用性を実現します。
  • Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes EngineまたはOKE)は、Kubernetesクラスタをデプロイまたは管理することなく、スケーラビリティと可用性の高いWordpressデプロイメントを提供します。
  • MySQL Database Service: データベースのプロビジョニングや管理を行わずに、WordPressアプリケーションに高パフォーマンスのデータベースを提供します。
  • 可用性を高めるためにアプリケーションのすべてのインスタンスにアクセスできる共有永続性ストレージ(WordPressで必要)のファイル・ストレージ・サービス。

アーキテクチャ

このリファレンス・アーキテクチャは、OKEクラスタでの高可用性およびスケーラブルなWordPressデプロイメントを示しています。このデプロイメントでは、File Storageサービスを永続ストレージとして使用し、MySQL Database Serviceをデータベースとして使用します。外部IPを持つロード・バランサは、WordPressアプリケーションへのアクセスを提供するために割り当てられます。

次の図は、このリファレンス・アーキテクチャを示しています。

oci-mysql-oke-wordpress-arch.pngの説明が続きます
図oci-mysql-oke-wordpress-arch.pngの説明

oci-mysql-oke-wordpress-arch-oracle.zip

次の項では、このリファレンス・アーキテクチャについて説明します。

OKEクラスタでは、デプロイメントのWordPressアプリケーション・ポッドの数を選択できます。各ポッドには、永続共有ストレージへのアクセスが必要です。ストレージを提供するために、ファイル・ストレージ上のNFS共有にマップされるストレージ・クラスのリソースがクラスタに作成されます。永続ボリューム・リソースは、ストレージ・クラスによって提供されるストレージをクラスタ内のリソースによって消費できるようにします。ポッドがストレージを利用することを示す永続ボリューム要求(PVC)リソースが作成されます。PVCは、ストレージにアクセスするためにWordPressアプリケーション・ポッドにマップされます。

WordPressアプリケーションのデータベースでは、MySQL Database Serviceが使用されます。MySQL Database Serviceインスタンスは、OCI Service Operator for Kubernetes (OSOK)で定義されたカスタム・リソースとしてOKEクラスタから作成および管理されます。

MySQL Database Serviceは、異なる可用性ドメインまたはフォルト・ドメインにデプロイされた3つのMySQL Database Serviceインスタンスを使用して、高可用性(HA)でデプロイされます。WordPressアプリケーションは、データベースの読取りおよび書込みのために単一のエンドポイントに接続します。障害が発生した場合、データベース・システムは、WordPressアプリケーションを再構成せずにセカンダリ・インスタンスに自動的にフェイルオーバーします。

ロード・バランサは、LoadBalancerタイプのサービス・リソースとしてOKEクラスタから作成および管理されます。

このアーキテクチャには、次のコンポーネントがあります。

  • リージョン

    Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、長距離の場合は(複数の国または大陸にまたがって)分離できます。

  • 可用性ドメイン

    可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、ある可用性ドメインでの障害は、リージョン内の他の可用性ドメインには影響しません。

  • フォルト・ドメイン

    フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアは独立しています。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションは、物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNを使用するとネットワーク環境を制御できます。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、KubernetesエンジンがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。OKEは、Kubernetesを使用して、ホストのクラスタにわたるコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。

  • Oracle MySQL Database Service

    Oracle MySQL Database ServiceはフルマネージドのOracle Cloud Infrastructure (OCI)データベース・サービスで、開発者はセキュアなクラウド・ネイティブ・アプリケーションを迅速に開発およびデプロイできます。Oracle MySQL Database Serviceは、OCIおよびMySQLエンジニアリング・チームによって100%構築、管理、およびサポートされています。

    Oracle MySQL Database Serviceには、統合された高パフォーマンス分析エンジン(HeatWave)があり、運用MySQLデータベースに対して高度なリアルタイム分析を直接実行できます。

  • ファイル・ストレージ

    Oracle Cloud Infrastructure File Storageサービスは、永続的でスケーラブルなセキュアなエンタープライズ規模のネットワーク・ファイル・システムを提供します。File Storageサービスのファイル・システムには、VCN内のベア・メタル、仮想マシンまたはコンテナ・インスタンスから接続できます。また、Oracle Cloud Infrastructure FastConnectおよびIPSec VPNを使用して、VCN外からファイル・システムにアクセスすることもできます。

  • WordPressコンテンツ管理システム(CMS)

    WordPress CMSを使用すると、完全に機能するブログ・サイトまたは汎用Webサイトを構築できます。

  • ネットワークアドレス変換(NAT)ゲートウェイ

    NATゲートウェイを使用すると、VCN内のプライベート・リソースは、受信インターネット接続にこれらのリソースを公開することなく、インターネット上のホストにアクセスできます。

  • サービス・ゲートウェイ

    サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。The traffic from the VCN to the Oracle service travels over the Oracle network fabric and does not traverse the internet.

  • レジストリ

    Oracle Cloud Infrastructure Registryは、本番ワークフローを簡素化できる、Oracle管理のレジストリです。レジストリを使用すると、Dockerイメージなどの開発アーティファクトを簡単に格納、共有および管理できます。Oracle Cloud Infrastructureの高可用性とスケーラビリティのアーキテクチャにより、アプリケーションを確実にデプロイして管理できます。

  • ロード・バランサ

    Oracle Cloud Infrastructure Load Balancingサービスは、単一のエントリ・ポイントからバックエンドの複数のサーバーへの自動トラフィック分散を提供します。

  • ルート表

    仮想ルート表には、通常ゲートウェイを介して、サブネットからVCN外部の宛先にトラフィックをルーティングするルールが含まれます。

  • セキュリティ・リスト

    サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

レコメンデーション

次の推奨事項を開始点として使用します。お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。
  • VCN

    VCNを作成するときには、必要なCIDRブロックの数を決定し、VCN内のサブネットにアタッチする予定のリソースの数に基づいて各ブロックのサイズを決定します。標準のプライベートIPアドレス領域内にあるCIDRブロックを使用します。

    プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。

    VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。

    サブネットを設計するときには、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能できる同じサブネットにアタッチします。

  • ロード・バランサの帯域幅

    ロード・バランサの作成時に、固定帯域幅を提供する事前定義済のシェイプを選択するか、帯域幅範囲を設定するカスタム(フレキシブル)シェイプを指定して、トラフィック・パターンに基づいて帯域幅を自動的にスケーリングできます。どちらの方法でも、ロード・バランサの作成後にいつでもシェイプを変更できます。

  • セキュリティ・リスト

    セキュリティ・リストを使用して、サブネット全体に適用されるイングレスおよびエグレス・ルールを定義します。

  • Oracle MySQL Database Service

    このアーキテクチャでは、WordPress CMSはOracle MySQL Database Serviceにリレーショナル・データを格納します。最新バージョンを使用することをお薦めします。

考慮事項

Oracle CloudにWordPressをデプロイする場合は、スケーラビリティと可用性を考慮してください。

  • アプリケーションの可用性

    WordPressアプリケーションは、高可用性を提供するために、デプロイメントに複数のポッドとともにデプロイされます。

  • SQL Database Serviceの可用性とスケーラビリティ

    可用性の高いアーキテクチャに表示されるMySQL Database Serviceでは、3つのインスタンスを作成し、それらを異なるフォルト・ドメインに配置する組込みのMySQL高可用性オプションが使用されます。

デプロイ

このリファレンス・アーキテクチャは、OCIコンソールまたはCLIを使用せずにOKEクラスタからデプロイおよび管理でき、Helmチャートで自動化できます。このリファレンス・アーキテクチャのサンプルHelmチャートは、MySQL Database Systemを、OCI for HAまたは非HAにデプロイされたKubernetesクラスタ内のデータベースとして使用してWordPressデプロイメントをブートストラップする方法を示します。GitHubからコードをダウンロードし、特定の要件にあわせてカスタマイズできます。

  1. GitHub - HAまたは GitHub - non-HAに移動します。
  2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
  3. READMEドキュメントの手順に従います。

謝辞

  • 著者: Chiping Hwang、Hassan Ajan
  • 貢献者: Anupama Pundpal