また、この別ファイルの変更は、動的に反映されるようなので、試してみました。
検証で使用した環境は、「Docker で Elasticsearch5.1 と head を試す」で作成したElasticsearch5.1です。(Docker)
プラグインのインストール
File-Based Discovery Plugin を以下のようにしてインストールします。
root@c40d8d6e3c73:/usr/share/elasticsearch# bin/elasticsearch-plugin install discovery-file -> Downloading discovery-file from elastic [=================================================] 100% -> Installed discovery-file
1台でクラスタ
まず、1台でクラスタを起動してみます。
File-Based Discovery Plugin を使用するには、elasticsearch.yml に discovery.zen.hosts_provider を追加します。discovery.zen.ping.unicast.hosts を使用していた場合はコメントアウトします。
# クラスタのノードを指定 #discovery.zen.ping.unicast.hosts: ["elasticsearch_es51a_1","elasticsearch_es51b_1","elasticsearch_es51b_2"] discovery.zen.hosts_provider: file
File-Based Discovery Plugin が参照するファイルは $CONFIG_DIR/discovery-file/unicast_hosts.txt です。
unicast_hosts.txt にホスト名(またはIPアドレス)を記載します。
9300ポート使用していれば、ポートは省略できます。ポートを指定したい場合は、"hostname:port" 形式で記述します。
ログには以下のように表示されます。
unicast_hosts.txt にホスト名(またはIPアドレス)を記載します。
9300ポート使用していれば、ポートは省略できます。ポートを指定したい場合は、"hostname:port" 形式で記述します。
# cat config/discovery-file/unicast_hosts.txt elasticsearch_es51a_1
これで、Elasticsearch を起動して、head で見ると下図のとおり。
ログには以下のように表示されます。
[2017-03-05T02:41:56,219][INFO ][o.e.p.PluginsService ] [c40d8d6e3c73] loaded plugin [discovery-file] [2017-03-05T02:41:56,281][WARN ][o.e.d.d.f.FileBasedDiscoveryPlugin] Using discovery.type setting to set hosts provider is deprecated. Set "discovery.zen.hosts_provider: file" instead [2017-03-05T02:41:56,682][WARN ][o.e.d.s.g.GroovyScriptEngineService] [groovy] scripts are deprecated, use [painless] scripts instead [2017-03-05T02:42:01,025][INFO ][o.e.n.Node ] [c40d8d6e3c73] initialized [2017-03-05T02:42:01,026][INFO ][o.e.n.Node ] [c40d8d6e3c73] starting ... [2017-03-05T02:42:01,293][INFO ][o.e.t.TransportService ] [c40d8d6e3c73] publish_address {172.18.0.3:9300}, bound_addresses {[::]:9300} [2017-03-05T02:42:01,304][INFO ][o.e.b.BootstrapCheck ] [c40d8d6e3c73] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks