Docker-compose 启动ElasticSearch集群

  • Post author:
  • Post category:其他


ES 虽然是基于 JVM 上运行的 Java 项目,但它在启动、运行时会对一些环境参数,如虚拟 内存数、文件句柄等有所要求。

在运行时,ES 会占用大量的内存进行一系列的数据处理。建议开启内存锁定的配置,将它所占 用的内存进行锁定。在docker中通过以下方式开启:

  ulimits:
  		memlock:
        soft: -1
        hard: -1

在 Linux 里万物皆文件,线程也可以看作一种特殊的文件。在启动时 ES 会要求系统中可打开 的文件句柄数超过 65535。在docker中通过以下方式打开:

  ulimits:
      nofile:
        soft: 65536
        hard: 65536

ES 节点在启动时,会根据集群的信息以及自己的身份(配置在 $ES_HOME/config/elasticsear ch.yml 里)尝试加入集群,其主要参数为:

node.name 节点自身的标记,集群内唯一。
discovery.seed_hosts 集群节点发现会尝试访问的节点列表。
cluster.initial_master_nodes 集群第一次初始化时的候选 master 节点列表。 2、discovery.seed_hosts 集群节点发现会尝试访问的节点列表。
cluster.name 集群名称,节点会在同一网段中尝试找到和自己同一个集群的其他节点组建/ 加入现有集群。


GitHub传送阵



环境变量

.env

### ElasticSearch 7.17 ########################
ELASTICSEARCH_PATH=./data/elasticsearch/
ELASTICSEARCH_LOG=./logs/elasticsearch/

### Kibana 7.17 ########################
KIBANA_PORT=5601
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=123456

### IPV4_ADDRESS ##############################
SUBNET=172.19.0.0/16
KIBANA_IP=172.19.0.6
ES01_IP=172.19.0.7
ES02_IP=172.19.0.8
ES03_IP=172.19.0.9



ElasticSearch

elasticsearch/Dockerfile

FROM docker.elastic.co/elasticsearch/elasticsearch:7.17.0
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone



Kibana

kibana/Dockerfile

FROM docker.elastic.co/kibana/kibana:7.17.0



Yaml 文件

compose.yml

version: '3.8'

services:
  ### ElasticSearch ######################################################################
  es01:
    build:
      context: ./elasticsearch
    container_name: es01
    environment:
      - node.name=es01
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - cluster.name=docker-cluster
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - ${ELASTICSEARCH_PATH}/01/data:/usr/share/elasticsearch/data
      - ${ELASTICSEARCH_PATH}/01/plugins:/usr/share/elasticsearch/plugins
      - ${ELASTICSEARCH_LOG}/01:/usr/share/elasticsearch/logs
    ports:
      - 9200:9200
    networks:
      backend:
        ipv4_address: ${ES01_IP}

  es02:
    build:
      context: ./elasticsearch
    container_name: es02
    environment:
      - node.name=es02
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - ${ELASTICSEARCH_PATH}/02/data:/usr/share/elasticsearch/data
      - ${ELASTICSEARCH_PATH}/02/plugins:/usr/share/elasticsearch/plugins
      - ${ELASTICSEARCH_LOG}/02:/usr/share/elasticsearch/logs
    networks:
      backend:
        ipv4_address: ${ES02_IP}

  es03:
    build:
      context: ./elasticsearch
    container_name: es03
    environment:
      - node.name=es03
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - ${ELASTICSEARCH_PATH}/03/data:/usr/share/elasticsearch/data
      - ${ELASTICSEARCH_PATH}/03/plugins:/usr/share/elasticsearch/plugins
      - ${ELASTICSEARCH_LOG}/03:/usr/share/elasticsearch/logs
    networks:
      backend:
        ipv4_address: ${ES03_IP}

  ### kibana ############################################################################
  kibana:
    build:
      context: ./kibana
    container_name: kibana
    environment:
      - SERVER_NAME=kibana
      - XPACK_MONITORING_ENABLED=true
      - ELASTICSEARCH_HOSTS=http://es01:9200
      - I18N_LOCALE=zh-CN
      - ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME}
      - ELASTICSEARCH_PASSWORD="${ELASTICSEARCH_PASSWORD}"
    ports:
      - ${KIBANA_PORT}:5601
    networks:
      backend:
        ipv4_address: ${KIBANA_IP}
networks:
  backend:
    driver: bridge
    ipam:
      config:
        - subnet: ${SUBNET}



启动

[root@ogenes01 docker-elk]# docker-compose up -d
[+] Running 4/0
 ⠿ Container es03    Running   			0.0s
 ⠿ Container es02    Running     		0.0s
 ⠿ Container es01    Running				0.0s
 ⠿ Container kibana  Running				0.0s



测试

127.0.0.1:9200

image-20230426133037279

127.0.0.1:5600

image-20230426133456607



版权声明:本文为weixin_39857866原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。