docker安装elasticsearch

2022-01-10 11:46:51 浏览数 (1)

1、使用docker搜索elasticsearch版本

docker search elasticsearch

或者直接在docker 文档网站上去查找最新支持的elasticsearch镜像版本

https://hub.docker.com/_/elasticsearch

官网有提供具体的安装过程

https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html

2、自行摸索安装过程(非官网流程)遇到的一些问题

2.1)先下载最新镜像

指定版本下载

docker pull elastcisearch:7.16.2

2.2) 通过下载的elasticsearch镜像安装elasticsearch容器

docker run -d -p 9200:9200 -p 9300:9300 --name es01 elasticsearch:7.16.2

docker ps -a 看历史容器的状态发现没有安装成功

然后去查看这个容器的日志

docker logs -f 25ea16bb2698(容器id)

发现主要有下面两个报错

2.2.1)bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

这个报错提示vm.max_map_count Linux分配的虚拟内存的数量太低,至少262144

       max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上限但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。

解决方案:修改Linux内核参数来调高此值

sysctl -w vm.max_map_count=262144

sysctl -p

2.2.2) bootstrap check failure [2] of [2]: 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集群首次启动的时候,必须给集群设置一个集群引导,可以选择如下任意一种

cluster.initial_master_nodes 集群初始化的提供的master候选地址,第一次启动时将从该列表中获取master

discovery.seed_hosts 配置该节点会与哪些候选地址进行通信,hostname,ip ,ip port discovery.seed_providers 指定种子地址提供的方式,默认settings,也支持其他Discovery Plugins,包括EC2 Discovery,Azure Classic discovery,GCE discovery( Google Compute Engine discovery )

解决方案:由于不太熟悉集群模式,只能选择单机模式先进行测试

在安装命令中添加 -e "discovery.type=single-node"( discovery.type是指 设定集群模式/单机模式等,默认是单机模式)

ES_JAVA_OPTS="-Xms512m -Xmx512m":指定elasticsearch启动内存,-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些,-Xmx:java heap最大值,使用的最大内存

docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 --name es01 elasticsearch:7.16.2

0 人点赞