やさぐれSEの技術メモ

皆が辛い思いをしないようにハマったポイントなどを書きます

Elasticsearchのインストール及び設定 その3 構成を検討する

はじめに

定義ファイルや起動コマンドの解説をする前にどういった構成を作成するか記述します。

下記事項はインストールする前に検討した方が良いです。
記事の投稿順を間違えました。。。。

Elasticsearch 構成の検討

実際に設定をしていく前にElasticsearchの構成を検討します。
今回は下記のような構成を考えました。

f:id:gitya107:20180512102711p:plain

(1)サーバ(インスタンス)の台数について
デフォルトのシャード設定がプライマリ5:レプリカ1と言うことで、何も考えずにデータを投入した際に1サーバに1シャード配置される想定で5台としています。
次の項目で記載するマスター適格ノードの考察から、クラスタを構成する場合はサーバ3台以上が望ましいと思われます。

(2)マスター適格ノードの数について
図中ではMasterと記載しています。
後ほど記載するのですが、定義ファイル内にマスター適格ノードの最低数を定義する項目があります。
その算出式が「マスター適格ノードの合計数 / 2 +1」となっています。この式から最低数が2ノードであり、1ノード障害を考慮すると3ノードかなと思われます。

一般的なクラスタでも3台以上の構成というのが多いので、今回は3ノードとします。
(どこかにElasticsearchのクラスタ構成に関する記述があったと思いますので、後で探してみようと思います。)

(3)データノードの数について
上述した通りデフォルトのシャード分割から5つとしています。

1ノードのメモリ上限が30GBですので、サーバ1台にデータノードを複数保持することも可能です。
ただし、サーバ障害やメンテナンス時に停止となるノード数が複数になってしまうため、データ欠損の可能性があがります。
このあたりはシャード/性能/冗長性を考慮する必要があり、一度構成を組んで実際に使いながら検討をした方が良いです。
格納されるデータの内容や量、ユーザ数や利用状況等々により変わってくるので、事前に検討は難しいと思います。

(4)クライアントノード(Ingest node)
マスターと同様の考えで3ノードとしています。

サーバの構成について

物理か仮想か

Elasticsearchの性能設計はどうしたら良いのか色々と調べましたが、これと言った算出根拠はありませんでした。
色々なところに書いていますが、格納されるデータの内容や量、ユーザ数や利用状況等々で必要性能が変わってくるため、公式ではあまり触れていないのかなと類推しています。

上記もあり柔軟にリソースの変更が可能な「仮想」をオススメします。

リソースの検討

サーバのリソースを検討します。

公式HP

www.elastic.co

(1)CPU
2コア~8コア以上のCPUが推奨となっています。

(2)メモリ
下記の条件から検討します。

  • OSの半分のメモリをElasticsearchに割り当てる
  • マスター及びクライアントノード:4~8GB
  • データノード:~30GB

RHEL#3がノード数最多なので、こちらを基準とします。
最大でElasticsearchとして46GB使用しますので、96GB(92だが一般的なメモリで搭載したケースを考慮)のメモリが必要です。

(3)ディスク
ディスクI/OがElasticsearchの性能に大きく影響するようです。

SSDをお勧めします。
Elasticsearchの データは他のところに原本がある/データを分散保持しており、他から再構成が可能 という特性からRAIDは組まなくても大丈夫かなと思います。

データの保存場所は定義ファイルで複数指定できるので、複数本のSSDを接続して容量を確保できます。