前提

安装好 dockerdocker-compose 的环境,具体安装教程查看链接

下载镜像

  1. docker pull elasticsearch:5.6.11

创建所需的文件和目录

  1. mkdir -p /root/softdata/elasticsearch/config
  2. cd /root/softdata/elasticsearch/config
  3. touch es-node1.yml # 节点 1 配置文件
  4. touch es-node2.yml # 节点 2 配置文件
  5. touch es-node3.yml # 节点 3 配置文件
  6. cd ..
  7. touch docker-compose-yaml # docker-compose 启动文件

编写节点配置文件

es-node1.yml 配置文件

  1. cluster.name: es-cluster
  2. node.name: es-node1
  3. path.data: /usr/share/elasticsearch/data
  4. path.logs: /usr/share/elasticsearch/logs
  5. bootstrap.memory_lock: false
  6. bootstrap.system_call_filter: false
  7. network.host: 0.0.0.0
  8. http.port: 9200
  9. discovery.zen.ping.unicast.hosts: ["es-node2","es-node3"]
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"

es-node2.yml 配置文件

  1. cluster.name: es-cluster
  2. node.name: es-node2
  3. path.data: /usr/share/elasticsearch/data
  4. path.logs: /usr/share/elasticsearch/logs
  5. bootstrap.memory_lock: false
  6. bootstrap.system_call_filter: false
  7. network.host: 0.0.0.0
  8. http.port: 9200
  9. discovery.zen.ping.unicast.hosts: ["es-node1","es-node3"]
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"

es-node3.yml 配置文件

  1. cluster.name: es-cluster
  2. node.name: es-node3
  3. path.data: /usr/share/elasticsearch/data
  4. path.logs: /usr/share/elasticsearch/logs
  5. bootstrap.memory_lock: false
  6. bootstrap.system_call_filter: false
  7. network.host: 0.0.0.0
  8. http.port: 9200
  9. discovery.zen.ping.unicast.hosts: ["es-node1","es-node2"]
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"

docker-compose 配置文件

  1. version: '3'
  2. services:
  3. es-node1:
  4. image: elasticsearch:5.6.11
  5. container_name: es-node1
  6. restart: always
  7. environment:
  8. - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
  9. ulimits:
  10. memlock:
  11. soft: -1
  12. hard: -1
  13. volumes:
  14. - /root/softdata/elasticsearch/data/es-node1:/usr/share/elasticsearch/data
  15. - /root/softdata/elasticsearch/logs/es-node1:/usr/share/elasticsearch/logs
  16. - /root/softdata/elasticsearch/plugins/es-node1:/usr/share/elasticsearch/plugins
  17. - /root/softdata/elasticsearch/config/es-node1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  18. ports:
  19. - 9200:9200
  20. es-node2:
  21. image: elasticsearch:5.6.11
  22. container_name: es-node2
  23. restart: always
  24. environment:
  25. - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
  26. ulimits:
  27. memlock:
  28. soft: -1
  29. hard: -1
  30. volumes:
  31. - /root/softdata/elasticsearch/data/es-node2:/usr/share/elasticsearch/data
  32. - /root/softdata/elasticsearch/logs/es-node2:/usr/share/elasticsearch/logs
  33. - /root/softdata/elasticsearch/plugins/es-node1:/usr/share/elasticsearch/plugins
  34. - /root/softdata/elasticsearch/config/es-node2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  35. ports:
  36. - 9201:9200
  37. es-node3:
  38. image: elasticsearch:5.6.11
  39. container_name: es-node3
  40. restart: always
  41. environment:
  42. - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
  43. ulimits:
  44. memlock:
  45. soft: -1
  46. hard: -1
  47. volumes:
  48. - /root/softdata/elasticsearch/data/es-node3:/usr/share/elasticsearch/data
  49. - /root/softdata/elasticsearch/logs/es-node3:/usr/share/elasticsearch/logs
  50. - /root/softdata/elasticsearch/plugins/es-node1:/usr/share/elasticsearch/plugins
  51. - /root/softdata/elasticsearch/config/es-node3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  52. ports:
  53. - 9202:9200

启动容器

  1. docker-compose up -d

安装 analysis-ik 中文分词器

  1. docker exec -it es-node1 bash
  2. cd /usr/share/elasticsearch/plugins
  3. wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.11/elasticsearch-analysis-ik-5.6.11.zip
  4. unzip elasticsearch-analysis-ik-5.6.11.zip
  5. mv elasticsearch/ analysis-ik/

安装完成之后我们需要重启 elasticsearch 集群,重启命令

  1. docker-compose restart

验证集群状态

验证集群节点数,其中master代表该节点为主节点,正常情况下为 3 个节点

  1. curl http://<IP>:9200/_cat/nodes?v

验证集群健康状态,statusgreen表示正常

  1. curl http://<IP>:9200/_cat/health?v