Magento eCommerceをMySQL Database ServiceでOracle Linuxにデプロイ
Magento eCommerceをMySQL Database ServiceでOracle Linuxにデプロイして、スケーラブルで堅牢なアーキテクチャ、実装とメンテナンスの作業、および大規模なコミュニティ主導のナレッジ・ベースへのアクセスをユーザーと企業に提供できます。
Magentoは、LaminasやSymfonyなどの他のPHPフレームワークを使用できるPHPで記述されたオープンソースのeコマース・プラットフォームです。そのソースコードは、Open Software License (OSL) v3.0に配布されます。Magentoは、MySQLリレーショナル・データベース管理システム、PHPプログラミング言語およびZend Frameworkの要素を使用します。オブジェクト指向プログラミングおよびモデル・ビュー・コントローラ・アーキテクチャの規則が適用されます。
アーキテクチャ
Magentoは、単一ノード構成またはマルチノードの高可用性構成の一部としてデプロイできます。このリファレンス・アーキテクチャには、両方の構成と互換性のあるTerraformの自動化が含まれています。
本番グレードの高可用性アーキテクチャーについては、次の図でマルチノードシナリオを示しています。
前の図は、ロード・バランサの背後にある2つの仮想マシン・インスタンスに焦点を当てて、OCIで簡素化された高可用性アプリケーション環境を示しています。これらのインスタンスは、可用性ドメイン内の2つの異なるフォルト・ドメインに存在します。このアーキテクチャでは、OCI File Storageサービスを使用します。Magentoは共有ネットワーク・ファイル・システム(NFS)にインストールされます。ファイル・システムは、すべてのインスタンスからのマウント・ターゲットへのアクセスを許可するネットワーク・セキュリティ・グループ(NSG)を備えた専用プライベート・サブネットに存在します。
次の図は、単純な単一ノード・アーキテクチャを示しています。軽量デプロイメントで構成され、学習目的に適しているか、概念実証として機能する可能性があります。
- ポリシー
Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにアクセスできるか、およびその方法を指定します。アクセスはグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメントまたはテナンシ内の特定のアクセスのタイプをグループに付与するポリシーを作成できます。
- コンパートメント
コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。コンパートメントを使用してOracle Cloud内のリソースを編成し、リソースへのアクセスを制御し、使用割当てを設定します。特定のコンパートメント内のリソースへのアクセスを制御するには、誰がリソースにアクセスできるか、および誰が実行できるアクションを指定するポリシーを定義します。
- 仮想クラウド・ネットワーク(VCN)
OCIの最初のステップの1つは、クラウド・リソースの仮想クラウド・ネットワーク(VCN)を設定することです。VCNは、OCIリージョンに設定したソフトウェア定義ネットワークです。VCNはサブネットに分割できます。サブネットはリージョンまたは可用性ドメインに固有です。リージョン固有および可用性ドメイン固有のサブネットの両方が同じVCN内に共存できます。サブネットはパブリックまたはプライベートにできます。
- 可用性ドメイン
アベイラビリティ・ドメインは、リージョン内のスタンドアロンで独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。アベイラビリティ・ドメインは電源や冷却、内部アベイラビリティ・ドメイン・ネットワークなどのインフラを共有しません。そのため、1つの可用性ドメインで障害が発生しても、リージョン内の他の可用性ドメインには影響しません。
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、1つのエントリ・ポイントからバック・エンド内の複数のサーバーへの自動トラフィック分散を提供します。
- コンピュート・インスタンス
Oracle Cloud Infrastructure Computeでは、コンピュート・ホストのプロビジョニングおよび管理が可能です。リソース要件(CPU、メモリー、ネットワーク帯域幅およびストレージ)を満たすシェイプでコンピュート・インスタンスを起動できます。コンピュート・インスタンスの作成後、セキュアにアクセスしたり、再起動したり、ボリュームのアタッチとデタッチを行ったり、不要なときに終了したりできます。
- インターネットゲートウェイ
インターネット・ゲートウェイによって、VCNのパブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。
- 動的ルーティング・ゲートウェイ(DRG)
DRGは、オンプレミス・ネットワークとVCNの間のプライベート・ネットワーク・トラフィックのパスを提供する仮想ルーターであり、同じリージョン内またはリージョン間でVCN間でトラフィックをルーティングする場合にも使用できます。
- ファイル・ストレージ
Oracle Cloud Infrastructure File Storage Serviceでは、永続的でスケーラブルなセキュアなエンタープライズ規模のネットワーク・ファイル・システムを提供します。VCNのベア・メタル、仮想マシンまたはコンテナ・インスタンスからファイル・ストレージ・サービスのファイル・システムに接続できます。Oracle Cloud Infrastructure FastConnectおよびIPSec VPNを使用して、VCNの外部からファイル・システムにアクセスすることもできます。
- ネットワーク・セキュリティ・グループ(NSG)
NSGは、クラウド・リソースの仮想ファイアウォールとして機能します。Oracle Cloud Infrastructureのゼロトラスト・セキュリティ・モデルを使用すると、すべてのトラフィックが拒否され、VCN内のネットワーク・トラフィックを制御できます。NSGは、1つのVCN内の指定された一連のVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。
推奨
- VCN
VCNを作成する際、必要なCIDRブロックの数と、VCNのサブネットにアタッチする予定のリソース数に基づいて各ブロックのサイズを決定します。標準のプライベートIPアドレス領域内にあるCIDRブロックを使用します。
オンプレミス・ネットワークまたは他のネットワークと重複しないアドレス範囲を選択して、必要に応じてVCNとオンプレミス・ネットワークの間の接続を設定できます。
サブネットを設計する際は、トラフィック・フローおよびセキュリティ要件を考慮してください。セキュリティ境界として機能する、特定の層またはロール内のすべてのリソースを同じサブネットにアタッチします。
- セキュリティ
ポリシーを使用して、会社が所有するOCIリソースにアクセスできるユーザーと、そのアクセス方法を制限します。ボールトを使用して、キー、証明書およびシークレットをさらに保護します。
ネットワーキング・サービスには、セキュリティ・ルールを使用してパケット・レベルでトラフィックを制御する2つの仮想ファイアウォール機能(セキュリティ・リストおよびネットワーク・セキュリティ・グループ(NSG)があります。NSGは、単一のVCN内の選択したセットのVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCN内の複数層アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。
NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSG間のトラフィック、または1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSを使用することもできます。
- Compute
適切なOCPUとメモリーの組合せでシェイプを選択し、各インスタンスに対して必要に応じてローカルのNVMeまたはブロック・ストレージをプロビジョニングします。使用可能な柔軟なシェイプを使用することを検討します。これにより、OCPUとメモリーを組み合せるための柔軟性が向上します。
- データベース
計画されたワークロードに基づいて、Oracle MySQL Database Serviceシェイプを選択します。3つの冗長ノードに対して MySQL高可用性を有効にします。
注意事項
Magento eCommerceをMySQL Database ServiceでOracle Linuxにデプロイする場合、次の要因を考慮します。
- アプリケーションの可用性と拡張性
この例では、高可用性アーキテクチャにおいて、同じ可用性ドメイン内の異なるフォルト・ドメインに2つのインスタンスが表示されています。1つは、フォルト・トレランスをさらに高くするために、インスタンスを異なる可用性ドメイン(使用可能なリージョン)に配置することを選択できます。より要求の厳しい様々なパフォーマンス・ニーズへのより動的な適応を表す代替アプローチは、インスタンス・プールと自動スケーリングを使用することです。
インスタンス・プールを使用すると、同じリージョン内の同じ構成に基づいて、複数のコンピュート・インスタンスをプロビジョニングおよび作成できます。
自動スケーリングでは、パフォーマンス・メトリック(CPU使用率など)に基づいて、インスタンス・プール内のコンピュート・インスタンス数を自動的に調整できます。自動スケーリングは、需要が多い期間にユーザーに一貫したパフォーマンスを提供し、需要が少ない期間にコストを削減するのに役立ちます。
- データベースの可用性と拡張性
可用性の高いアーキテクチャに表示されるMySQL Database Systemは、組込みのMySQL高可用性オプションを利用します。これにより、3つのインスタンスが作成され、異なるフォルト・ドメインに配置されます。
- データベースのバックアップMySQL Database Serviceでは、データベース・システムに含まれるすべてのデータの完全バックアップと、最後の完全バックアップ以降に追加または変更されたデータのみの増分バックアップの2つのタイプのバックアップがサポートされています。バックアップは次の方法で実行されます。
- 手動:コンソールでのアクションまたはAPIを介して行われたリクエストによってバックアップが開始されます。手動バックアップは1日以上、最大365日間保持できます。
- 自動:ユーザーが選択した時点で必要な操作を行わずに、自動的にスケジュールされたバックアップが実行されます。自動バックアップは、1日から35日の間で保持されます。デフォルトの保存期間は7日間です。定義されている場合、自動バックアップの保存期間は編集できません
- コンピュート・バックアップ
Oracle Cloud Infrastructure Block Volumesサービスを使用すると、ブロック・ボリューム上のデータのポイントインタイム・バックアップを作成できます。その後、これらのバックアップをすぐに新しいボリュームにリストアすることも、後でリストアすることもできます。
また、このサービスを使用して、アプリケーションの中断やダウンタイムを発生させずに、ブート・ボリュームのポイントインタイムのクラッシュ・コンシステント・バックアップを行うこともできます。ブート・ボリューム・バックアップ機能は、ブロック・ボリューム・バックアップ機能と同じです。
- セキュリティ・ポリシー
ポリシーを使用して、会社が所有するOCIリソースおよび方法にアクセスできるユーザーを制限します。
- ネットワーク・セキュリティ
ネットワーキング・サービスには、セキュリティ・ルールを使用してパケット・レベルでトラフィックを制御する2つの仮想ファイアウォール機能(セキュリティ・リストおよびネットワーク・セキュリティ・グループ(NSG)があります。NSGは、単一のVCN内の選択したセットのVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCN内のマルチティア・アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。
NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSG間のトラフィック、または1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSを使用することもできます。
これらの例では、インスタンスはパブリック・サブネットに存在するものとして表示されます。セキュリティを強化するために、プライベート・サブネットに配置することを検討してください。その場合、インスタンスにアクセスするには要塞が必要です。
デプロイ
このリファレンス・アーキテクチャのTerraformコードは、GitHubで入手できます。ワンクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイしたり、GitHubからコンピュータにコードをダウンロードしたり、コードをカスタマイズしたり、Terraform CLIを使用してアーキテクチャをデプロイしたりできます。
- Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
をクリックします
まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- スタックをデプロイするリージョンを選択します。
- 画面上のプロンプトおよび指示に従ってスタックを作成します。
- スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するのを待ってから、プランをレビューします。
変更するには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」アクションを再実行します。
- これ以上変更が不要な場合は、「スタック詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
- GitHubのTerraformコードを使用してデプロイ:
- GitHubに移動します。
- リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
README
ドキュメントの指示に従います。
詳細の検討
Oracle Cloud Infrastructureのベスト・プラクティス、Oracle MySQL Database Serviceおよびその他のOCI上の同様のデプロイメントの詳細は、次の追加のリソースを確認してください:
- Oracle Cloud Infrastructureのベスト・プラクティス・フレームワーク
- MySQL Database Serviceの概要
- Oracle CloudでのMySQL Database Serviceのデプロイについて
- クラウドのMySQLデータベースに接続されるWordPress CMSを設定する
- MySQL Database Serviceを使用したOracle LinuxへのDrupal CMSのデプロイ
- MySQL Database Serviceを使用したOracle LinuxへのJoomla CMSのデプロイ
- MySQL Database Serviceを使用したOracle LinuxへのMoodle LMSのデプロイ