Elasticsearchのクラスタ構成を試す

クラスタを組んでみます。

ノードは3つで、それぞれをmaster-eligable、data、Ingestの役割を割り当ててみます。

Node | Elasticsearch Guide [7.16] | Elastic

環境はdocker-composeを使いました。

$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

以下、 docker-compose.yml です。

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    ports:
      - 9200:9200
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
    networks:
      - elastic
networks:
  elastic:
    driver: bridge

それぞれのコンテナの環境変数で定義している、 discovery.seed_hostsクラスタを構成する時に相手を探しに行く先になります。ホスト名、またはIPアドレスを指定します。ポートを省略すると、9300と解釈されます。

https://www.elastic.co/guide/en/elasticsearch/reference/7.16/important-settings.html#unicast.hosts

cluster.initial_master_nodesクラスタを初期構築する際に、 master を決める投票に参加するノードを指定します。

https://www.elastic.co/guide/en/elasticsearch/reference/7.16/important-settings.html#initial_master_nodes

docker-compose up で起動させ、動作確認してみます。

$ curl -XGET http://localhost:9200/_cluster/health?pretty
{
  "cluster_name" : "es-docker-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

"status" : "green" となっているので、正しく起動できたようです。