Elasticsearchでの1ホスト複数ノード設定

現在、 elasticsearch 7.8.1でサービスを構築していますが、訳あって1インスタンスしかサーバが用意できず、その中でも対障害性を高める設定ができないか考えています。

せめてストレージの故障を回避するために、1ホスト、1クラスタ でも同一ホスト上に複数ノードを作成する前提で下記を考えています。
(1) 各ノードの data.pathを分ける
(2) replica =1( 1 以上)にする

1ホスト、1クラスタ、複数 nodeで起動するにあたって
現状は標準のYMLに下記設定を追加していますが、 起動しません。

cluster.name: my-clustar
discovery.seed_hosts:  ["hostname"]
node.name: node-1
cluster.initial_master_nodes: node-1

ノードプロセス起動時に nodename を指定して各ノードを起動しています。

elasticsearch -d -Enode.master=true  -Enode.data=false -Enode.name=node-1
elasticsearch -d -Enode.master=false -Enode.data=true  -Enode.name=node-2

しかし、node-1は起動しますが、node-2の起動が ”master not discover yet" とログを出して起動しません。

どなたかこの条件で起動する ymlの内容、起動パラメータを教えていただけないでしょうか。

また(1)(2)の効果のほども薄いですが、他にも良い設定があれば教えていただけないでしょうか。よろしくおねがいします。

実際にこのような環境作ったことないので分からないのですが、discovery.seed_hostsがhost名しか指定していないことから「node-1」「node-2」どちらもhostname:9300になり判別できないのではないでしょうか?

1インスタンスで、冗長してつくるとマシーンリソースが下がるので1台の方がまだ耐障害性高い気もします。(本来は3台構成が良い)またdockerとかを使えばここら辺考えなくて済む気もします。

アドバイスありがとうございます。いろんな情報を調べても1ホスト複数ノードという事例はなく、いろいろ考えると対障害性が上がるようにも思えないですね。

Dockerを使うか、複数ホストでの運用ができるように切り替えます。

ありがとうございました。

1 Like