MySQL Database Serviceを使用したOracle LinuxへのDrupal CMSのデプロイ

Drupalは、使用可能な最も人気のあるコンテンツ管理システム(CMS)の1つです。無料でオープンソースであり、GNU Public Licenseでリリースされています。

DrupalはLAMPスタックに基づき、ユーザーと企業が、スケーラブルで堅牢なアーキテクチャ、実装とメンテナンスの労力の削減、および地域主導の大規模なナレッジ・ベースを提供しています。そのセットアップと使用には高度な技術スキルは必要ありません。これは、個人のブログから企業、政治、政府のサイトまで、世界中のウェブサイトのインフラストラクチャを提供します。拡張性とモジュラなので、様々なシナリオで役立ちます。

アーキテクチャ

Drupalは、単一のノードにデプロイすることも、高可用性マルチノード構成の一部としてデプロイすることもできます。このリファレンス・アーキテクチャには、両方の構成と互換性のあるTerraformの自動化が含まれています。

本番グレードの高可用性アーキテクチャーについては、次の図でマルチノードシナリオを示しています。

drupal-mds-multi.pngの説明が続きます
図drupal-mds-multi.pngの説明

drupal-mds-multi-oracle.zip

上の図は、ロード・バランサの背後にある2つの仮想マシン・インスタンスに焦点を当てて、OCIでの簡素化された高可用性アプリケーション環境を示しています。これらのインスタンスは、可用性ドメイン内の2つの異なるフォルト・ドメインに存在します。このアーキテクチャでは、OCI File Storageサービスを使用します。Drupalは共有ネットワーク・ファイル・システム(NFS)にインストールされます。ファイル・システムは、すべてのインスタンスからのマウント・ターゲットへのアクセスを許可するネットワーク・セキュリティ・グループ(NSG)を備えた専用プライベート・サブネットに存在します。

次の図は、単純な単一ノード・アーキテクチャを示しています。軽量デプロイメントで構成され、学習目的に適しているか、概念実証として機能する可能性があります。

drupal-mds-single.pngの説明が続きます
図drupal-mds-single.pngの説明

drupal-mds-single-oracle.zip

この単一ノード・アーキテクチャには、単一のVMインスタンスとスタンドアロンMySQL DBシステム(MDS)があります。インスタンスはパブリック・サブネットに配置され、インターネットからアクセス可能ですが、MDSはプライベート・サブネットに配置されます。セキュリティ・リストおよびルート表は、トラフィックの制限およびルーティングに使用されます。

マルチノード・アーキテクチャには、次のOCIコンポーネントが含まれています。
  • テナント

    テナンシは、Oracle Cloud Infrastructureのサインアップ時にOracle Cloud内で設定される、セキュアで分離されたパーティションです。テナンシ内のOracle Cloudでリソースを作成、整理および管理できます。テナンシは、会社または組織と同義です。

  • ポリシー

    Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにアクセスできるか、およびその方法を指定します。アクセスはグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメントまたはテナンシ内の特定のアクセスのタイプをグループに付与するポリシーを作成できます。

  • コンパートメント

    コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。コンパートメントを使用してOracle Cloud内のリソースを編成し、リソースへのアクセスを制御し、使用割当てを設定します。特定のコンパートメント内のリソースへのアクセスを制御するには、誰がリソースにアクセスできるか、および誰が実行できるアクションを指定するポリシーを定義します。

  • 仮想クラウド・ネットワーク(VCN)

    OCIの最初のステップの1つは、クラウド・リソースの仮想クラウド・ネットワークを設定することです。VCNは、OCIリージョンに設定したソフトウェア定義ネットワークです。VCNはサブネットに分割できます。サブネットはリージョンまたは可用性ドメインに固有です。リージョン固有および可用性ドメイン固有のサブネットの両方が同じVCN内に共存できます。サブネットはパブリックまたはプライベートにできます。

  • 可用性ドメイン

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

  • ロード・バランサ

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

  • コンピュート・インスタンス

    Oracle Cloud Infrastructure Computeでは、コンピュート・ホストのプロビジョニングおよび管理が可能です。リソース要件(CPU、メモリー、ネットワーク帯域幅およびストレージ)を満たすシェイプでコンピュート・インスタンスを起動できます。コンピュート・インスタンスの作成後、セキュアにアクセスしたり、再起動したり、ボリュームのアタッチとデタッチを行ったり、不要なときに終了したりできます。

  • インターネットゲートウェイ

    インターネット・ゲートウェイによって、VCNのパブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。

  • 動的ルーティング・ゲートウェイ(DRG)

    DRGは、オンプレミス・ネットワークとVCNの間のプライベート・ネットワーク・トラフィックのパスを提供する仮想ルーターであり、同じリージョン内またはリージョン間でVCN間でトラフィックをルーティングする場合にも使用できます。

  • ネットワーク・セキュリティ・グループ(NSG)

    NSGは、クラウド・リソースの仮想ファイアウォールとして機能します。Oracle Cloud Infrastructureのゼロトラスト・セキュリティ・モデルにより、すべてのトラフィックが拒否され、VCN内のネットワーク・トラフィックを制御できます。NSGは、単一のVCN内の指定されたVNICのセットにのみ適用されるイングレスおよびエグレス・セキュリティ・ルールのセットで構成されます。

  • ファイル・ストレージ

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

推奨

