Elasticsearch环境搭建

本文主要介绍在Linux 系统下搭建Elasticsearch运行环境相关内容. 受限于篇幅本次主要介绍elasticsearch 单集群单节点单实例、单集群单节点多实例、单集群多节点单实例 环境搭建。ES环境搭建概要参见脑图:

Elasticsearch环境搭建_第1张图片

内容说明:

本文内容同微信公众号【凡登】,关注不迷路,欢迎加入一起共同学习。

版本说明:

Linux CentOS 7.9 64 bitElasticsearch-7.13.4openjdk-16+36_linux-x64

目录

一、【单集群单节点单实例】

1、快速安装elasticsearch

2、elasticsearch配置

2.1、操作系统配置

2.2、elasticsearch配置

3、启动

二、【单集群单节点多实例】

1、快速安装elasticsearch

三、单集群多节点单实例

四、ES可视化环境搭建

1、Kibana环境搭建。

2、elasticsearch-head浏览器插件安装

五、可能出现问题:

1、jdk依赖问题

2、以root账户运行es异常

3、内存不足

4、数据锁定

4.1、删除data数据:

4.2、配置path.data、path.logs路径

六、参考文档


一、【单集群单节点单实例】

1、快速安装elasticsearch

1、下载:[root@VM-0-9-centos ~]# cd /apps[root@VM-0-9-centos apps]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz
2、解压[root@VM-0-9-centos apps]# tar -zxvf elasticsearch-7.13.4-linux-x86_64.tar.gz # 目录结构如下:drwxr-xr-x  2 u_es root   4096 7月  15 2021 bindrwxr-xr-x  3 u_es root   4096 4月  11 13:31 configdrwxr-xr-x  9 u_es root   4096 7月  15 2021 jdkdrwxr-xr-x  3 u_es root   4096 7月  15 2021 lib-rw-r--r--  1 u_es root   3860 7月  15 2021 LICENSE.txtdrwxr-xr-x  2 u_es root   4096 4月  11 18:36 logsdrwxr-xr-x 59 u_es root   4096 7月  15 2021 modules-rw-r--r--  1 u_es root 594150 7月  15 2021 NOTICE.txtdrwxr-xr-x  2 u_es root   4096 7月  15 2021 plugins-rw-r--r--  1 u_es root   2710 7月  15 2021 README.asciidoc
3、启动#切换到u_es账户(详情参见下文创建es用户)[root@VM-0-9-centos apps]# su u_es# 非后台启动(ctrl + c 结束当前运行es实例)[u_es@VM-0-9-centos apps]$ /apps/elasticsearch-7.13.4/bin/elasticsearch
4、检查是否启动# 重启开启一个会话,验证[root@VM-0-9-centos ~]# curl -i http://localhost:9200#出现如下信息,即启动成功

Elasticsearch环境搭建_第2张图片

5、以后台方式启动[u_es@VM-0-9-centos apps]$ /apps/elasticsearch-7.13.4/bin/elasticsearch -d 
6、关闭后台运行的es实例# 查看es进程pid[u_es@VM-0-9-centos apps]$ ps -ef|grep elasticsearch # 干掉pid进程[u_es@VM-0-9-centos apps]$ kill -9 24044

上述快速安装是es默认安装,开箱即用,适用于初学简单的环境搭建,但距离实际生产环境存在一些差距,比如:集群、节点名称,ip、端口绑定,集群发现,文件描述符、内存交换等问题。解决方法参见下文。

2、elasticsearch配置

2.1、操作系统配置

a) 内存相关配置/etc/sysctl.conf

[root@VM-0-9-centos ~]# vim /etc/sysctl.conf # elasticsearch config start# 禁止内存与硬盘交换vm.swappiness=1
# 设置虚拟内存大小# Elasticsearch使用了 NioFs(非阻塞文件系统)和 MMapFs(内存映射文件系统)。# 配置最大映射数量,以便有足够的虚拟内存可用于mmapped文件vm.max_map_count=262144
# 执行sysctl -p 使配置生效[root@VM-0-9-centos /]# sysctl -p#响应如下:vm.swappiness = 1vm.max_map_count = 262144

b) 文件句柄数配置/etc/security/limits.conf

[root@VM-0-9-centos ~]# vim /etc/security/limits.conf # 文件句柄数 (限制打开文件数100001)* soft nofile 100001* hard nofile 100002
# 进程线程数* soft nproc 65535* hard nproc 65535
# 内存锁定交换* soft memlock unlimited* hard memlock unlimited

c) 查看配置是否生效

[root@VM-0-9-centos ~]# ulimit -a#部分响应如下:max memory size         (kbytes, -m) unlimitedopen files                      (-n) 100001virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited# 查看硬限制[u_es@VM-0-9-centos /]$ ulimit -Hu65535# 查看软限制[u_es@VM-0-9-centos /]$ ulimit -Su65535

2.2、elasticsearch实例配置

a) 配置elasticsearch.yml

