Browse Source

Documentation for file-based discovery plugin (#20462)

Documentation for file-based discovery plugin.

Closes #20458
Ali Beyad 9 years ago
parent
commit
730f9058a1
2 changed files with 99 additions and 0 deletions
  1. 93 0
      docs/plugins/discovery-file.asciidoc
  2. 6 0
      docs/plugins/discovery.asciidoc

+ 93 - 0
docs/plugins/discovery-file.asciidoc

@@ -0,0 +1,93 @@
+[[discovery-file]]
+=== File-Based Discovery Plugin
+
+The file-based discovery plugin uses a list of hosts/ports in a `unicast_hosts.txt` file 
+in the `config/discovery-file` directory for unicast discovery.
+
+[[discovery-file-install]]
+[float]
+==== Installation
+
+This plugin can be installed using the plugin manager:
+
+[source,sh]
+----------------------------------------------------------------
+sudo bin/elasticsearch-plugin install discovery-file
+----------------------------------------------------------------
+
+The plugin must be installed on every node in the cluster, and each node must
+be restarted after installation. Note that installing the plugin will add a
+`discovery-file` directory to the `config` folder, and a default `unicast_hosts.txt`
+file that must be edited with the correct unicast hosts list before starting the node.
+
+[[discovery-file-remove]]
+[float]
+==== Removal
+
+The plugin can be removed with the following command:
+
+[source,sh]
+----------------------------------------------------------------
+sudo bin/elasticsearch-plugin remove discovery-file
+----------------------------------------------------------------
+
+The node must be stopped before removing the plugin.
+
+[[discovery-file-usage]]
+[float]
+==== Using the file-based discovery plugin
+
+The file-based discovery plugin provides the ability to specify the 
+unicast hosts list through a simple `unicast_hosts.txt` file that can
+be dynamically updated at any time.  The discovery type for this plugin
+is still the default `zen` plugin, so no changes are required to the 
+`elasticsearch.yml` config file.  This plugin simply provides a facility
+to supply the unicast hosts list for zen discovery through an external
+file that can be updated at any time by a side process.  
+
+For example, this gives a convenient mechanism for an Elasticsearch instance 
+that is  run in docker containers to be dynamically supplied a list of IP 
+addresses to connect to for zen discovery when those IP addresses may not be 
+known at node startup.  
+
+Note that the file-based discovery plugin is meant to augment the unicast
+hosts list in `elasticsearch.yml` (if specified), not replace it.  Therefore,
+if there are valid unicast host entries in `discovery.zen.ping.unicast.hosts`,
+they will be used in addition to those supplied in `unicast_hosts.txt`.
+
+Anytime a change is made to the `unicast_hosts.txt` file, even as Elasticsearch
+continues to run, the new changes will be picked up by the plugin and the
+new hosts list will be used for the next pinging round for master election.
+
+Upon installation of the plugin, a default `unicast_hosts.txt` file will
+be found in the `$CONFIG_DIR/discovery-file` directory.  This default file
+will contain some comments about what the file should contain.  All comments
+for this file must appear on their lines starting with `#` (i.e. comments
+cannot start in the middle of a line).
+
+[[discovery-file-format]]
+[float]
+==== unicast_hosts.txt file format
+
+The format of the file is to specify one unicast host entry per line.  
+Each unicast host entry consists of the host (host name or IP address) and
+an optional transport port number.  If the port number is specified, is must 
+come immediately after the host (on the same line) separated by a `:`. 
+If the port number is not specified, a default value of 9300 is used.  
+
+For example, this is an example of `unicast_hosts.txt` for a cluster with
+four nodes that participate in unicast discovery, some of which are not
+running on the default port:
+
+[source,txt]
+----------------------------------------------------------------
+10.10.10.5
+10.10.10.6:9305
+10.10.10.5:10005
+# an IPv6 address
+[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9301
+----------------------------------------------------------------
+
+Host names are allowed instead of IP addresses (similar to 
+`discovery.zen.ping.unicast.hosts`), and IPv6 addresses must be 
+specified in brackets with the port coming after the brackets. 

+ 6 - 0
docs/plugins/discovery.asciidoc

@@ -21,6 +21,10 @@ The Azure Classic discovery plugin uses the Azure Classic API for unicast discov
 
 The Google Compute Engine discovery plugin uses the GCE API for unicast discovery.
 
+<<discovery-file,File-based discovery>>::
+
+The File-based discovery plugin allows providing the unicast hosts list through a dynamically updatable file.
+
 [float]
 ==== Community contributed discovery plugins
 
@@ -37,3 +41,5 @@ include::discovery-azure-classic.asciidoc[]
 
 include::discovery-gce.asciidoc[]
 
+include::discovery-file.asciidoc[]
+