MySQLを使用するクラウド・ネイティブ・アプリケーションをOracle Cloud Infrastructureにデプロイ
Oracle Container Engine for Kubernetes (OKE)、Oracle Cloud Infrastructure RegistryおよびOracle MySQL Database Service (MDS)を使用して、クラウド・ネイティブ・アプリケーションを開発およびデプロイし、レガシー・アプリケーションをクラウドに移行できます。
OKEは、完全に管理されたスケーラブルで可用性の高いサービスで、コンテナ化されたアプリケーションをクラウドにデプロイする際に使用できます。開発チームがクラウド・ネイティブ・アプリケーションを確実に構築、デプロイおよび管理する場合、OKEを使用します。
Oracle Cloud Infrastructure Registryを内部使用のためのプライベートDockerレジストリとして使用でき、Docker V2 APIと標準のDockerコマンドライン・インタフェース(CLI)を使用して、レジストリに対してDockerイメージをプッシュしてプルします。
MDSは完全管理型のOracle Cloud Infrastructureネイティブ・サービスであり、バックアップやリカバリ、データベースやオペレーティング・システムのパッチ適用などのタスクを自動化します。
MDSをOracle Cloud Infrastructure Computeで使用すると、次の利点があります。
- MySQLを数分でデプロイします。
- 完全管理型のOCIサービスを利用できます。
- インフラストラクチャ管理ではなく開発に重点を置いています。
- 最新のアプリケーションにはツールと最新の機能を使用できます。
- ニーズに応じて拡張
- シャドウITを回避します。
アーキテクチャ
このリファレンス・アーキテクチャには、MDSおよびOKEクラスタで構築された高可用性データベース層が含まれています。
次の図は、このリファレンス・アーキテクチャを示しています。