[root@VM-0-9-centos ~]# vim /apps/elasticsearch-7.13.4/config/elasticsearch.yml cluster.name: es_cluster_single_node_demonode.name: ${HOSTNAME}-nodepath.data: /es/node_9200/datapath.logs: /es/node_9200/logsnetwork.host: 172.21.0.9http.port: 9200transport.port: 9300discovery.seed_hosts: ["172.21.0.9:9300"]cluster.initial_master_nodes: ["172.21.0.9:9300"]

重要配置项说明:

cluster.name:集群名称,同一ES集群名称必须相同;

node.name:集群中当前节点名称。建议命名较高区分度,如:当前节点hostname,hostip等

path.data:ES实例存放数据目录;注:建议生产环境数据目录与应用程序隔离

path.logs:ES实例存放日志目录;注:建议生产环境数据目录与应用程序隔离

network.host:当前实例绑定的ip地址,注:如未绑定则无法通过ip地址访问

http.port:ES实例对外提供REST服务的端口,默认9200

transport.port:ES实例内部通信端口,默认9300

discovery.seed_hosts:数组形式存储ES集群节点信息,多个以逗号分隔

cluster.initial_master_nodes:ES集群启动时,引导默认的master节点,注:仅在集群第一次启动时候此配置有效。

b) 配置es堆内存大小  jvm.options

[root@VM-0-9-centos ~]# vim /apps/elasticsearch-7.13.4/config/jvm.options-Xms2g-Xmx2g

如何配置:

堆内存大小 =  Min(机器内存/2,  32GB) ;

即:取当前环境内存的一半和32GB内存中最小值。但最大配置尽量不等于32G,略小于32G;原理参考文末链接引用;

3、启动​​​​​​​

[root@VM-0-9-centos /]# mkdir -p /es/node_9200/data[root@VM-0-9-centos /]# mkdir -p /es/node_9200/logs[root@VM-0-9-centos /]# chown -R u_es /es
[u_es@VM-0-9-centos /]$ curl -i "http://172.21.0.9:9200"#响应如下:{  "name" : "VM-0-9-centos-node", // 自定义 ${HOSRTNAME}-node  "cluster_name" : "es_cluster_single_node_demo", // 自定义集群名称  "cluster_uuid" : "JNrB5g6uQI2A-E8tWAO1Pw",  "version" : {    "number" : "7.13.4",    "build_flavor" : "default",    "build_type" : "tar",    "build_hash" : "c5f60e894ca0c61cdbae4f5a686d9f08bcefc942",    "build_date" : "2021-07-14T18:33:36.673943207Z",    "build_snapshot" : false,    "lucene_version" : "8.8.2",    "minimum_wire_compatibility_version" : "6.8.0",    "minimum_index_compatibility_version" : "6.0.0-beta1"  },  "tagline" : "You Know, for Search"}

二、【单集群单节点多实例】

1、快速安装elasticsearch

本小节演示运行3个es实例 ,步骤如下:

1、es实例启动默认需要4G内存,为了避免启动后出现内存不足异常,配置es实例2G内存。​​​​​​​

# 配置文件:/apps/elasticsearch-7.13.4/config/vim jvm.options## -Xms4g## -Xmx4g修改为:(根据实际系统内存。注:不要留空格)-Xms2g-Xmx2g

2、为当前3个实例分别创建数据和日志目录如:/es/node_1/data、/es/node_1/logs并授权。​​​​​​​

# 创建/es/node_1/data、/es/node_1/logs 等目录[root@VM-0-5-centos /]# mkdir -p /es/node_1/data [root@VM-0-5-centos /]# mkdir -p /es/node_1/logs # 其他node_2、node_3目录创建省略  # 目录授权[root@VM-0-5-centos /]# chown -R u_es /es[root@VM-0-5-centos /]# su u_es

3、运行实例​​​​​​​

# 运行实例
[u_es@VM-0-9-centos apps]$ /apps/elasticsearch-7.13.4/bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1 -Epath.data=/es/node_1/data -Epath.logs=/es/node_1/logs
[u_es@VM-0-9-centos apps]$ /apps/elasticsearch-7.13.4/bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_2 -Epath.data=/es/node_2/data -Epath.logs=/es/node_2/logs
[u_es@VM-0-9-centos apps]$ /apps/elasticsearch-7.13.4/bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_3 -Epath.data=/es/node_3/data -Epath.logs=/es/node_3/logs

4、验证集群:​​​​​​​

[u_es@VM-0-5-centos /]$ curl -i http://localhost:9200{  "name" : "node_1",  "cluster_name" : "my_cluster",  "cluster_uuid" : "4XNVx25tRne-PHZ5FduFWA",  "version" : {    "number" : "7.13.4",    // 省略  },  "tagline" : "You Know, for Search"}[u_es@VM-0-5-centos /]$ curl -i http://localhost:9201{  "name" : "node_2",  "cluster_name" : "my_cluster",  "cluster_uuid" : "4XNVx25tRne-PHZ5FduFWA",  "version" : {    "number" : "7.13.4",    // 省略  },  "tagline" : "You Know, for Search"}[u_es@VM-0-5-centos /]$ curl -i http://localhost:9202{  "name" : "node_3",  "cluster_name" : "my_cluster",  "cluster_uuid" : "4XNVx25tRne-PHZ5FduFWA",  "version" : {    "number" : "7.13.4",    // 省略  },  "tagline" : "You Know, for Search"}

