1. 程式人生 > >使用Docker-Compose建立ElasticSearch 6.4版本單機環境(含叢集版)

使用Docker-Compose建立ElasticSearch 6.4版本單機環境(含叢集版)

配置docker-compose.yml檔案如下:

elasticsearch:
    image: elasticsearch:6.4.0
    environment:
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - bootstrap.memory_lock=true
      - transport.host=0.0.0.0
      - transport.tcp.port=9300
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - network.host=0.0.0.0
      - node.name=es1
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - ./es:/opt/elasticsearch/data
      - ./elasticsearch.yml:/opt/elasticsearch/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300

其中nofile:soft:必須配,否則執行es會報max file is too low。如下圖所示:

另外,也會報下面圖示錯誤:vm.max_map_count is too low

https://blog.csdn.net/jiankunking/article/details/65448030

不同Docker機器,不同IP的叢集環境設定,至少3臺機器如下:

es-master:
    image: elasticsearch:6.4.0
    environment:
      - cluster.name=docker-cluster-dev
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - network.host=0.0.0.0
      - node.name=es1
      - node.master=true
      - node.data=true
      - node.ingest=true
      - network.publish_host=192.168.30.57
      - http.port=9200
      - transport.tcp.port=9300
      - discovery.zen.ping.unicast.hosts=192.168.30.57:9300,192.168.30.45:9300,192.168.30.45:9301
      - discovery.zen.minimum_master_nodes=1
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - ./es:/opt/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
    restart: always

另外一臺機器:

es-node1:
    image: elasticsearch:6.4.0
    environment:
      - cluster.name=docker-cluster-dev
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - network.host=0.0.0.0
      - node.name=es2
      - node.master=true
      - node.data=true
      - node.ingest=true
      - network.publish_host=192.168.30.45
      - http.port=9200
      - transport.tcp.port=9300
      - discovery.zen.ping.unicast.hosts=192.168.30.57:9300,192.168.30.45:9300
      - discovery.zen.minimum_master_nodes=1
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - ./es:/opt/elasticsearch/data
    ports:
      - 9300:9300
      - 9200:9200
    restart: always
es-node2:
    image: elasticsearch:6.4.0
    environment:
      - cluster.name=docker-cluster-dev
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - network.host=0.0.0.0
      - node.name=es3
      - node.master=false
      - node.data=true
      - node.ingest=true
      - network.publish_host=192.168.30.45
      - http.port=9201
      - transport.tcp.port=9301
      - discovery.zen.ping.unicast.hosts=192.168.30.57:9300,192.168.30.45:9300,192.168.30.45:9301
      - discovery.zen.minimum_master_nodes=1
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - ./es:/opt/elasticsearch/data
    ports:
      - 9301:9301
      - 9201:9201
    restart: always
 

最後注意使用linux命令#>lokkit --port=9300:tcp,#>lokkit --port=9200:tcp,開放埠