メニュー

Elasticsearch アーキテクチャ:7 つの主要コンポーネント

 : Elasticsearch とは何か

目次

このページを共有

Yifat Perry
Yifat Perry

Elasticsearch は、Apache Lucene を基盤とする無料のオープンソース検索および分析エンジンでございます。Elasticsearch は分散型であり、数値、テキスト、構造化データ、非構造化データ、地理空間データなど、あらゆるデータ タイプをサポートいたします。また、シンプルな REST API を備え、スケーラビリティと高速検索を可能にいたします。

Elasticsearch は Elastic Stack の重要なコンポーネントであり、このスタックはデータの収集、保存、加工、可視化、分析を行う一連のオープンソース ツール群で構成されております。代表的なツールには、Elasticsearch、Logstash、Kibana(ELK) が含まれます。

Elasticsearch のアーキテクチャは、Lucene のインデックス構築を活用しつつ、分散型モデルを組み合わせることで実現されております。このモデルでは、アーキテクチャを シャード(Shards) と呼ばれる小さなコンポーネントに分割し、複数のノードに分散配置することが可能です。

Elasticsearch の主な活用用途とは何か

Elasticsearch は、マルチテナンシーをサポートし、ほぼリアルタイムでの検索を可能にするスケーラブルな検索・分析ソリューションでございます。あらゆる種類のデータおよび複数の拠点からのデータを検索することができ、エンジンはデータを収集・保存し、事前定義された手動または自動のマッピングに従ってインデックス化いたします。

分散型アーキテクチャを採用しているため、ユーザーは膨大なデータをほぼリアルタイムで検索・分析することが可能です。また、検索プロセスにおけるスケーラビリティを提供し、単一のマシンから始めて数百台規模へ拡張することができます。

Elasticsearch を活用することで、ドキュメント検索、商品検索、メール検索など、フルテキスト検索を含む完全な検索クラスターを構築することが可能です。ただし、これには高度な知識と経験が求められます。さらに、Elasticsearch はデータを保存し、その後の分割・分析を待機させる用途や、メトリクス、トレース、ログといったカテゴリにデータを分類する用途にも適しております。

Elasticsearch は、各種クラウド環境およびオンプレミスの両方で導入が可能です。お客様ご自身でホストすることも、AWS Elasticsearch のようなクラウドサービスを利用することも可能です。

Elasticsearch はどのように機能するのか

Elasticsearch は 「Beats」 と呼ばれるコンポーネントを利用して、さまざまなソースから生データを収集し、Elasticsearch に転送いたします。データが転送されると、エンジンはデータ取り込みプロセスを実行し、データの分析・正規化・付加情報の追加を行い、インデックス化の準備を整えます。インデックス化が完了すると、ユーザーは複雑なクエリを実行でき、さらに アグリゲーション 機能を活用することで複雑なデータの集計を取得することが可能です。

可視化および管理のために、Elastic Stack には Kibana というツールが用意されております。Kibana を利用することで、リアルタイムのデータ可視化(円グラフ、地図、折れ線グラフ、ヒストグラムなど)を作成いただけます。また、ダッシュボードの共有や Canvas を用いた動的なカスタム インフォグラフィックの作成、Elastic Maps による地理空間データの可視化も可能です。

Elasticsearch アーキテクチャ:主要コンポーネント

Elasticsearch のアーキテクチャは、スケーラビリティと柔軟性を重視して設計されています。主要なコンポーネントは、Elasticsearch クラスター、ノード、シャード、そしてアナライザーです.

Elasticsearch クラスター

Elasticsearch クラスターは、データを保存するノードのグループで構成されます。クラスターを起動する際にノードの数や、仮想サーバーまたは物理サーバーの IP アドレスを指定することができます。これらの情報は、すべての設定を含む config/elasticsearch.yml ファイルに記載されています。

