docker安装elastic的错误

首先我的配置是:

version: "3.1"
services:
  elasticsearch:
    image: daocloud.io/library/elasticsearch:7.6.2
    restart: always
    container_name: elasticsearch
    ports:
      - 9200:9200
   
  kibana:
    image: daocloud.io/library/kibana:7.6.2
    restart: always
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      - elasticsearch_url=http://10.9.63.158:9200
    depends_on:
      - elasticsearch

在这里插入图片描述

报上面的错,说什么内存不够,于是虚拟机加内存到4G,同时,加上下面的操作.

操作:

vi /etc/sysctl.conf
# 追加
vm.max_map_count=655360
#保存退出
# 执行命令
sysctl -p

重启elastcisearch,有报错!!!!!!!。

发现网上给他添加了一个环境变量,所以给他加一个环境变量.最后如下.

elasticsearch    | ERROR: [1] bootstrap checks failed
elasticsearch    | [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
elasticsearch    | ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
version: "3.1"
services:
  elasticsearch:
    image: daocloud.io/library/elasticsearch:7.6.2
    restart: always
    container_name: elasticsearch
    ports:
      - 9200:9200
    environment:
      discovery.type: single-node
  kibana:
    image: daocloud.io/library/kibana:7.6.2
    restart: always
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      - elasticsearch_url=http://10.9.63.158:9200
    depends_on:
      - elasticsearch

添加分词器,在github上下载好.解压后改名为ik文件夹名,放到linux当前目录下的plugins下面
然后修改docker-compose.yml文件添加数据卷.

version: "3.1"
services:
  elasticsearch:
    image: daocloud.io/library/elasticsearch:7.6.2
    restart: always
    container_name: elasticsearch
    ports:
      - 9200:9200
    environment:
      discovery.type: single-node
    volumes:
      - ./plugins/:/usr/share/elasticsearch/plugins
  kibana:
    image: daocloud.io/library/kibana:7.6.2
    restart: always
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      - elasticsearch_url=http://10.9.63.158:9200
    depends_on:
      - elasticsearch

重启elasticsearch,看日志

报错,一个老外说不能放到plugs文件夹下面,所以只能启动容器后移进去,在重启

于是把数据卷删了,进去容器创建一个文件夹放进去。


[root@localhost elasticSearch]# docker ps
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS              PORTS                              NAMES
cf0c4b6d7999        daocloud.io/library/kibana:7.6.2          "/usr/local/bin/dumb…"   5 minutes ago       Up 5 minutes        0.0.0.0:5601->5601/tcp             kibana
80854bc1a023        daocloud.io/library/elasticsearch:7.6.2   "/usr/local/bin/dock…"   5 minutes ago       Up 5 minutes        0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch
[root@localhost elasticSearch]# docker exec -it 80 bash
[root@80854bc1a023 elasticsearch]# ls
LICENSE.txt  README.asciidoc  config  jdk  logs     plugins
NOTICE.txt   bin              data    lib  modules
[root@80854bc1a023 elasticsearch]# mkdir ik
[root@80854bc1a023 elasticsearch]# ls
LICENSE.txt  README.asciidoc  config  ik   lib   modules
NOTICE.txt   bin              data    jdk  logs  plugins
[root@80854bc1a023 elasticsearch]# cd ik
[root@80854bc1a023 ik]# pwd
/usr/share/elasticsearch/ik
[root@80854bc1a023 ik]# exit
exit
[root@localhost elasticSearch]# docker cp ./plugins/ik/ 80854bc1a023:/usr/share/elasticsearch/ik

<think>好的,我现在需要帮助用户在Docker中搭建Elasticsearch 8版本的集群。首先,我得回顾一下用户提供的引用内容,看看有没有可用的信息。用户引用了几个关于Docker部署ES集群的资料,但都是针对7.x版本的,比如7.6.2、7.10、7.14.0等。不过Elasticsearch 8可能在配置上有一些变化,尤其是安全方面的默认设置,所以需要特别注意。 首先,用户提到的之前的步骤中,比如跨域配置、内存设置(vm.max_map_count)、使用docker-compose来编排集群,这些在ES8中是否仍然适用呢?我记得ES8默认启用了安全功能,比如TLS加密和内置的用户认证,所以可能需要生成安全证书,或者自动配置这些部分。用户之前的引用中提到了启用X-Pack安全功能,这在ES8中应该是默认开启的,所以可能需要更多的安全配置步骤。 接下来,我需要考虑Docker的网络设置。用户之前的例子中使用了自定义网络,比如esnet,这有助于容器间的通信。在ES8中,节点之间的通信可能需要TLS,所以需要配置传输层的SSL证书。另外,ES8的镜像可能需要不同的环境变量,比如discovery.type=single-node可能不再适用于集群模式,或者需要更多的参数。 另外,关于内存问题,ES通常需要调整系统的vm.max_map_count,这在Linux系统中是必须的。用户之前的引用中也提到了这一点,所以在Docker环境下,可能需要通过sysctl设置或者在docker run命令中传递参数。 然后,关于集群的发现机制,ES8可能仍然使用discovery.seed_hosts来指定种子节点,所以在docker-compose文件中需要正确配置各节点的hostname和IP地址,确保它们能互相发现。同时,初始主节点的设置(cluster.initial_master_nodes)可能需要明确列出节点名称。 用户可能还需要配置基本的认证信息,比如内置的elastic用户的密码,这可以通过环境变量ELASTIC_PASSWORD来设置。此外,ES8可能会自动生成CA证书,但可能需要用户挂载相关的证书文件到容器中,或者在配置中指定证书路径。 现在,我需要将这些步骤整理成一个清晰的流程,包括创建自定义网络、编写docker-compose.yml文件、处理安全配置、设置环境变量、调整系统参数等。同时,要确保各节点能够正确通信,集群能够成功形成,并且可以通过Elasticsearch-head或者其他工具进行管理。 可能遇到的问题包括节点无法加入集群,这时需要检查discovery.seed_hosts是否正确,网络是否互通,安全配置是否一致,证书是否正确配置等。另外,跨域访问的问题可能需要设置http.cors相关的参数,这在ES8中仍然适用,但需要添加到配置文件中或者通过环境变量传递。 最后,验证集群状态可以通过curl命令检查节点信息或者使用Kibana的Stack Monitoring功能。用户可能需要安装Kibana作为管理工具,但这可能超出当前问题的范围,但可以作为一个建议提供给用户。 总结步骤应该是: 1. 创建Docker网络。 2. 编写docker-compose.yml,定义多个ES节点,配置环境变量和卷。 3. 处理系统参数,如vm.max_map_count。 4. 配置安全设置,如密码和证书。 5. 启动集群并验证状态。 6. 处理可能的错误,如跨域配置或节点发现问题。 在编写具体命令时,需要确保ES8的镜像版本正确,环境变量如discovery.seed_hosts、cluster.initial_master_nodes、ELASTIC_PASSWORD等正确设置。同时,挂载必要的配置文件和数据卷,确保数据持久化。 可能还需要提醒用户关于生产环境的建议,比如使用单独的物理卷,配置备份,监控等,但用户当前的问题主要是搭建集群,所以这些可以作为附加建议。 现在需要将这些思考整理成一个结构化的回答,分步骤指导用户操作,并生成相关问题。</think>### 在 Docker安装和配置 Elasticsearch 8 集群的步骤 #### 1. 准备工作:调整系统参数 Elasticsearch 需要修改系统虚拟内存参数,避免启动时报错: ```bash sudo sysctl -w vm.max_map_count=262144 # 临时生效 # 永久生效需在/etc/sysctl.conf添加 vm.max_map_count=262144 ``` #### 2. 创建 Docker 自定义网络 确保集群内容器互通: ```bash docker network create esnet ``` #### 3. 编写 `docker-compose.yml` ```yaml version: '3' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.seed_hosts=es02,es03 # 种子节点列表 - cluster.initial_master_nodes=es01,es02,es03 # 初始主节点 - ELASTIC_PASSWORD=your_strong_password # 设置elastic用户密码 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1g -Xmx1g" volumes: - esdata01:/usr/share/elasticsearch/data networks: - esnet ports: - 9200:9200 ulimits: memlock: soft: -1 hard: -1 es02: image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 container_name: es02 environment: - node.name=es02 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es03 - ELASTIC_PASSWORD=your_strong_password - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1g -Xmx1g" volumes: - esdata02:/usr/share/elasticsearch/data networks: - esnet ulimits: memlock: soft: -1 hard: -1 es03: image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 container_name: es03 environment: - node.name=es03 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es02 - ELASTIC_PASSWORD=your_strong_password - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1g -Xmx1g" volumes: - esdata03:/usr/share/elasticsearch/data networks: - esnet ulimits: memlock: soft: -1 hard: -1 volumes: esdata01: esdata02: esdata03: networks: esnet: external: true ``` #### 4. 启动集群 ```bash docker-compose up -d ``` #### 5. 验证集群状态 ```bash curl -u elastic:your_strong_password http://localhost:9200/_cat/nodes?v # 应显示3个节点信息 ``` #### 6. 跨域访问配置(可选) 若使用 Elasticsearch-head 等工具,在 `docker-compose.yml` 中添加: ```yaml environment: - http.cors.enabled=true - http.cors.allow-origin=* ``` #### 关键配置说明 - **安全认证**:Elasticsearch 8 默认启用 TLS 和密码认证,需通过 `ELASTIC_PASSWORD` 设置密码[^4]。 - **节点发现**:`discovery.seed_hosts` 指定集群种子节点,`cluster.initial_master_nodes` 定义初始主节点列表[^3]。 - **数据持久化**:使用 Docker 卷(`esdata01`等)保存索引数据,避免容器重启后丢失[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值