实战案例丨用 Docker Compose 快速运行一个 3 节点 Elasticsearch 集群

640?wx_fmt=jpeg

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散!


说在前面


使用 Docker 在笔记本电脑上安装 Elasticsearch 集群进行测试是非常方便的。在这篇文章中,我将向您展示如何快速、简便地在 docker 上运行一个3节点的 elasticsearch 集群进行测试。

&


先决条件


我们需要设置“vm.max_map_count”内核参数:

$ sudo sysctl -w vm.max_map_count=262144


若要永久设置此值,请将其添加到“/etc/sysctl.conf”并使用“sudo sysctl -p”命令重新加载。

640?wx_fmt=png


Docker Compose


我们将引用的 docker compose 文件:

version: '2.2'

services:

  elasticsearch:

    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4

    container_name: elasticsearch

    environment:

      - cluster.name=docker-cluster

      - bootstrap.memory_lock=true

      - http.cors.enabled=true

      - http.cors.allow-origin=*

      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    ulimits:

      memlock:

        soft: -1

        hard: -1

    volumes:

      - esdata1:/home/ruan/workspace/docker/elasticsearch/data

    ports:

      - 9200:9200

    networks:

      - esnet

  elasticsearch2:

    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4

    container_name: elasticsearch2

    environment:

      - cluster.name=docker-cluster

      - bootstrap.memory_lock=true

      - http.cors.enabled=true

      - http.cors.allow-origin=*

      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

      - "discovery.zen.ping.unicast.hosts=elasticsearch"

    ulimits:

      memlock:

        soft: -1

        hard: -1

    volumes:

      - esdata2:/home/ruan/workspace/docker/elasticsearch/data

    networks:

      - esnet

  elasticsearch3:

    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4

    container_name: elasticsearch3

    environment:

      - cluster.name=docker-cluster

      - bootstrap.memory_lock=true

      - http.cors.enabled=true

      - http.cors.allow-origin=*

      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

      - "discovery.zen.ping.unicast.hosts=elasticsearch"

    ulimits:

      memlock:

        soft: -1

        hard: -1

    volumes:

      - esdata3:/home/ruan/workspace/docker/elasticsearch/data

    networks:

      - esnet

 

  kibana:

    image: 'docker.elastic.co/kibana/kibana:6.3.2'

    container_name: kibana

    environment:

      SERVER_NAME: kibana.local

      ELASTICSEARCH_URL: http://elasticsearch:9200

    ports:

      - '5601:5601'

    networks:

      - esnet

 

  headPlugin:

    image: 'mobz/elasticsearch-head:5'

    container_name: head

    ports:

      - '9100:9100'

    networks:

      - esnet

 

volumes:

  esdata1:

    driver: local

  esdata2:

    driver: local

  esdata3:

    driver: local

 

networks:

  esnet:


现在,只需确保我们在 compose 文件中所引用的路径是真实存在的,在我展示的实例中,其路径是“/home/ruan/workspace/docker/elasticsearch/data”。

640?wx_fmt=png


部  署


使用 docker compose 来部署 elasticsearch 集群:

$ docker-compose up


它将在前台运行,您可以在控制台看到其输出结果。

640?wx_fmt=png


测试 Elasticsearch


接下来,让我们运行几个查询。首先,检查群集运行状况 api:

$ curl http://127.0.0.1:9200/_cluster/health?pretty

{

  "cluster_name" : "docker-cluster",

  "status" : "green",

  "timed_out" : false,

  "number_of_nodes" : 3,

  "number_of_data_nodes" : 3,

  "active_primary_shards" : 1,

  "active_shards" : 2,

  "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

}


创建一个复制计数为2的索引:

$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/test -d '{"number_of_replicas": 2}'


将文档提取到 elasticsearch:

$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/test/docs/1 -d '{"name": "ruan"}'

{"_index":"test","_type":"docs","_id":"1","_version":1,"result":"created","_shards":{"total":3,"successful":3,"failed":0},"_seq_no":0,"_primary_term":1}

查看索引:

$ curl http://127.0.0.1:9200/_cat/indices?v

health status index                       uuid                   pri rep docs.count docs.deleted store.size pri.store.size

green  open   test                        w4p2Q3fTR4uMSYBfpNVPqw   5   2          1            0      3.3kb          1.1kb

green  open   .monitoring-es-6-2018.04.29 W69lql-rSbORVfHZrj4vug   1   1       1601           38        4mb            2mb


640?wx_fmt=png


Kibana


Kibana 也包含在应用栈中,可以通过“http://localhost:5601/”访问它,如下图所示:


640?wx_fmt=png

640?wx_fmt=png


Elasticsearch Head UI


我喜欢直接使用 RESTFul API,但是如果您想使用 UI 与 Elasticsearch 进行交互,你可以通过“http:// localhost:9100/”访问它,如下图所示:


640?wx_fmt=png


640?wx_fmt=png


删除群集


因为它在前台运行,所以您只需按下“ctrl + c”就可以持续地将数据保存在我们的 compose 文件中。当您再次启动集群时,数据仍然会存在。


点击文尾处“阅读原文”了解更多Elasticsearch 的相关信息!


640?wx_fmt=png


点击下列标题,阅读更多干货



如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!

    640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值