Elasticsearch クラスター内のノードは相互に接続されており、それぞれがクラスター データの一部を保持します。任意の数のクラスターを実行できますが、通常は 1 つのノードで十分です。新しいノードが起動されると、システムは自動的にクラスターを作成します。ノードはすべて、検索およびインデックス作成を担当するクラスター全体のプロセスに参加します。

Elasticsearch ノード

一般的に、ノードという用語はクラスターの一部であるサーバーを指します。Elasticsearch においてノードはマシンではなくインスタンスを意味します。つまり、1 台のマシン上で複数のノードを実行することが可能です。Elasticsearch インスタンスは 1 つ以上のクラスター ベースのノードで構成されます。デフォルトでは、Elasticsearch インスタンスを起動すると同時に 1 つのノードも起動されます。

Elasticsearch ノードを構成するための 3 つの主要なオプションは以下の通りです:

  • Elasticsearch マスターノード – Elasticsearch クラスターを制御し、1 回につき 1 つのクラスター ステータスを処理し、それを他のすべてのノードに転送します。マスターノードは、インデックスの作成や削除を含むクラスター全体の操作に責任を持ちます。
  • Elasticsearch データノード – データおよび反転インデックスを保持します。これはノードの標準構成です。
  • Elasticsearch クライアントノード – 負荷分散として機能し、受信リクエストをさまざまなクラスター ノードに転送します。

ポート 9200 と 9300

Elasticsearch のアーキテクチャは、通信に 2 つの主要なポートを使用します:

  • ポート 9200 – クラスター外部からのリクエストをフィルタリングするために使用されます。このプロセスは、クエリ、インデックス作成などの REST API を介して入ってくるリクエストを処理します。
  • ポート 9300 – ノード間通信に使用されます。これはトランスポート層で行われます。

Elasticsearch シャード

各インデックスに保存できるドキュメント数に制限はありません。しかし、インデックスがホスティング サーバーのストレージ制限を超えると、Elasticsearch がクラッシュする可能性があります。この問題を回避するために、インデックスは「シャード」と呼ばれる小さな部分に分割されます。

シャードは小さくスケーラブルなインデックス単位であり、Elasticsearch アーキテクチャの構成要素として機能します。シャードによって処理を分散させ、全体的なパフォーマンスを向上させることができます。インデックス作成後に、任意の数のシャードを生成できます。各シャードは独立した Lucene インデックスとして機能し、クラスター内の任意の場所にホストすることが可能です.

Elasticsearch レプリカ

Elasticsearch において、レプリカとはインデックス シャードのコピーを指します。レプリカはバックアップおよび復旧のための耐障害メカニズムとして機能します。レプリカは、元の(プライマリ)シャードを保持しているノード上に配置されることはありません。

可用性を確保するために、レプリカは異なる場所に保存されます。インデックス作成後にレプリカ数を定義でき、必要な数だけレプリカを作成することが可能です。つまり、プライマリ シャードよりも多くのレプリカを保存することができます。

Elasticsearch アナライザー

アナライザーは、フレーズや表現を構成要素に分解します。これはインデックス作成プロセス中に行われます。各アナライザーはトークナイザーと複数のトークンフィルターで構成されています。特定の表現に対して、トークナイザーは文字列をあらかじめ定義された用語に分割することができます。

Elasticsearch ドキュメント

Elasticsearch のアーキテクチャは、JSON オブジェクトとして保存されたドキュメントの取得をサポートしています。Elasticsearch はネスト構造をサポートしており、複雑なデータやクエリの処理を容易にします。情報を追跡するために、Elasticsearch はメタデータを表す先頭にアンダースコアが付いたキーを使用します。

Cloud Volumes ONTAP による Elasticsearch ストレージ

