目录
一、原生二进制文件安装
ES
1. 安装Java JDK(可选)
2. 下载ElasticSearch二进制包
3. 创建运行ES的普通用户
4. 根据需求修改ES配置文件
5. 设置JVM堆大小 干货 | 吃透Elasticsearch 堆内存
6. 创建ES数据及日志存储目录
7. 修改安装目录及存储目录权限
8. 注册开机自启动(可选)
9. 安装与查看ES插件(可选)
Kibana(可选)
1. 下载Kibana二进制压缩包
2. 解压压缩包
3. 启动服务
4 配置中文
5. 安装与查看Kibana插件(可选)
二、使用Docker安装
1. 使用docker-compose启动Elasticsearch + Logstash + Kibana
三、附录
ES常见问题排查
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
Exception in thread “main” org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException
BindTransportException [Failed to bind to [9300-9400]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
bootstrap checks failed
内存不够报错
max number of threads [1024] for user [es] is too low, increase to at least [2048]
max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
内存没有被锁定
官方文档:安装 Elasticsearch |Elasticsearch 指南 [8.12] |弹性的
7.0开始,内置了Java环境,此步骤可跳过
配置环境变量:$JAVA_HOME
各版本对Java的依赖:
版本选择:最好是Java8、Java11、Java14
ES与JDK兼容性:支持一览表 | Elastic
JDK下载地址:Java Downloads | Oracle
下载地址:Download Elasticsearch | Elastic
解压后目录说明:
useradd es
echo "123456" | passwd --stdin "es"
# 解压二进制源码包
tar xzf elasticsearch-6.5.4.tar.gz -C /usr/local/
cd /usr/local/elasticsearch-6.5.4/config/
# 编辑配置文件,底部追加
vim elasticsearch.yml
# 集群名称,各节点配成相同的集群名称
cluster.name: elk
# 节点名称,各节点配置不同
node.name: elk01
# 指示某个节点是否符合成为主节点的条件
node.master: true
# 指示节点是否为数据节点。数据节点包含并管理索引的一部分
node.data: true
# 数据存储目录
path.data: /data/elasticsearch/data
# 日志存储目录
path.logs: /data/elasticsearch/logs
# 内存锁定,是否禁用交换
bootstrap.memory_lock: false
# 系统调用过滤器
bootstrap.system_call_filter: false
# 绑定节点IP
network.host: 0.0.0.0
# 端口
http.port: 9200
# 提供其他 Elasticsearch 服务节点的单点广播发现功能
# discovery.zen.ping.unicast.hosts: ["192.168.246.234", "192.168.246.231","192.168.246.235"]
# 集群中可工作的具有Master节点资格的最小数量,官方的推荐值是 (N/2)+1,其中N是具有master资格的节点的数量。
# discovery.zen.minimum_master_nodes: 2
# 节点在发现过程中的等待时间
# discovery.zen.ping_timeout: 150s
# 节点发现重试次数
# discovery.zen.fd.ping_retries: 10
# client.transport.ping_timeout: 60s
# 是否允许跨源 REST 请求,用于允许head插件访问ES
http.cors.enabled: true
# 允许的源地址
http.cors.allow-origin: "*"
# vim jvm.options
-Xms1g ----修改成 -Xms2g
-Xmx1g ----修改成 -Xms2g
或者: 推荐设置为4G,请注意下面的说明:
sed -i 's/-Xms1g/-Xms4g/' /usr/local/elasticsearch-6.5.4/config/jvm.options
sed -i 's/-Xmx1g/-Xmx4g/' /usr/local/elasticsearch-6.5.4/config/jvm.options
注意: 确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。 堆内存大
小不要超过系统内存的50%
mkdir -p /data/elasticsearch/data
mkdir -p /data/elasticsearch/logs
chown -R es:es /data/elasticsearch
chown -R es:es /usr/local/elasticsearch-6.5.4
编辑elasticsearch.service文件,没有则创建
vi /usr/lib/systemd/system/elasticsearch.service
编写服务
[Unit]
Description=elasticsearch
After=network.target
[Service]
Type=forking
User=es
ExecStart=/usr/local/elasticsearch-7.10.1/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
刷新配置信息
systemctl daemon-reload
启动服务
systemctl start elasticsearch.service
设置开机自启
systemctl enable elasticsearch.service
官方文档:Introduction to plugins | Elasticsearch Plugins and Integrations [8.12] | Elastic
查看以安装插件:bin/elasticsearch-plugin list
安装插件:bin/elasticsearch-plugin install plugin_name
web页面查看已安装插件:http://localhost:9200/_cat/plugins
官方文档:安装 Kibana |Kibana 指南 [8.12] |弹性的 (elastic.co)
下载地址:Download Kibana Free | Get Started Now | Elastic
tar -xzf kibana-8.12.0-linux-x86_64.tar.gz
cd kibana-8.12.0/
./bin/kibana
vim config/kibana.yml
参考文档:Kibana plugins | Kibana Guide [8.12] | Elastic
安装插件:bin/kibana-plugin install plugin_name
查看插件:bin/kibana-plugin list
删除插件:bin/kibana-plugin remove plugin_name
安装docker Docker Desktop: The #1 Containerization Tool for Developers | Docker
安装docker-compose Overview of installing Docker Compose | Docker Docs
一个开源的 ELK(Elasticsearch + Logstash + Kibana) docker-compose 配置 https://github.com/deviantony/docker-elk
下载docker-compose
docker-compose.yml
启动服务(在docker-compose.yml所在目录运行)
docker-compose up -d
点击访问Kibana
查看服务状态
docker-compose ps
停止服务
docker-compose down
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
uLimit -Hn
ulimit -Sn
修改/etc/security/limits.conf文件,在文末增加配置,用户退出后重新登录生效
* soft nofile 65536
* hard nofile 65536
文件的属主属组修改为 esuadmin,要是用root
chown -R esuadmin:esuadmin elasticsearch-7.4.2
这个错误需要配置外网可访问,用 vi 打开elasticsearch-7.6.2/config/elasticsearch.yml
network.host: 0.0.0.0
切换到 root用户,在 /etc/sysctl.conf 文件添加 vm.max_map_count 参数值为 262144
su root
echo "vm.max_map_count=655360" > /etc/sysctl.conf
sysctl -p
elasticsearch-7.6.2/config/elasticsearch.yml 文件, 把 cluster.name、node.name、initial_master_nodes 参数设置默认值
cluster.name: wooola-es
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
Java HotSpot (TM) 64-Bit Server VM waming: INFO: os::commit memory(Ox00000000e5330000, 449642496, Q) failed; error-'Cannot allocate memory' (erro-12)
find / -type f -name 'jvm.options'
vi jvm.options:修改:-Xns4g,-Xnx4g
vi /etc/security/limits.d/90-nproc.conf:修改
soft nproc 1024
# 修改为
soft nproc 2048
vi /etc/security/limits.conf:添加
soft nofile 65536
hard nofile 131072
soft nproc 2048
hard nproc 4096
memory Locking requested for elasticsearch process but memory is not Locked
vim elasticsearch.ymL:修改
bootstrap.memory_Lock: true
vim /etc/sys temd/ system.conf:修改
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
PS:修改完此文件需重启系统才可生效,es即可启动成功!