首页 > 其他分享 >Docker创建ElasticSearch集群以及常见问题

Docker创建ElasticSearch集群以及常见问题

时间:2022-08-20 11:15:03浏览次数:76  
标签:常见问题 name memory cluster elasticsearch es01 ElasticSearch Docker es

本篇文章演示在WSL2中通过DockerCompose搭建ES集群,解决其中遇到的问题。

虚拟内存最大映射数

第一个问题是几乎所有机器上搭建ES集群都会遇到的,即虚拟内存最大映射数默认为65535,而ES需要更大,最少是262144,所以你需要设置这个参数

sudo vim /etc/sysctl.conf

添加下面这句

vm.max_map_count=262144

执行以下命令

➜  ~ sudo sysctl -p
vm.max_map_count=262144

内存不足

第二个问题,三个ES节点总是有一个莫名其妙的自动退出,如果你docker start重启它,会导致更多的节点退出,这是由于内存不足所致。

从WSL2的层面,你可以通过在%UserProfile%路径下创建一个.wslconfig文件,并写入如下内容来限制WSL的内存大小,但我觉得问题不在于此,因为WSL2的内存好像本身就是动态且没有限制的,不过如果尝试了所有的办法都不行,也可以试试。

[wsl2]
memory=4GB
swap=4GB
localhostForwarding=true

从Docker层面,可以(在DockerCompose中)通过使用下面代码来限制一个容器的内存用量:

services:
  es01:
    image: "elasticsearch:7.12.1"
    container_name: "es01"
    deploy:
      resources:
        limits:
          memory: 1G
        reservations:
          memory: 512M

其它奇怪问题

Caused by:java.lang.IllegalStateException: failure when sending a validation request to node

可能是你的data目录不干净了,删除里面的所有文件即可

java.lang.IllegalStateException: failed to obtain node locks, tried [[/var/lib/elasticsearch/sunaw-cluster]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

先查看是否有其它已经启动的es实例:

ps aux | grep elasticsearch

如果有,使用kill -9 <pid>杀掉它

否则,有可能是你yaml文件写错了,仔细检查下,比如每一个实例对应的datavolume对不对,我真的就是这个文件复制时有个地方忘改了。

最终效果:

img

最终yaml:

version: '2.2'
services:
  es01:
    image: "elasticsearch:7.12.1"
    container_name: "es01"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    deploy:
      resources:
        limits:
          memory: 1G
        reservations:
          memory: 512M
    privileged: true
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPS=-Xms512m -Xmx512m"
    volumes:
      - "./es-data01:/usr/share/elasticsearch/data"
      - "./es-plugins:/usr/share/elasticsearch/plugins"
    ports:
      - 9201:9200
    networks:
      - elastic

  es02:
    image: "elasticsearch:7.12.1"
    container_name: "es02"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    deploy:
      resources:
        limits:
          memory: 1G
        reservations:
          memory: 512M
    privileged: true
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPS=-Xms512m -Xmx512m"
    volumes:
      - "./es-data02:/usr/share/elasticsearch/data"
      - "./es-plugins:/usr/share/elasticsearch/plugins"
    ports:
      - 9202:9200
    networks:
      - elastic

  es03:
    image: "elasticsearch:7.12.1"
    container_name: "es03"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    deploy:
      resources:
        limits:
          memory: 1G
        reservations:
          memory: 512M
    privileged: true
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPS=-Xms512m -Xmx512m"
    volumes:
      - "./es-data03:/usr/share/elasticsearch/data"
      - "./es-plugins:/usr/share/elasticsearch/plugins"
    ports:
      - 9203:9200
    networks:
      - elastic

networks:
  elastic:
    driver: bridge

标签:常见问题,name,memory,cluster,elasticsearch,es01,ElasticSearch,Docker,es
From: https://www.cnblogs.com/lilpig/p/16607326.html

相关文章

  • Ubuntu 安装docker
    安装切换为root用户,非root用户,请在所有命令前面加上sudo更新aptaptupdate安装依赖aptinstallapt-transport-httpsca-certificatescurlsoftware-propertie......
  • Docker容器网络(基本网络模型)
    解析Docker的4种容器网络默认网络模型先介绍默认的网络模型:安装docker后,输入ifconfig就会发现多了网卡中多了一个docker0:$ifconfigdocker0:flags=4099<UP,BROADC......
  • elasticsearch中使用curl进行的简单查询
    curl:-X:指定http的请求方式,有HEAD、GET、POST、PUT、DELETE-d:指定要传输的数据-H:指定http的请求头信息curl-XPUThttp://ip:port/索引名?pretty--创建索引cur......
  • macbook 安装docker machine
    dockermachine在最新版本已被弃用,用dockerdesktop替代#安装docker-machinebase=https://github.com/docker/machine/releases/download/v0.16.2&&curl-L$base......
  • docker安装mysql8.0
    dockerrun\-p3306:3306\-eMYSQL_ROOT_PASSWORD=QQ.123\-v/home/data/mysql8/data:/var/lib/mysql:rw\-v/home/data/mysql8/log:/var/log/mys......
  • docker构建pytorch
    配置拉取镜像(devel版本有nvcc和cudnn)sudodockerpullpytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel构建容器阿立dockerrun-it--gpusall--namelipytorch1.6-......
  • Jenkins+gitlab+docker+harbor容器化自动部署详细流程
    环境:Linux版本:Centos7一、更新源:yumupdate二、安装docker:yuminstalldocker-y启动docker:systemctlstartdocker三、.安装gitlab1.docker......
  • docker搭建phpswoole实现http服务
    一、创建DockerfileFROMphpswoole/swoole#COPY./www//var/www/二、同级目录下创建docker-composer.yamlservices:phpswoole-server:container_name:p......
  • windows11安装docker并运行
    在windows11中安装docker的步骤如下:一、检查电脑是否开启虚拟化功能打开任务管理器,查看性能选项卡中的CPU信息,在右下角可以看到虚拟化是否开启。如未开启需要重启到BIOS......
  • docker 安装Sentinel
    1、拉取镜像dockerpull bladex/sentinel-dashboard 2、启动容器#dockerrun-d-p8858:8858\>--namesentinel\>--ip192.168.59.103\>-eAUTH_USERNAME=se......