Docker部署ElaticSearch集群

Love The Way You Lie 2022-03-12 14:59 363阅读 0赞

ElaticSearch官方网址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

拉取镜像

  1. docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.1

启动容器

内核参数优化

Linux下/etc/sysctrl.conf增加如下设置:sysctl -w vm.max_map_count=262144

  1. grep vm.max_map_count /etc/sysctl.conf
  2. vm.max_map_count=262144

这是最低要求,至于多少合适,还未实践

启动单体模式(开发用)

  1. docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.6.1

集群模式

官方给出例子,是基于docker-compose管理得,其配置文件如下:

  1. version: '2.2'
  2. services:
  3. elasticsearch:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
  5. container_name: elasticsearch
  6. environment:
  7. - cluster.name=docker-cluster
  8. - bootstrap.memory_lock=true
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. ulimits:
  11. memlock:
  12. soft: -1
  13. hard: -1
  14. volumes:
  15. - esdata1:/usr/share/elasticsearch/data
  16. ports:
  17. - 9200:9200
  18. networks:
  19. - esnet
  20. elasticsearch2:
  21. image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
  22. container_name: elasticsearch2
  23. environment:
  24. - cluster.name=docker-cluster
  25. - bootstrap.memory_lock=true
  26. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  27. - "discovery.zen.ping.unicast.hosts=elasticsearch"
  28. ulimits:
  29. memlock:
  30. soft: -1
  31. hard: -1
  32. volumes:
  33. - esdata2:/usr/share/elasticsearch/data
  34. networks:
  35. - esnet
  36. volumes:
  37. esdata1:
  38. driver: local
  39. esdata2:
  40. driver: local
  41. networks:
  42. esnet:

这里看来,2个节点是布置在同一机器节点上,如果所有节点在同一个机器上,集群也没多大意义了。
那么怎么配置为多机器节点呢?

首先es集群是怎样加入新的节点的呢?

在新节点的配置文件中,通过discovery.zen.ping.unicast.hosts属性来配置集群可以发现的主节点:

  1. discovery.zen.ping.unicast.hosts

所以把配置文件分成2份:
docker-compose1.yaml

  1. version: '2.2'
  2. services:
  3. elasticsearch:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
  5. container_name: elasticsearch
  6. environment:
  7. - cluster.name=docker-cluster
  8. - bootstrap.memory_lock=true
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. ulimits:
  11. memlock:
  12. soft: -1
  13. hard: -1
  14. volumes:
  15. - esdata1:/usr/share/elasticsearch/data
  16. ports:
  17. - 9200:9200
  18. networks:
  19. - esnet
  20. volumes:
  21. esdata1:
  22. driver: local
  23. networks:
  24. esnet:

docker-compose2.yaml

  1. version: '2.2'
  2. services:
  3. elasticsearch2:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
  5. container_name: elasticsearch2
  6. environment:
  7. - cluster.name=docker-cluster
  8. - bootstrap.memory_lock=true
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. - "discovery.zen.ping.unicast.hosts=xxx.xxx.xxx.xxx"
  11. ulimits:
  12. memlock:
  13. soft: -1
  14. hard: -1
  15. volumes:
  16. - esdata2:/usr/share/elasticsearch/data
  17. networks:
  18. - esnet
  19. volumes:
  20. esdata2:
  21. driver: local
  22. networks:
  23. esnet:

此时1节点的ip为:xxx.xxx.xxx.xxx。可是当启动容器时,节点2的容器居然去访问172.18.0.2的机器,这个明显是节点1的容器的内部ip,网络无法通信。

发布外网ip

在配置文件中加入”network.publish_host=xxx.xxx.xxx.xxx“,配置如下:

  1. version: '2.2'
  2. services:
  3. elasticsearch:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
  5. container_name: elasticsearch
  6. environment:
  7. - cluster.name=docker-cluster
  8. - bootstrap.memory_lock=true
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. - "network.publish_host=xxx.xxx.xxx.xxx"
  11. ulimits:
  12. memlock:
  13. soft: -1
  14. hard: -1
  15. volumes:
  16. - esdata1:/usr/share/elasticsearch/data
  17. ports:
  18. - 9200:9200
  19. networks:
  20. - esnet
  21. volumes:
  22. esdata1:
  23. driver: local
  24. networks:
  25. esnet:

此时发布容器,就没有问题了,就可以通过宿主机器IP进行通信了。
通信是双向的,记着所有节点都要配置这个选项,否则加入集群时还是会失败。

这里docker所用的网络配置为bridge模式的。本来想配置host模式,没有成功,不知为何,之后再进行查看。如有知晓者,欢迎指教。

中文分词器的安装

进入容器内部

  1. docker exec -it 容器名 /bin/bash

安装命令,版本号要和ES对应上

  1. elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.1/elasticsearch-analysis-ik-6.6.1.zip

发表评论

表情:
评论列表 (有 0 条评论,363人围观)

还没有评论,来说两句吧...

相关阅读