高可用性Apache Cassandraクラスタのデプロイ

Apache Cassandraは、オープンソースのNoSQLデータベースです。直線的にスケーリングされ、データは複数のノードに自動的にレプリケートされます。Oracle Cloud InfrastructureApache Cassandraクラスタを実行し、エンタープライズ・グレードの信頼性、セキュリティおよび運用上の柔軟性を利用します。

アーキテクチャ

このリファレンス・アーキテクチャでは、Oracle Cloud Infrastructureコンピュート・インスタンスで実行されているApache Cassandraクラスタの6ノード・デプロイメントを示します。

cassandra-oci.epsの説明が続きます
図cassandra-oci.epsの説明

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

  • リージョン

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

    このアーキテクチャのすべてのコンポーネントは、単一のリージョンにデプロイされます。

  • 可用性ドメイン

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

  • フォルト・ドメイン

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

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

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

  • Apache Cassandraクラスタ

    このアーキテクチャは、Oracle Cloud Infrastructure Computeインスタンスで実行されている3つのシード・ノードと3つの非シード・ノードで構成されるApache Cassandraクラスタを示しています。ノードは、単一の可用性ドメイン内のフォルト・ドメインに分散されます。すべてのコンピュート・インスタンスは、単一のパブリック・サブネットにアタッチされます。

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

    このアーキテクチャのインターネット・ゲートウェイでは、パブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。

  • セキュリティ・リスト

    サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

    このアーキテクチャには、TCPポート7000、7001、7199、9042および9160のイングレス・ルールが含まれます。Apache Cassandraは、クラスタ(SSLが有効な場合はポート7001)とJMXの場合はポート7199間の通信にポート7000を使用します。ポート9042はクライアント・ポートで、9160はネイティブ・トランスポート・ポートです。

  • ルート表

    仮想ルート表には、通常はゲートウェイを介して、サブネットからVCN外部の宛先にトラフィックをルーティングするルールが含まれます。

推奨事項

実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として、次の推奨事項を使用します。

  • コンピュート・シェイプとOS

    このアーキテクチャ用に提供されているTerraformテンプレートは、Oracle Linux 7.8を実行するコンピュート・インスタンスをデプロイします。要件に応じて、コンピュート・インスタンスの適切なシェイプを選択します。Apache Cassandraノードのメモリーが多いほど、読取りパフォーマンスが向上します。CPUの数が多いほど、書込みパフォーマンスが向上します。

  • VCN

    VCNを作成する場合、VCNのサブネットにアタッチする予定のリソースの数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準のプライベートIPアドレス空間内にあるCIDRブロックを使用します。

    プライベート接続を設定する予定の他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ内)と重複しないCIDRブロックを選択します。

    VCNを作成した後、CIDRブロックを変更、追加および削除できます。

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

    リージョナル・サブネットを使用する。

  • セキュリティ
    • Oracle Cloud Guardを使用して、Oracle Cloud Infrastructureのリソースのセキュリティをプロアクティブに監視および維持します。Cloud Guardでは、定義可能なディテクタ・レシピを使用して、リソースにセキュリティ上の弱点がないかどうかを調べ、オペレータおよびユーザーのリスクのあるアクティビティを監視します。構成の誤りやセキュアでないアクティビティが検出された場合、Cloud Guardは修正処理を推奨し、定義可能なレスポンダ・レシピに基づいてそれらの処理を実行します。

    • 最大限のセキュリティを必要とするリソースの場合、Oracleではセキュリティ・ゾーンを使用することをお薦めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースは、パブリック・インターネットからアクセスできず、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新する場合、Oracle Cloud Infrastructureは、セキュリティ・ゾーン・レシピのポリシーに対して操作を検証し、ポリシーに違反する操作を拒否します。

注意事項

このアーキテクチャを実装する場合は、次の要因を考慮してください。

  • 拡張性

    このアーキテクチャでは、各フォルト・ドメインにApache Cassandraシード・ノードと非シード・ノードをデプロイします。アプリケーションのパフォーマンスまたは高可用性の要件を満たすために、より多くのノードが必要になる場合があります。

    コンピュート・インスタンスを追加することで、Apache Cassandraクラスタを水平方向にスケーリングできます。シード・ノードはフォルト・ドメイン間で分散できます。

    各コンピュート・インスタンスのシェイプを変更することで、クラスタを垂直方向にスケーリングできます。コア数が多いシェイプを使用すると、コンピュート・インスタンスおよびそのネットワーク帯域幅に割り当てられるメモリーが増加します。

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

    このアーキテクチャでは、同じタスクを実行するコンピュート・インスタンスが複数のフォルト・ドメインに冗長的に分散されます。この設計により、トポロジ内のシングル・ポイント障害が排除されます。

    アーキテクチャのデプロイ後、PuTTYやGit BashなどのSSHツールを使用して、Apache CassandraノードのパブリックIPアドレスに接続できます。Cassandra問合せ言語(CQL)は、Apache CassandraデータベースでのDDLおよびDML操作に使用できます。

  • コスト

    ベア・メタル・シェイプにより、読取りおよび書込みのパフォーマンスが向上します。アプリケーションのパフォーマンスを向上させる必要がない場合は、データベースに必要なコア、メモリーおよびネットワーク帯域幅に基づいてVMシェイプを選択できます。Apache Cassandraノードの1コアのシェイプから始めて、パフォーマンス、メモリーまたはネットワーク帯域幅を増やす必要がある場合は後でシェイプを変更できます。

デプロイ

この参照アーキテクチャのデプロイに必要なコードは、GitHubで入手できます。シングルクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、Terraform CLIを使用してコードをカスタマイズし、アーキテクチャをデプロイします。

  • Oracle Cloud Infrastructure Resource Managerを使用してデプロイします。
    1. Oracle Cloudへのデプロイをクリックます

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

    2. 条件をレビューして受け入れます。
    3. スタックをデプロイするリージョンを選択します。
    4. 画面に表示されるプロンプトと指示に従ってスタックを作成します。
    5. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
    6. ジョブが完了するまで待機し、計画を確認します。

      変更を加えるには、「Stack Details」ページに戻り、「Edit Stack」をクリックして、必要な変更を行います。次に、プラン処理を再度実行します。

    7. 追加の変更が必要ない場合は、「Stack Details」ページに戻り、「Terraform Actions」をクリックして、「Apply」を選択します。
  • Terraform CLIを使用してデプロイします。
    1. GitHubに移動します。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの手順に従います。

変更ログ

このログには、重要な変更がリストされます。