MySQL Database Serviceを使用してOracle LinuxにDrupal CMSをデプロイする場合は、次の推奨事項を開始点として使用します。要件は、ここで説明するアーキテクチャとは異なる場合があります。
  • VCN

    VCNを作成する際、各サブネットのクラウド・リソースに必要なIPアドレスの数を決定します。Classless Inter-Domain Routing (CIDR)表記法を使用して、サブネット・マスクと必要なIPアドレスに対して十分な大きさのネットワーク・アドレス範囲を指定します。標準のプライベートIPアドレス領域内にあるアドレス範囲を使用します。

    オンプレミス・ネットワークまたは他のネットワークと重複しないアドレス範囲を選択して、必要に応じてVCNとオンプレミス・ネットワークの間の接続を設定できます。

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

  • セキュリティ

    ポリシーを使用して、会社が所有するOCIリソースにアクセスできるユーザーと、そのアクセス方法を制限します。ボールトを使用して、キー、証明書およびシークレットをさらに保護します。

    ネットワーキング・サービスには、セキュリティ・ルールを使用してパケット・レベルでトラフィックを制御する2つの仮想ファイアウォール機能(セキュリティ・リストおよびネットワーク・セキュリティ・グループ(NSG)があります。NSGは、単一のVCN内の選択したセットのVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCN内の複数層アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。

    NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSG間のトラフィック、または1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSを使用することもできます。

  • コンピュート

    適切なOCPUとメモリーの組合せでシェイプを選択し、各インスタンスに対して必要に応じてローカルのNVMeまたはブロック・ストレージをプロビジョニングします。使用可能な柔軟なシェイプを使用することを検討します。これにより、OCPUとメモリーを組み合せるための柔軟性が向上します。

  • データベース

    計画されたワークロードに基づいて、Oracle MySQL Database Serviceシェイプを選択します。3つの冗長ノードに対して MySQL高可用性を有効にします。

注意事項

MySQL Database ServiceとともにOracle LinuxにDrupal CMSをデプロイする場合、次の要因を考慮してください。

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

    この例では、高可用性アーキテクチャにおいて、同じ可用性ドメイン内の異なるフォルト・ドメインに2つのインスタンスが表示されています。フォルト・トレランスをさらに高くするために、インスタンスを別の可用性ドメイン(使用可能なリージョン内)に配置することを選択できます。

    より要求の厳しい様々なパフォーマンス・ニーズへのより動的な適応を表す代替アプローチは、インスタンス・プールと自動スケーリングを使用することです。インスタンス・プールを使用すると、同じリージョン内の同じ構成に基づいて、複数のコンピュート・インスタンスをプロビジョニングおよび作成できます。

    自動スケーリングでは、パフォーマンス・メトリック(CPU使用率など)に基づいて、インスタンス・プール内のコンピュート・インスタンス数を自動的に調整できます。自動スケーリングは、需要が多い期間にユーザーに一貫したパフォーマンスを提供し、需要が少ない期間にコストを削減するのに役立ちます。

  • データベースの可用性と拡張性

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

  • データベースのバックアップ
    MySQL Database Serviceでは、データベース・システムに含まれるすべてのデータの完全バックアップと、最後の完全バックアップ以降に追加または変更されたデータのみ増分バックアップの2つのタイプのバックアップがサポートされています。バックアップは次の方法で実行されます。
    • 手動:コンソールでのアクションまたはAPIを介して行われたリクエストによってバックアップが開始されます。手動バックアップは1日以上、最大365日間保持できます。
    • 自動:ユーザーが選択した時点で必要な操作を行わずに、自動的にスケジュールされたバックアップが実行されます。自動バックアップは、1日から35日の間で保持されます。デフォルトの保存期間は7日間です。定義されている場合、自動バックアップの保存期間は編集できません
  • コンピュート・バックアップ

    Oracle Cloud Infrastructure Block Volumesサービスを使用すると、ブロック・ボリューム上のデータのポイントインタイム・バックアップを作成できます。その後、これらのバックアップをすぐに新しいボリュームにリストアすることも、後でリストアすることもできます。また、このサービスを使用して、アプリケーションの中断やダウンタイムを発生させずに、ブート・ボリュームのポイントインタイムのクラッシュ・コンシステント・バックアップを行うこともできます。ブート・ボリューム・バックアップ機能は、ブロック・ボリューム・バックアップ機能と同じです。

  • セキュリティ・ポリシー

    ポリシーを使用して、会社のOCIリソースにアクセスできるユーザーと、そのアクセス方法を制限します。

  • ネットワーク・セキュリティ

    ネットワーキング・サービスには、セキュリティ・リストネットワーク・セキュリティ・グループ(NSG)の2つの仮想ファイアウォール機能があり、パケット・レベルでトラフィックを制御します。NSGは、単一のVCN内の選択したセットのVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCN内のマルチティア・アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。

    NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSG間のトラフィック、または1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSを使用することもできます。

    これらの例では、インスタンスはパブリック・サブネットに存在するものとして表示されます。セキュリティを強化するために、プライベート・サブネットに配置することを検討してください。その場合、インスタンスにアクセスするには要塞が必要です。

デプロイ

このリファレンス・アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして使用できます。GitHubからコードをダウンロードし、特定の要件に合わせてコードをカスタマイズすることもできます。

  • Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
    1. Oracle Cloudへのデプロイをクリックします。

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. スタックをデプロイするリージョンを選択します。
    3. 画面上のプロンプトおよび指示に従ってスタックを作成します。
    4. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
    5. ジョブが完了するのを待ってから、プランをレビューします。

      変更するには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」アクションを再実行します。

    6. これ以上変更が不要な場合は、「スタック詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
  • GitHubのTerraformコードを使用してデプロイ:
    1. GitHubに移動します。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの指示に従います。

確認

  • 作成者: NunoGonçalves