ELK系列(二)、ElasticSearch单实例安装
前言
ELK系列文章统一选用 v7.10.2,为目前本司线上使用版本。另外大家在进行ELK平台构建时,Elastic体系选用的各组件版本尽量保持一致,否则安装过程中可能会出现各种版本依赖问题。
本文将主要讲述ES单点服务安装及服务器系统参数调优,后续章节会讲述ES集群(一主二从,单服务器多实例)安装方式及生产环境参数配置。
环境说明
服务器环境:CentOS 7.5
JDK环境:JDK1.8
ES版本:Elasticsearch7.10.2
Elastic下载:https://elasticsearch.cn/download/
安装步骤
下载、上传、解压
1 | mkdir -p /opt/software |
启动
1 | cd ../module/elasticsearch-7.10.2/bin/ |
一般解压后直接启动,会出现以下异常:
异常一:future versions of Elasticsearch will require Java 11;
说明:当前ES版本的特性需要java11才能支持。
异常二:java.lang.RuntimeException: can not run elasticsearch as root
说明:ES进程不能在root用户下启动
关于JDK的版本,我们大多时候服务器已经安装了,但又不是JDK_11版本,其实此版本的ES已内置了JDK,我们可以修改先关配置让ES启动时使用自带的JDK,这样就不用重新升级先前的JDK版本了,生产环境建议采用。
使用自带JDK
修改ES_HOME下bin目录中的 elasticsearch-env,如图所示添加以下内容:
1 | 使用ES内置的jdk,注意制定出自己的es安装目录 |
新建elasticsearch用户
由于ES不能使用root用户启动,此处需要新增elasticsearch用户。
创建elasticsearch用户组、elasticsearch用户
1 | groupadd elasticsearch |
再次启动
此时需要切换为elasticsearch用户进行启动
1 | su elasticsearch |
验证:
由于还没有修改 elasticsearch.yml 相关配置,此时通过浏览器 http://ip:9200 访问不到,可通过curl在本机进行访问测试,如下图:
停止
1 | ps -ef|grep elasticsearch |
修改elasticsearch.yml配置
创建ES日志目录即数据存储目录
1 | mkdir -p /data1/elk/eslogs |
vim elasticsearch.yml
1 | # 集群名称 |
修改JVM参数
一般主要是调整堆内存的大小,默认堆内存只有1g。
vim elasticsearch-7.10.2/config/jvm.options
1 | -Xms4g |
以上为本机测试环境,配置为4g
Xmx 和 Xms不能超过物理内存的50% ;
Xmx 和 Xms不能超过32g;
官方建议:把内存的一半给Lucene+不要超过32G+关闭swap
jvm.options中的默认配置就已经对GC机制进行了优化。JDK8~13使用CMS垃圾回收器,JDK14-使用G1垃圾回收器。
注:以上仅为本机测试环境相关参数配置,官方提供的ES配置底层已进行了大部分参数优化,只需要修改少数配置即可启动,但如果是生产环境,还需要考虑其它参数配置。部分生产参数后续章节会进行说明,另外也可参考 官网
启动
elasticsearch-7.10.2/bin/elasticsearch -d
服务器相关参数优化
关闭swapping
临时禁用:swapoff -a
永久禁用swap:
vim /etc/fstab,注释掉swap分区一行,保存退出并重启。
ES建议要关闭 swap 内存交换空间,禁用swapping。频繁的swapping 对服务器来说是致命的。
当内存交换到磁盘上,一个100微秒的操作可能变成 10毫秒,可以看出 swapping 对于性能的影响是较为致命的。
配置ulimit
临时配置:
1 | 临时设置打开的最大文件数 |
永久配置:
vim /etc/security/limits.conf,文件末尾添加:
1 | * soft nofile 65536 |
nofile打开的文件句柄数量
nproc打开的进程数量
配置vm.max_map_count
使用root用户执行以下操作:
1 | vim /etc/sysctl.conf |
可能遇到的问题
问题一:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
参照上一章节配置 ulimit
问题二:
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
参照上一章节配置 sysctl.conf
问题三:
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
原因:至少要配置discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes属性中的一个。
问题四:
Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]
如果开启了xpack安全认证配置,transport.ssl认证也需要开启。添加以下参数:
1 | # 开启x-pack |
注意:此处开启xpack安装认证后,还需进行秘钥文件生成等相关操作,下篇博客会进行详细讲述。