NetApp Cloud Volumes ONTAP は、エンタープライズ向けのリーダー的なストレージ管理ソリューションであり、AWS、Azure、Google Cloud 上で安全で実績のあるストレージ管理サービスを提供します。Cloud Volumes ONTAP は最大 368TB までの容量をサポートし、ファイルサービス、データベース、DevOps、その他のエンタープライズ ワークロードなど、さまざまなユースケースを強力な機能セットで支援します。その機能には、高可用性、データ保護、ストレージ効率、Kubernetes との統合などが含まれます。

Cloud Volumes ONTAP は、クラウドにおける SAN ストレージ管理のための高度な機能をサポートし、NoSQL データベースシステムや、クラウド ビッグデータ分析クラスターから直接アクセスできる NFS 共有をサポートします. 

さらに、Cloud Volumes ONTAP は、シンプロビジョニング、データ圧縮、重複排除といったストレージ効率化機能を提供し、ストレージ需要とコストを最大 70% 削減することが可能です。

NetApp を活用した Elasticsearch 導入の最適化についてさらに詳しく知るには、ぜひ本日中に無料の E-Book『Cloud Volumes ONTAP で Elasticsearch のパフォーマンスとコストを最適化』をダウンロードしてください。

AWS S3 セキュリティとデータ保護

Amazon S3 は、ビジネスクリティカルかつプライマリなデータ保存のために設計された、非常に堅牢なストレージインフラを提供します。データオブジェクトは、AWS リージョン内の複数のデバイスおよびデータセンターに冗長的に分散保存され、最大限の可用性とデータ耐久性を確保することを目的としています。

高いデータ可用性と耐久性

Amazon S3 は、冗長性と自動復旧に対する包括的なアプローチでデータを保護します:

  • 保存されたオブジェクトに対して年間 99.99% の可用性および 99.999999999%(イレブンナイン)の耐久性を保証
  • 2 つのアベイラビリティゾーンにおける同時障害を想定した設計
  • Amazon S3 の公式サービスレベルアグリーメント(SLA)によるサポート

オブジェクトをアップロードする際、または PUT や PUT Object – Copy で保存する際、Amazon S3 は複数のアベイラビリティゾーンにわたりデータを同期的に複製します。保存後、S3 はデータの整合性を継続的に監視し、冗長性の損失があれば自動的に修復します。

バージョニング:誤った変更からの保護

さらに、Amazon S3 はオブジェクトのバージョニングをサポートしています。これにより、オブジェクトのすべてのバージョンを管理、復元、および保護することが可能です。バージョニングによって以下が実現できます:

  • アプリケーションエラーやユーザーエラー発生時に以前のバージョンを復元
  • デフォルトでは常に最新バージョンのオブジェクトが提供される
  • 明示的なリクエストによって、古いバージョンを取得することも可能

この機能は、監査対応、バックアップポリシー、ディザスタリカバリ要件を満たす必要がある企業にとって特に価値があります。

データ暗号化

保存時(at rest)および転送時(in transit)のデータ暗号化:

  • サーバー側暗号化(SSE):Amazon S3 が保存時の暗号化と取得時の復号を処理
  • クライアント側暗号化:アップロード前に暗号化を実施し、鍵やツールはお客様自身が管理
  • 転送保護:TLS/SSL または VPN ベースのネットワークを利用して実施

Amazon S3 向け AWS PrivateLink

PrivateLink を利用することで、VPC 内にエンドポイントを作成し、独自の Virtual Private Cloud (VPC) ネットワークから直接 S3 にアクセスできます。これにより、VPN、AWS Direct Connect、または VPC ピアリング経由で接続でき、機密性の高いワークロードをパブリックインターネットから分離することが可能になります。

アイデンティティとアクセス管理 (IAM)

デフォルトでは、すべてのリソース(バケット、オブジェクト、サブリソース)はプライベートです。アクセス方法は以下の通りです:

  • ユーザーベースの IAM ポリシーによるアクセス
  • バケットまたはオブジェクトレベルでのリソースベースポリシーによるアクセス

