一、安装es前置条件
1. 文件创建数
- 修改Linux系统的限制配置,将文件创建数修改为65536个 :
1). 修改系统中允许应用最多创建多少文件等的限制权限。
Linux默认来说,一般限制应用最多创建的文件是65535个。
但是ES至少需要65536的文件创建数的权限。
2). 修改系统中允许用户启动的进程开启多少个线程。默认的Linux限制root用户开启的进程可以开启任意数量的线程,其他用户开启的进程可以开启1024个线程。必须修改限制数为4096+。因为ES至少需要4096的线程池预备。
vi /etc/security/limits.conf #新增如下内容在limits.conf文件中
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
2. 系统控制权限
- ElasticSearch需要开辟一个65536字节以上空间的虚拟内存。
Linux默认不允许任何用户和应用程序直接开辟这么大的虚拟内存。
vi /etc/sysctl.conf
添加参数:新增如下内容在sysctl.conf文件中,当前用户拥有的内存权限大小
vm.max_map_count=262144
(max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量,
默认vm.max_map_count=65530,因此缺省配置下,单个jvm能开启的最大线程数为其一半,即3w左右)
重启生效:让系统控制权限配置生效
/sbin/sysctl -p
# 查看
sysctl -a|grep vm.max_map_count
二、安装es(单机)
docker官网:
https://hub.docker.com/_/elasticsearch
基础镜像:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.2
启动es:
docker run -p 9200:9200 \
--name es \
-p 9300:9300 \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
-e "discovery.type=single-node" \
-v /var/data/es/data:/usr/share/elasticsearch/data \
-v /var/data/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-d docker.elastic.co/elasticsearch/elasticsearch:7.15.2
启动前先确认文件挂载目录是否存在, 并且确认docker用户的是否拥有读写权限。
赋值权限: chmod 777 data
容器默认使用的用户: elasticsearch(uid:gid 1000:1000)
elasticsearch.yml 默认配置:
# es集群名称,用于es后续集群搭建,单机版可简单配置
cluster.name: "docker-cluster"
# 默认是127.0.0.1:9200 本机访问,配置之后别的机台网段都能访问
network.host: 0.0.0.0
# ES 7 集群中默认为每个 Node 节点最大 1000 个分片,用于skywalking存储索引时候需要分配分片数,这边配置4000
cluster.max_shards_per_node: 4000
# 默认情况下Fielddata会不断占用内存,直到它触发了[fielddata circuit breaker];indices.fielddata.cache.size: unbounded (默认不限制),当达到size时,cache会剔除旧的fielddata;indices.breaker.fielddata.limit:60%(默认head60%),indices.breaker.fielddata.limit 必须大于 indices.fielddata.cache.size,否则只会触发fielddata circuit breaker,而不会剔除旧的fielddata。
indices.fielddata.cache.size: 512mb
启动日志:
docker logs -f es
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/7.15/docker.html