効果
Elasticsearchの構築やスキーマーの設計はできるけど、本番ノードデザインについての情報がすくないので、参考になればいいと思います。
構成
マスターノード3台
クライアントノード2台
データノード3台
10Gくらいのドキュメントを登録済み
受付ノードって
queryを受けつけたノードの事。
受け付けたノードの仕事は重い。
Elasticsearchは受けつけたノードが「データノードから集約してクライアントに返却する役目」をもっているらしい。
実験してみたら、aggregation(集計)でメモリを大量に消費した。
そして、簡単に落ちる。
受付ノードのメモリは大量に積んでおこう
受付ノードはaggregation(集計)を実施するので大量に積んだほうがいい。
でもJAVAが32G以上認識するとオーバーヘッドがかかるからやめましょうって記載があるのでJVMは32Gまで。
あとaggregationはバケットをメモリ限界まで簡単に作れるから注意しないとダメっぽい。
受付ノードは分けるべき??
社内集計用、集計サービス、それ以外と受付ノードは分けよう
理由はメモリ不足で落ちると全部持っていかれてしまうから。
社内の業務で集計したら、「全サービス止まりました」ってことになってしまう。
クライアントノードを受け付けノードにすべき?
受付ノードにすべき。
データノードで受け付けるとメモリを食ってしまって落ちる可能性が上がる。
マスターノードで受け付けるとメモリを食ってしまって落ちる可能性が上がる。
クライアントノードって言うくらいなんだから受付させとこう。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html
に書いてあるけど「ロードバランサとして機能します」って・・・
でも集計しちゃう&メンテナンス性が上がるので、純粋なバランサはあった方がいいかも。
Elasticsearch(5.4.2)実験記事
サービス無停止でデータノードを安全に削除してメンテする。
ダウンタイムなしてデータノードを追加できる?
アクセスノード、受付ノードの振る舞いについて
辞書ファイル、スクリプトファイルの配置ノードは?
2データノードをダウン(障害だ)させて復活させる
1データノード・1シャードで作ると早かった