きめ細かい権限モデルにより、機密性の高い企業データを保護し、ロールベースで制御することができます。例:DevOps、データアナリスト、外部パートナー向け。

Amazon S3 にデータをアップロードまたは取得するアプリケーションを開発する際には、特に大規模データや分散アクセスの場合、パフォーマンスの最適化が重要となります。以下の推奨事項は、Amazon S3 の性能を最大限に引き出すために役立ちます。

パフォーマンス測定とボトルネックの特定

Amazon EC2 インスタンスから Amazon S3 にアクセスする場合、以下のリソースを監視する必要があります:

  • CPU 使用率
  • ネットワークスループット
  • メモリ需要(DRAM)

要件に応じて、より高い帯域幅や計算能力を持つ他の EC2 インスタンスタイプを検討することが有効です。

さらに、パフォーマンス分析において以下のメトリクスも重要です:

  • DNS レイテンシと名前解決時間
  • HTTP 応答時間と転送速度

分析には、一般的な HTTP 解析ツールやネットワーク監視ツールを利用できます。

ストレージアクセスの水平スケーリング

Amazon S3 は高度に分散されたストレージシステムであり、その特性を活かした利用が求められます。パフォーマンスを向上させる効果的な方法のひとつは、複数の並列接続による水平スケーリングです。

  • 単一のネットワーク接続でのリクエスト送信は避けること。
  • 複数の接続を介して同時にリクエストを送信し、利用可能な帯域幅を効率的に活用する。
  • Amazon S3 は、1 つのバケットに対する同時接続数を制限していない。

この戦略は、大量データや高トランザクション頻度を扱う高負荷アプリケーションに特に適しています。

Amazon S3 Transfer Acceleration を活用する

Amazon S3 Transfer Acceleration を活用することで、大容量データを長距離でもより迅速かつ安全に転送できます。

本機能は、Amazon CloudFront のグローバルエッジネットワークを利用し、最適化されたルート経由でターゲットの S3 バケットにデータを配信します。

Transfer Acceleration が特に有効なユースケース:

  • 複数のリージョンから中央の S3 バケットへのアップロード
  • 数ギガバイトからテラバイト規模のデータ転送
  • 国際的またはグローバルな利用シナリオ

ヒント:
S3 Transfer Acceleration Speed Comparison Tool を使用することで、ブラウザ上から異なる AWS リージョンに対して、加速あり・なしのアップロード速度を比較できます。

レイテンシーに敏感なアプリケーション向けのリトライ戦略

Amazon S3 は高度に分散されたインフラストラクチャ上に構築されているため、初回のリクエストが遅延する場合があります。再試行(リトライ)を行うことで、より高性能な代替パスが選択されるケースもあります。

  • 積極的なリトライ動作は、レイテンシーの安定化に寄与する可能性があります。
  • AWS SDK には、タイムアウトやリトライメカニズムに関する設定オプションが用意されています。

これらの設定は、アプリケーションの許容範囲に合わせて調整してください。

Cloud Volumes ONTAP を活用した AWS ストレージ最適化

NetApp Cloud Volumes ONTAP は、クラウドにおけるエンタープライズ向けストレージ管理のリーディングソリューションです。

AWS、Azure、Google Cloud 上で安全かつ実績ある機能を提供し、ペタバイト規模までスケール可能です。ファイルサービス、データベース、DevOps ワークロード、コンテナ化アプリケーションなど、多様なユースケースをサポートします。

主要な機能:

  • 高可用性とデータ保護
  • Thin Provisioning、圧縮、重複排除によるストレージ最適化(最大 70% の削減効果)
  • Kubernetes 環境との統合
  • 企業の重要業務ワークロードへの対応

参考資料:
Cloud Volumes ONTAP によるストレージ効率化の成功事例集 – コスト削減の可能性を解説。

ガイドブック:
無料ダウンロード「AWS へのエンタープライズ移行 5 フェーズ」

Drift chat loading