Skip to content
This repository has been archived by the owner on May 9, 2022. It is now read-only.

github/elasticsearch-srv-discovery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SRV Discovery Plugin for Elasticsearch

Use SRV records for Elasticsearch discovery, like the ones Consul provides.

Looking for a plugin that uses the Consul API directly? Check out lithiumtech/elasticsearch-consul-discovery.

Installation

Based on the version of Elasticsearch that you're running, pick the compatible plugin version (e.g. 1.5.1), then run this command:

bin/plugin install srv-discovery --url https://github.com/github/elasticsearch-srv-discovery/releases/download/1.5.1/elasticsearch-srv-discovery-1.5.1.zip

Verify that the plugin was installed:

$ bin/plugin -l
Installed plugins:
    - srv-discovery

$ curl localhost:9200/_cat/plugins?v
name  component             version type url
Pluto srv-discovery         ...     j

Compatibility

The SRV Discovery plugin is known to be compatible with these versions of Elasticsearch:

Elasticsearch SRV Discovery plugin
1.7.3 1.5.1
1.7.2 1.5.1
1.7.1 1.5.1
1.7.0 1.5.1
1.6.2 1.5.1
1.6.1 1.5.1
1.6.0 1.5.1
1.5.2 1.5.1
1.5.1 1.5.1
1.5.0 1.5.1

Configuration

Key Example Description
discovery.srv.query elasticsearch-9300.service.consul The query string to use when querying for SRV records.
discovery.srv.servers 127.0.0.1:8600 DNS Servers to contact. Can be an array or a comma-delimited string. Port numbers are optional.
discovery.srv.protocol tcp Which protocol to use. Options are tcp and udp. Default is tcp.

Note: Consul will return maximum 3 records when using UDP queries. All records are returned when using TCP.

Simple Example

discovery:
  type: srv
  srv:
    query: elasticsearch-9300.service.consul

Complex Example

discovery:
  type: srv
  srv:
    query: elasticsearch-9300.service.consul
    protocol: tcp
    servers:
      - 127.0.0.1:8600
      - 192.168.1.1

Development

To see the effects of a change on a real Elasticsearch instance, build the package and install it like so:

plugin="/Users/you/elasticsearch-<version>/bin/plugin"
name="srv-discovery"
zip="file:///Users/you/elasticsearch-srv-discovery/build/distributions/elasticsearch-srv-discovery-<version>.zip"

gradle distZip || exit 1
$plugin remove $name
$plugin install $name --url $zip