高可用性CockroachDBクラスタのデプロイ
CockroachDBは、トランザクションおよび一貫性のあるキー/値ストア上に構築された分散SQLデータベースです。
アーキテクチャ
このリファレンス・アーキテクチャでは、Oracle Cloud Infrastructure ComputeインスタンスでのCockroachDBの一般的な3ノード・デプロイメントを示します。パブリック・ロード・バランサは、これら3つのノードにワークロードを分散するために使用されます。
次の図は、この参照アーキテクチャを示しています。

図cockroachdb-oci.pngの説明
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、広範囲の距離を(国間または大陸間で)分離できます。
- 可用性ドメイン
可用性ドメインは、リージョン内のスタンドアロンの独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。可用性ドメインは、電源や冷却などのインフラストラクチャや内部可用性ドメイン・ネットワークを共有しません。したがって、ある可用性ドメインで障害が発生しても、リージョン内の他の可用性ドメインに影響する可能性はほとんどありません。
- フォルト・ドメイン
フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各可用性ドメインには、独立した電源とハードウェアを備えた3つのフォルト・ドメインがあります。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションでは、フォルト・ドメイン内の物理サーバー障害、システム・メンテナンスおよび電源障害を許容できます。
- 仮想クラウド・ネットワーク(VCN)およびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定するカスタマイズ可能なソフトウェア定義ネットワークです。従来のデータ・センター・ネットワークと同様に、VCNを使用すると、ネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる複数の重複しないCIDRブロックを含めることができます。VCNは、リージョンまたは可用性ドメインにスコープ指定できるサブネットにセグメント化できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレス範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。
このアーキテクチャでは、あるパブリック・サブネットを使用して、パブリック・ロード・バランサと、CockroachDBを実行する3つのコンピュート・インスタンスをホストします。
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、あるエントリ・ポイントからVCNからアクセス可能な複数のサーバーへの自動トラフィック分散を提供します。このアーキテクチャには、TCPポート8080用とTCPポート26257用の2つのリスナーがあります。ロード・バランサには、これらの2つのリスナーに対応する2つのバックエンド・セットもあります。
- セキュリティ・リスト
サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。
このアーキテクチャでは、クライアントがHTTPおよびCockroachDBリスナー・トラフィックにアクセスできるように、TCPポート8080および26257のイングレス・ルールを使用します。
推奨事項
実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として次の推奨事項を使用します。
- コンピュート・シェイプ
このアーキテクチャでは、VM.Standard.E3.Flex ComputeシェイプのOracle Linux 7.9 OSイメージを使用します。メモリー、コアまたはネットワーク帯域幅を増やす必要がある場合は、アプリケーションに別のシェイプを選択できます。
- VCN
-
VCNを作成する場合、VCNのサブネットにアタッチする予定のリソースの数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準のプライベートIPアドレス空間内にあるCIDRブロックを使用します。
-
プライベート接続を設定する予定の他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ内)と重複しないCIDRブロックを選択します。
-
VCNを作成した後、CIDRブロックを変更、追加および削除できます。
-
サブネットを設計する際には、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能できる同じサブネットにアタッチします。
- リージョナル・サブネットを使用します。
-
- ロード・バランサの帯域幅
ロード・バランサの作成時に、固定帯域幅を提供する事前定義済のシェイプを選択するか、帯域幅範囲を設定してサービスがトラフィック・パターンに基づいて帯域幅を自動的にスケーリングできるようにするカスタム(柔軟な)シェイプを指定できます。どちらの方法でも、ロード・バランサの作成後にいつでもシェイプを変更できます。
注意事項
- 拡張性
定足数を実現するために必要な最小ノード数は3であるため、このアーキテクチャーは3つのノードを配備します。アプリケーションのパフォーマンスまたは高可用性の要件を満たすために、より多くのノードが必要になる場合があります。
コンピュート・ノードを追加し、それらをロード・バランサ・バックエンド・セットに含めることで、データベース・クラスタを水平方向にスケーリングできます。
各コンピュート・ノードのVMシェイプを変更することで、データベース・クラスタを垂直方向にスケーリングできます。コア数が多いシェイプを使用すると、コンピュート・インスタンスおよびネットワーク帯域幅に割り当てられるメモリーも増加します。
- 可用性
フォルト・ドメインは、単一の可用性ドメイン内で最高の回復力を提供します。このアーキテクチャでは、ある可用性ドメインにアプリケーションをデプロイするかわりに、複数の可用性ドメインを持つリージョンで同じタスクを実行するコンピュート・インスタンスをデプロイできます。この設計では、冗長性を導入することで単一点障害を解消します。アーキテクチャのデプロイ後、ロード・バランサのパブリックIPアドレスを使用し、組込みSQLクライアントを使用してCockroachDBに接続します。
- コスト
データベースに必要なコア、メモリーおよびネットワーク帯域幅に基づいて、仮想マシン(VM)シェイプを選択します。1つのコア・シェイプから始めることができ、データベース・ノードのパフォーマンス、メモリーまたはネットワーク帯域幅を増やす必要がある場合は、後でVMシェイプを変更できます。
デプロイ
このリファレンス・アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして使用できます。GitHubからコードをダウンロードし、特定の要件にあわせてカスタマイズすることもできます。
- Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします。
をクリックします。まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- スタックをデプロイするリージョンを選択します。
- 画面に表示されるプロンプトと指示に従ってスタックを作成します。
- スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するまで待機し、計画を確認します。
変更を加えるには、「Stack Details」ページに戻り、「Edit Stack」をクリックして、必要な変更を行います。次に、プラン処理を再度実行します。
- 追加の変更が必要ない場合は、「Stack Details」ページに戻り、「Terraform Actions」をクリックして、「Apply」を選択します。
- GitHubのTerraformコードを使用してデプロイします。
- GitHubに移動します。
- リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
READMEドキュメントの手順に従います。