OpenSearch ドメインのデータノード数について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。

今回は、Amazon OpenSearch Service ドメインで、データノード数について解説します。

リスク

Amazon OpenSearch Serviceは、ログ分析、全文検索、アプリケーション監視などに使われるマネージドサービスです。OpenSearchドメインは、データを保存・検索するデータノードと、クラスターの管理を行うマスターノードで構成されます。高可用性と耐障害性を確保するためには、これらのノードを適切な数だけ配置することが非常に重要です。

OpenSearchドメインで、データノードが3つ未満しか配置されていない場合、以下のような重大なリスクが発生します。

  • データの可用性低下: OpenSearchでは、データの複製(レプリカ)を作成することで、ノード障害に備えます。データノードが3つ以上あれば、レプリカを異なるノードに分散配置できます。しかし、データノードが2つしかない場合、1つのノードに障害が発生すると、データの一部が利用できなくなる可能性があります。これは、データの可用性の低下に直結します。
  • 耐障害性の欠如: ノードが少ないと、ハードウェア障害やネットワーク問題が発生した際に、ドメイン全体が機能不全に陥るリスクが高まります。例えば、2つのデータノードのうち1つがダウンした場合、残りの1つのノードにすべての負荷が集中し、クラスターの安定性が損なわれ、パフォーマンスが大幅に低下します。
  • ブルー/グリーンデプロイメントの失敗: OpenSearchドメインのバージョンアップグレードや設定変更を行う際、AWSは既存のドメインに新しいノードを追加し、データを移行する「ブルー/グリーンデプロイ」方式を採用します。データノードが少ないと、このデプロイプロセス中にリソースが不足し、デプロイが失敗するリスクが高まります。
  • ノードのマスター候補機能の喪失: データノードは、専用マスターノードがダウンした場合に、マスターノードの役割を引き受ける候補(マスター候補)としても機能します。データノードが少ないと、マスター候補のリソースも不足し、マスターノード障害からの回復が困難になります。

対策

OpenSearchドメインで、データノードを3つ以上配置することは、上記のすべてのリスクを軽減し、クラスターの高可用性、耐障害性、および運用の健全性を確保するための重要なベストプラクティスです。

  • 高可用性の確保: データノードを3つ以上配置することで、データのレプリカを異なるノードに分散させ、ノード障害時でもデータにアクセス可能な状態を維持できます。
  • 耐障害性の向上: ノード障害が発生した場合でも、残りのノードが負荷を吸収できるため、ドメイン全体の安定性を保つことができます。
  • スムーズな運用: ノード数が十分にあると、アップグレードや設定変更の際に必要なリソースが確保され、ブルー/グリーンデプロイメントが安定して実行できます。
  • マスターノードのリソースを確保: マスターノードのリソースが不足した場合でも、データノードがマスター候補として機能することで、クラスターの操作が継続されます。

修復方法

OpenSearchドメインでデータノードを3つ以上配置する方法は、AWSコンソールまたはTerraformで行えます。この設定は、ドメインの作成時または既存のドメインの更新時に設定できます。

AWSコンソールでの修復手順

AWSコンソールを使用して、OpenSearchドメインのデータノード数を変更します。

  1. OpenSearchサービスへ移動: AWSコンソールにログインし、Amazon OpenSearch Service サービスを開きます。
  2. ドメインを選択: 左側のナビゲーションペインで「ドメイン」を選択し、設定を変更したいドメインを選択します。
  3. 「編集」ボタンをクリック: ドメインの詳細ページで「アクション」から「ドメインの編集」を選択します。
  4. 「ノードの設定」の変更:
    • 編集画面が表示されたら、「ノードの設定」セクションまでスクロールします。
    • データノードの数」で、ノードの数を3以上に設定します。
      • 推奨: 3つのアベイラビリティゾーンにわたってノードを配置し、高可用性をさらに高めることを推奨します。
    • 専用マスターノードを有効化」のチェックボックスにチェックを入れ、専用マスターノードの数を3に設定します。
  5. 変更の適用:
    • 変更内容を確認し、「変更を送信」をクリックして、設定を保存します。

これで、OpenSearchドメインに3つ以上のデータノードが配置され、高可用性と耐障害性が向上します。

Terraformでの修復手順

TerraformでOpenSearchドメインのデータノード数を変更するには、aws_opensearch_domain リソースの cluster_config ブロック内の instance_count パラメータを更新します。

# (前提) OpenSearchドメインに関連するVPC, サブネット等は別途定義
resource "aws_opensearch_domain" "my_opensearch_domain" {
  domain_name = "my-secure-opensearch-domain"
  engine_version = "OpenSearch_2.5" # 適切なバージョンを指定
  
  cluster_config {
    # **重要: データノードの数を3以上に設定**
    instance_type = "t3.medium.search"
    instance_count = 3
    
    # **重要: 専用マスターノードを3つ以上設定**
    dedicated_master_enabled = true
    dedicated_master_type    = "t3.medium.search"
    dedicated_master_count   = 3
    
    # 3つのアベイラビリティゾーンにノードを配置
    zone_awareness_enabled   = true
    zone_awareness_config {
      availability_zone_count = 3
    }
  }

  ebs_options {
    ebs_enabled = true
    volume_size = 20
  }

  tags = {
    Name        = "MyOpenSearchDomain"
    Environment = "Production"
  }
}

上記のTerraformコードでは、aws_opensearch_domain リソースの cluster_config ブロックで、instance_count3に、dedicated_master_count3に設定しています。

terraform applyを実行することで、OpenSearchドメインのノード設定が更新され、高可用性が確保されます。

最後に

この記事では、OpenSearchドメインでデータノードが3つ未満であることのリスクと、それを修正することの重要性について解説しました。データノードを3つ以上配置することは、ドメインの安定性、データの可用性、およびスムーズな運用を実現する上で不可欠です。 貴社のOpenSearchドメインは、十分な数のデータノードで運用されていますか?この機会にぜひ設定を確認・強化してみてください。 こちらの内容の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。運用が非常にラクに出来る製品になっていますのでぜひ興味がある方はお問い合わせお待ちしております。

最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る