Oracle Cloud Infrastructure Kubernetes Engineクラスタへの高可用性MySQL Databaseシステムの導入

Oracle MySQL Database Serviceは、Oracle Cloud Infrastructure(OCI)内に導入されたフルマネージド・データベース・サービスで、セキュアなクラウドネイティブ・アプリケーションを迅速に導入しようとしているオペレーターと開発者をサポートします。OCI Service Operator for Kubernetes (OSOK)を使用して、Oracle Cloud Infrastructure Kubernetes Engineクラスタ(OCI Kubernetes EngineまたはOKE)クラスタで高可用性MySQL DatabaseシステムのデプロイにデプロイされたアプリケーションのMySQL Databaseシステムをプロビジョニングおよび管理できます。

OSOKを使用すると、OKE管理者用のMySQL Databaseシステムの管理が簡略化され、Kubernetesパッケージ管理ツールであるHelmを使用して、MySQL Database Systemインスタンスをアプリケーションとともにデプロイできます。

アーキテクチャ

このリファレンス・アーキテクチャは、データベースに対して可用性の高いMySQL Databaseシステムを使用するOKEクラスタにデプロイされたアプリケーションを示しています。MySQL Databaseシステムは、OSOKを使用してOKEクラスタ内から完全にデプロイおよび管理されます。

OSOKを使用すると、MySQL Databaseシステムをカスタム・リソース定義(CRD)としてモデル化し、それらの定義をOKEクラスタに適用することで、MySQL Databaseシステムを標準のKubernetes CLI - kubectlを使用して他のKubernetesリソースと同様に管理できます。

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

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

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

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

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

  • リージョン

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

  • 可用性ドメイン

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

  • フォルト・ドメイン

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

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

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

  • OCI Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (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データベースに対して高度なリアルタイム分析を直接実行できます。

  • ネットワークアドレス変換(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

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

考慮事項

Oracle Cloudにアプリケーションをデプロイする場合は、次のオプションを可用性を考慮してください。

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

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

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

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

  • セキュリティ

    使用可能なOCIリソースにアクセスできるユーザーを制限するポリシーを使用します。OKEは、OCI Identity and Access Management (IAM)と統合されています。IAMは、ネイティブOCIアイデンティティ機能による簡単な認証を提供します。

デプロイ

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

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

謝辞

作成者: Chiping Hwang