使用Docker快速安装Elasticsearch和Kibana(单节点和多节点)

成品

https://github.com/romiogaku/docker-es 的中文翻译如下:

使用方式

单节点

启动

$ docker-compose -f docker-compose.yml up -d

停下来

$ docker-compose -f docker-compose.yml down

Elasticssearch:localhost:9200
Kibana:localhost:5601
将在本地启动。

三个节点 gè

开动

$ docker-compose -f docker-compose-cluster.yml up -d

中止

$ docker-compose -f docker-compose-cluster.yml down

Elasticssearch 节点1:localhost:9200
Elasticssearch 节点2:localhost:9201
Elasticssearch 节点3:localhost:9202
Kibana:localhost:5601 上线运行。

docker-compose.yml 的释义如下:

这是适用于单节点的。

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    ports:
      - 9200:9200
    volumes:
      - ./docker/elasticsearch/data:/usr/share/elasticsearch/data
      - ./docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    networks: [elastic]
    environment:
      - discovery.type=single-node
  kibana:
    image: docker.elastic.co/kibana/kibana-oss:6.3.2
    ports:
      - 5601:5601
    networks: [elastic]
networks:
  elastic:

为了不使用X-Pack,Kibana使用了oss镜像。
为了持久化Elasticsearch数据,将主机的./docker/elasticsearch/data和客户机的/usr/share/elasticsearch/data进行挂载。
为了灵活地修改配置文件,也将elasticsearch.yml进行挂载。

elasticsearch.yml 的中文释义是什么?

这个是针对单节点使用的。

cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1

docker-compose-cluster.yml 的中文翻译为:docker 组合集群.yml

这是一个由三个节点组成的。

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: elasticsearch
    environment:
      - node.name=node1
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2,elasticsearch3"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./docker/elasticsearch/config/elasticsearch-cluster.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
    networks: [elastic]
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: elasticsearch2
    environment:
      - node.name=node2
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2,elasticsearch3"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./docker/elasticsearch/config/elasticsearch-cluster.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9201:9200
    networks: [elastic]
  elasticsearch3:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: elasticsearch3
    environment:
      - node.name=node3
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2,elasticsearch3"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./docker/elasticsearch/config/elasticsearch-cluster.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9202:9200
    networks: [elastic]
  kibana:
    image: docker.elastic.co/kibana/kibana-oss:6.3.2
    ports:
      - 5601:5601
    networks: [elastic]
networks:
  elastic:

我参考了基于官方文件的2节点结构的docker-compose.yml文件。
在我的环境中,如果不将”ES_JAVA_OPTS=-Xms256m -Xmx256m”调低,启动就会失败。

弹性搜索集群配置文件 elasticsearch-cluster.yml

这是一个由3个节点组成的系统。

cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 2

将集群配置的最小主节点数设置为2。
这意味着在集群中必须指定超过半数的master-eligible节点(能够成为主节点的节点,默认情况下,所有节点都是master-eligible)的数量。
如果不指定超过半数的节点,可能会发生脑裂问题。

广告
将在 10 秒后关闭
bannerAds