図kubernetes-mysql-oci.pngの説明
Architecture-kubernetes-mysql-oci-oracle.zip
アクティブなドメイン・サブネットにMDSをデプロイする場合、MDSはMySQLインスタンスのクラスタをデプロイし、各フォルト・ドメインに1つのインスタンスを使用して冗長性を提供します。1つのインスタンスがプライマリで、他の2つのインスタンスがセカンダリです。プライマリには、データベースへの読取りおよび書込みを可能にする単一のエンドポイントが含まれ、セカンダリはプライマリからレプリケートされたデータを受信します。第2者には直接アクセスできません。
障害または手動スイッチオーバーの場合、セカンダリの1つが新しいプライマリになり、エンドポイントがリダイレクトされます。つまり、エンドポイントのIPアドレスは変更されず、アプリケーションを更新する必要はありません。OCIは、データベースの高可用性側面を管理します。
アーキテクチャには、開発およびデプロイ可能なクラウド・ネイティブ・アプリケーションに対応するためにOracle Cloud Infrastructure Registryと連携するOKEクラスタが含まれます。
アーキテクチャには次のコンポーネントがあります。
- Bastionホスト
要塞ホストは、クラウド外部からトポロジに対して制御されたセキュアなエントリ・ポイントとして機能するコンピュート・インスタンスです。要塞ホストは通常、非武装ゾーン(DMZ)でプロビジョニングされます。クラウドの外部から直接アクセスできないプライベート・ネットワークに機密リソースを配置することで、機密リソースを保護できます。トポロジには、定期的に監視および監査できる既知の単一のエントリ・ポイントがあります。そのため、トポロジへのアクセスを損なうことなく、より機密性の高いコンポーネントを公開しないようにできます。
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetesは、完全に管理されたスケーラブルな高可用性のサービスで、コンテナ化アプリケーションをクラウドにデプロイする際に使用できます。ユーザーは、アプリケーションが必要とするコンピュート・リソースを指定し、Container Engine for KubernetesがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。Container Engine for Kubernetesは、Kubernetesを使用して、ホストのクラスタ間でコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。
- Oracle MySQL Database Service
Oracle MySQL Database Serviceは、完全に管理されたOracle Cloud Infrastructure (OCI)データベース・サービスであり、開発者はセキュアなクラウド・ネイティブ・アプリケーションを迅速に開発およびデプロイできます。OCIで最適化され、排他的に利用可能になるOracle MySQL Database Serviceは、OCIおよびMySQLエンジニアリング・チームによって構築、管理およびサポートされた100%です。
Oracle MySQL Database Serviceには、高パフォーマンスの統合分析エンジン(HeatWave)があり、運用中のMySQLデータベースに対して高度なリアルタイム分析を直接実行できます。
- レジストリ
Oracle Cloud Infrastructure Registryは、開発から本番のワークフローを簡略化できる、Oracle管理のレジストリです。レジストリを使用すると、Dockerイメージなどの開発アーティファクトを簡単に格納、共有および管理できます。Oracle Cloud Infrastructureの高可用性とスケーラブルなアーキテクチャにより、アプリケーションを確実にデプロイおよび管理できます。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的な領域です。リージョンは他のリージョンから独立しており、巨大な距離は(国全体または大陸にわたって)分離できます。
- 仮想クラウド・ネットワーク(VCN)とサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、CNはネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる複数の重複しないCIDRブロックを含めることができます。VCNをサブネットにセグメント化できます。これは、リージョンまたは可用性ドメインにスコープを設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックでもプライベートでもかまいません。
- 可用性ドメイン
可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各アベイラビリティ・ドメインの物理リソースは、フォルト・トレランスを提供する他のアベイラビリティ・ドメインのリソースから分離されます。アベイラビリティ・ドメインは、電源や冷却、内部の可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、1つの可用性ドメインでの障害が、リージョン内の他の可用性ドメインに影響しない可能性があります。
- フォルト・ドメイン
フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアが独立しています。複数のフォルト・ドメインにリソースを分散すると、アプリケーションは、フォルト・ドメイン内の物理サーバーの障害、システム・メンテナンスおよび電源障害を許容できます。
- 動的ルーティング・ゲートウェイ(DRG)
DRGは、VCNとリージョン外のネットワーク間のプライベート・ネットワーク・トラフィックのパスを提供する仮想ルーターです。たとえば、別のOracle Cloud Infrastructureリージョン内のVCN、オンプレミス・ネットワーク、別のクラウド・プロバイダ内のネットワークなどです。
- サービス・ゲートウェイ
サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。VCNからOracle Serviceへのトラフィックは、Oracleネットワーク・ファブリック上を移動し、インターネットを経由することはありません。
- インターネット・ゲートウェイ
インターネット・ゲートウェイを使用すると、VCN内のパブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。
- セキュリティ・リスト
サブネットごとに、サブネットの内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。
- ルート表
仮想ルート表には、サブネットからVCN外部の宛先(通常はゲートウェイを介して)にトラフィックをルーティングするルールが含まれます。
推奨
要件は、ここで説明するアーキテクチャとは異なる場合があります。次の推奨事項を開始点として使用します。
- Bastionホスト
VMを使用します。1つのCPUおよび1GBのメモリーと最新のOracle Linuxオペレーティング・システムを備えたStandard.E4.Flexシェイプ。
- OKEクラスタ
デプロイメント用のVCNおよびサブネットを指定できるように、コンソールの「カスタム作成」オプションを使用します。3ノードのクラスタを作成し、「VM」を選択します。初期シェイプとしてのStandard.E4.Flex。大規模デプロイメントでは、より大きなコンピュート・シェイプでより大きなクラスタ・サイズを使用できます。
- DB Systemシェイプ
このアーキテクチャでは、MDSの高可用性を使用して、フォルト・ドメインに分散する3つのMySQLサーバーを提供します。軽いワークロードの場合は、MySQLを使用することをお薦めします。 VM。 Standard.E3.1.8GB.HA。より要求の厳しいワークロードには、より大きなシェイプを使用できます。
- MDSに接続しています
MDSには、アプリケーションVMまたはコンテナにインストールされているMySQLクライアントまたはMySQLシェルを使用して直接アクセスできます。
- MDSデータベース・ストレージ
MDSデータベース・ストレージのパフォーマンスは、DBシステム用に選択されたストレージ・サイズでスケーリングされます。MDSストレージIOPSを制限または編集することはできません。データのサイズおよびパフォーマンス要件に基づいてストレージ・サイズをプロビジョニングする必要があります。MDSでは、iSCSIよりもブロック・ボリューム・サービスの「より高いパフォーマンス」オプションが使用されます。パフォーマンスの最終的な結果は、様々なシェイプやシナリオで異なる場合があります。
- コンテナ・レジストリ
Oracleはレジストリを管理するため、サイズや他のオプションを選択する必要はありません。セキュリティのベスト・プラクティスのためにプライベート・レジストリを作成することをお薦めします。
- VCN
VCNを作成する際、VCNのサブネットにアタッチする予定のリソース数に基づいて、必要なCIDRブロックの数および各ブロックのサイズを決定します。標準のプライベートIPアドレス領域内にあるCIDRブロックを使用します。
プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。
VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。
サブネットを設計する際は、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能する同じサブネットにアタッチします。
注意事項
- 拡張性
各コンピュート・ノードのVMシェイプを変更することで、MySQLを垂直にスケーリングできます。コア数が多いシェイプを使用すると、コンピュート・インスタンスに割り当てられたメモリーおよびネットワーク帯域幅が増加します。
- アプリケーションの可用性
このアーキテクチャは、MDSの高可用性を使用して複数のフォルト・ドメインにコンピュート・インスタンスを分散し、単一障害点をなくし、冗長性を提供します。
- コスト
データベースに必要なコア、メモリーおよびネットワーク帯域幅に基づいてVMシェイプを選択します。1コア・シェイプから開始できます。アプリケーションまたはデータベース・ノードにさらにパフォーマンス、メモリーまたはネットワーク帯域幅が必要な場合は、後でVMシェイプを変更できます。
デプロイ
このリファレンス・アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして使用できます。GitHubからコードをダウンロードし、特定の要件にあわせてカスタマイズすることもできます。
- Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
をクリックしますまだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- 条件をレビューして受け入れます。
- スタックをデプロイするリージョンを選択します。
- 画面上のプロンプトと手順に従ってスタックを作成します。
- スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するまで待機し、プランをレビューします。
変更するには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」アクションを再度実行します。
- これ以上の変更が必要ない場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
- GitHubでTerraformコードを使用してデプロイします。
- GitHubにアクセスします。
- リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
READMEドキュメントの指示に従います。