注:单机运行实例的默认端口为9200,当端口占用后,实例端口依次为9201,9202……可通过-E参数动态添加,如:-Ehttp.port=9201 指定端口。

三、单集群多节点单实例

上述【单集群单节点多实例】是以动态参数演示运行ES实例,测试时很方便,时间久了便容易忘记配置参数,且启动参数过长不易维护,实际生产环境以配置文件形式搭建集群,具体参见我的另一篇文章:Elasticsearch单集群多节点单实例环境搭建

四、ES可视化环境搭建

1、Kibana环境搭建。

参见我的另一篇文章:《Kibana环境搭建》

2、elasticsearch-head浏览器插件安装

浏览器扩展程序搜索 elasticsearch-head 并安装。

Elasticsearch环境搭建_第3张图片

效果图:

Elasticsearch环境搭建_第4张图片

五、可能出现问题:

1、jdk依赖问题

解决:当前版本elasticsearch7.13.4依赖jdk16,安装jdk即可。如何知道当前es的依赖呢?参见文末的参考文档:【es依赖】、【jdk下载】​​​​​​​

[root@VM-0-5-centos apps]# mkdir java[root@VM-0-5-centos java]# wget https://download.java.net/openjdk/jdk16/ri/openjdk-16+36_linux-x64_bin.tar.gz
[root@VM-0-5-centos java]# tar -zxvf openjdk-16+36_linux-x64_bin.tar.gz 
[root@VM-0-5-centos java]# vi /etc/profile
#配置内容如下:
ES_JAVA_HOME=/apps/java/jdk-16
PATH=$ES_JAVA_HOME/bin:$PATH
CLASSPATH=.:$ES_JAVA_HOME/lib/dt.jar:$ES_JAVA_HOME/lib/tools.jar
export ES_JAVA_HOME
export PATH
export CLASSPATH

[root@VM-0-5-centos java]# source /etc/profile
# 检查是否安装成功
[root@VM-0-5-centos java]# java -version
openjdk version "16" 2021-03-16
OpenJDK Runtime Environment (build 16+36-2231)
OpenJDK 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)

# 检查是否安装成功[root@VM-0-5-centos java]# java -versionopenjdk version "16" 2021-03-16OpenJDK Runtime Environment (build 16+36-2231)OpenJDK 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)

2、以root账户运行es异常

Elasticsearch环境搭建_第5张图片

说明:es出于安全考虑在高版本中不允许以root账户启动.

解决:创建一个u_es账户管理es实例。如下:

#出于安全考虑,在es高本版中已经不允许使用root账户启动,因此在启动es之前,创建一个单独的账户;# 为es创建账户1、创建用户[root@VM-0-9-centos apps]# adduser u_es
2、设置密码[root@VM-0-9-centos apps]# passwd u_es 更改用户 u_es 的密码 。新的 密码:es123456无效的密码:密码未通过字典检查 - 过于简单化/系统化重新输入新的 密码:es123456passwd:所有的身份验证令牌已经成功更新。
3、授权u_es[root@VM-0-9-centos apps]# chown -R u_es /apps/

3、内存不足

Elasticsearch环境搭建_第6张图片

调整es实例运行内存

# 配置文件:/apps/elasticsearch-7.13.4/config/vim jvm.options## -Xms4g## -Xmx4g修改为:(根据实际系统内存,注:前后不要留空格)-Xms2g-Xmx2g

4、数据锁定

Elasticsearch环境搭建_第7张图片

原因:多个es实例共用一个数据存储路径,导致冲突。es默认生成一些系统数据(索引、日志等),如果不指定es实例的数据存储路径,当启动后,默认使用 ${ES_HOME}/data存储数据;

解决:删除 elasticsearch目录下的data目录即可,指定es实例的数据的存储路径, 并以非root账户启动。

操作如下:

4.1、删除data数据:

[root@VM-0-9-centos apps]# rm -rf /apps/elasticsearch-7.13.4/data

4.2、配置path.data、path.logs路径

# 配置文件/apps/elasticsearch-7.13.4/config/elasticsearch.ymlpath.data: /es01/datapath.logs: /es01/logs

六、参考文档:

1.es安装概览文档:

https://www.elastic.co/guide/en/elasticsearch/reference/7.13/install-elasticsearch.html

2.linux环境下安装es文档:

https://www.elastic.co/guide/en/elasticsearch/reference/7.13/targz.html

3.elasticsearch依赖信息,如:jdk,lucene

https://www.elastic.co/guide/en/elasticsearch/reference/7.13/dependencies-versions.html

4、open-jdk下载文档:

http://jdk.java.net/java-se-ri/16

5、es堆内存设置原理

https://blog.csdn.net/laoyang360/article/details/79998974

6、引用李猛、铭毅天下两位大佬相关文章资料

你可能感兴趣的:(Elasticsearch,凡登,VFINE,ES)