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/


安装步骤

下载、上传、解压

mkdir -p /opt/software
mkdir -p /opt/module

# 默认已将安装包下载上传至 /opt/software
cd /opt/software
tar -xvf elasticsearch-7.10.2-linux-x86_64.tar.gz -C ../module/

启动

cd ../module/elasticsearch-7.10.2/bin/
./elasticsearch

一般解压后直接启动,会出现以下异常:
image.png

异常一: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,如图所示添加以下内容:
image.png

#使用ES内置的jdk,注意制定出自己的es安装目录
export JAVA_HOME="$ES_HOME/jdk/"
export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="$ES_HOME/jdk/bin/java"
else
    JAVA=`which java`
fi

新建elasticsearch用户

由于ES不能使用root用户启动,此处需要新增elasticsearch用户。
创建elasticsearch用户组、elasticsearch用户

groupadd elasticsearch
useradd elasticsearch -g elasticsearch

# 更改elasticsearch安装目录的所属用户及组为 elasticsearch:elasticsearch
chown -R elasticsearch:elasticsearch elasticsearch-7.10.2

再次启动

此时需要切换为elasticsearch用户进行启动

su elasticsearch
#后台启动,只需要添加-d参数
elasticsearch-7.10.2/bin/elasticsearch -d

验证:
由于还没有修改 elasticsearch.yml 相关配置,此时通过浏览器 http://ip:9200 访问不到,可通过curl在本机进行访问测试,如下图:
image.png

停止

ps -ef | grep elasticsearch
kill -9  pid

修改elasticsearch.yml配置

创建ES日志目录即数据存储目录

mkdir -p /data1/elk/eslogs
mkdir -p /data1/elk/esdata

vim elasticsearch.yml

# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-01
# 服务ip,0表示所有本地ip,放开为允许所有网段访问es
network.host: 192.168.xx.xx
http.port: 9200
transport.tcp.port: 9300

# 指定该节点是否有资格被选举成为master,默认true
node.master: true
# 指定该节点是否存储索引数据,默认true
node.data: true

# es节点列表
discovery.seed_hosts: ["192.168.xx.xx:9200"]
# es启动时,参与选举master的节点列表,即拥有选举资格的节点
cluster.initial_master_nodes: ["192.168.xx.xx"]

# 配置数据存储目录,必需保证目录存在,多个目录用逗号分隔
path.data: /data1/elk/esdata
path.logs: /data1/elk/eslogs

修改JVM参数

一般主要是调整堆内存的大小,默认堆内存只有1g。
vim elasticsearch-7.10.2/config/jvm.options

-Xms4g
-Xmx4g

以上为本机测试环境,配置为4g
Xmx 和 Xms不能超过物理内存的50% ;
Xmx 和 Xms不能超过32g;
官方建议:把内存的一半给Lucene+不要超过32G+关闭swap

jvm.options中的默认配置就已经对GC机制进行了优化。JDK8~13使用CMS垃圾回收器,JDK14-使用G1垃圾回收器。
image.png

:以上仅为本机测试环境相关参数配置,官方提供的ES配置底层已进行了大部分参数优化,只需要修改少数配置即可启动,但如果是生产环境,还需要考虑其它参数配置。部分生产参数后续章节会进行说明,另外也可参考 官网

启动

elasticsearch-7.10.2/bin/elasticsearch -d


服务器相关参数优化

关闭swapping

临时禁用swapoff -a

永久禁用swap:
vim /etc/fstab,注释掉swap分区一行,保存退出并重启。
image.png

ES建议要关闭 swap 内存交换空间,禁用swapping。频繁的swapping 对服务器来说是致命的。
当内存交换到磁盘上,一个100微秒的操作可能变成 10毫秒,可以看出 swapping 对于性能的影响是较为致命的。

配置ulimit

临时配置:

#临时设置打开的最大文件数
ulimit -n 65536
#临时设置打开的最大进程数
ulimit -u 65536

永久配置:
vim /etc/security/limits.conf,文件末尾添加:

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

nofile打开的文件句柄数量
nproc打开的进程数量

配置vm.max_map_count

使用root用户执行以下操作:

vim /etc/sysctl.conf
# 添加下面配置
vm.max_map_count=655360

# 并执行命令
sysctl -p

可能遇到的问题

问题一:
[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认证也需要开启。添加以下参数:

# 开启x-pack
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: escluster-certificates.p12
xpack.security.transport.ssl.truststore.path: escluster-certificates.p12

注意:此处开启xpack安装认证后,还需进行秘钥文件生成等相关操作,下篇博客会进行详细讲述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值