Elasticsearch掰开揉碎第2篇linux环境搭建

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch掰开揉碎第2篇linux环境搭建相关的知识,希望对你有一定的参考价值。

引言

上一篇主要讲了:Elasticsearch进行了简单介绍、官方下载、第3方下载源、linux环境的单机搭建。

本篇主要讲解的是在linux环境下:Elasticsearch的伪集群、Elasticsearch的集群。为什么要讲解2种集群搭建:伪集群集群搭建?因为很多兄弟的电脑配置不高,无法开启多台虚拟机,还想感受集群的操作,那你就可以搭建伪集群。如果你的配置非常给力,那你就直接集群搭建。

linux下的Elasticsearch伪集群

伪集群:其实就是在1台服务器上,通过不同的端口虚拟出多个Elasticsearch的节点。让使者都感觉好像连接到多台Elasticsearch服务器操作,但其实所有任务还是在当前这1台Elasticsearch服务器完成,并没有实现均衡负载。

1、关闭防火墙和SELinux

[root@hadoop102 ~]# systemctl stop firewalld

[root@hadoop102 ~]# systemctl disable firewalld

Elasticsearch掰开揉碎第2篇linux环境搭建_elk

[root@hadoop102 ~]# setenforce 0

Elasticsearch掰开揉碎第2篇linux环境搭建_hadoop_02

[root@hadoop102 ~]# vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

Elasticsearch掰开揉碎第2篇linux环境搭建_elasticsearch_03

2、安装JDK

(1)、卸载现有JDK

[root@hadoop102]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

(2)、将JDK上传到/opt/software文件夹

[root@hadoop102 ~]# mkdir -p /opt/software/  /opt/module/

[root@hadoop102 ~]# chmod 777 -R /opt

Elasticsearch掰开揉碎第2篇linux环境搭建_java_04

(3)、解压JDK到/opt/module目录下

[root@hadoop102]# tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/

(4)、配置环境变量

[root@hadoop102 ~]# vi /etc/profile  #追加

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_212

export PATH=$PATH:$JAVA_HOME/bin

(5)、让环境变量生效

[root@hadoop102 ~]# source /etc/profile

(6)、测试JDK是否安装成功

[root@hadoop102 ]# java -version

Elasticsearch掰开揉碎第2篇linux环境搭建_elk_05

3、上传es安装包到/tmp目录

[root@hadoop102 ~]# ls /tmp/|grep elasticsearch

Elasticsearch掰开揉碎第2篇linux环境搭建_java_06

4、创建es安装的目录

[root@hadoop102 ~]# mkdir -p /usr/local/elasticsearch/es1

[root@hadoop102 ~]# mkdir -p /usr/local/elasticsearch/es2

[root@hadoop102 ~]# mkdir -p /usr/local/elasticsearch/es3

5、创建普通用户安装es软件

[root@hadoop102 ~]# groupadd es

[root@hadoop102 ~]# useradd es -g es

[root@hadoop102 ~]# chown -Rf es:es /usr/local/elasticsearch/

[root@hadoop102 ~]# su - es

Elasticsearch掰开揉碎第2篇linux环境搭建_java_07

注意:es不允许root用户操作,只能是非root用户操作。

6、解压es软件到指定目录

[es@hadoop102 ~]$ tar zxvf /tmp/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elasticsearch/es1

[es@hadoop102 ~]$ tar zxvf /tmp/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elasticsearch/es2

[es@hadoop102 ~]$ tar zxvf /tmp/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elasticsearch/es3

7、指定es使用jdk

es自带的jdk路径:/usr/local/elasticsearch/es1/elasticsearch-7.8.0/jdk    

根据自己安装的路径修改,我把es安装到/usr/local/elasticsearch/es1/目录

(1)、节点1操作

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/es1/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ vi elasticsearch-env

在 set -e -o pipefail 下面加入

JAVA_HOME="/usr/local/elasticsearch/es1/elasticsearch-7.8.0/jdk"

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_08

(2)、节点2操作

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/es2/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ vi elasticsearch-env

在 set -e -o pipefail 下面加入

JAVA_HOME="/usr/local/elasticsearch/es2/elasticsearch-7.8.0/jdk"

(3)、节点3操作

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/es3/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ vi elasticsearch-env

在 set -e -o pipefail 下面加入

JAVA_HOME="/usr/local/elasticsearch/es3/elasticsearch-7.8.0/jdk"

8、修改资源限制和es配置

(1)、root用户操作

[root@hadoop102 ~]# vi /etc/security/limits.conf  最后追加如下

* hard nofile 65536

* soft nofile 131072

* hard nproc 4096

* soft nproc 2048

说明:

nofile :任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接

nproc:任何用户可以打开的最大进程数

(2)、root用户操作

[root@hadoop102 ~]# vi /etc/sysctl.conf    最后追加如下:

vm.max_map_count=655360

fs.file-max=655360

说明:

max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量

fs.file-max:系统级打开最大文件句柄的数量

让上面的修改配置生效

[root@hadoop102 ~]# sysctl -p    

(3)、es用户操作

节点1操作

[es@hadoop102 ]$ cd /usr/local/elasticsearch/es1/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi elasticsearch.yml      #追加

cluster.name: escluster

node.name: node-1

network.host: 0.0.0.0

http.port: 9201

http.cors.enabled: true  

http.cors.allow-origin: "*"

discovery.seed_hosts: ["192.168.8.102","192.168.8.102","192.168.8.102"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

配置说明:

cluster.name: escluster【集群的名字】

node.name: node-1【节点的名字】

network.host: 0.0.0.0【任何IP都能访问】

http.port: 9200【开放端口9200】

【支持跨域,为了让类似head的第3方插件可以请求es】

http.cors.enabled: true  

http.cors.allow-origin: "*"

【集群发现配置】

discovery.seed_hosts: ["192.168.8.102","192.168.8.102","192.168.8.102"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

此处有一个坑,后缀是yml的文件,它里面每一行的配置中,:后面要有1个空格。可以用图标识出来。

节点2操作

[es@hadoop102 ]$ cd /usr/local/elasticsearch/es2/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi elasticsearch.yml    #追加

cluster.name: escluster

node.name: node-2

network.host: 0.0.0.0

http.port: 9202

http.cors.enabled: true  

http.cors.allow-origin: "*"

discovery.seed_hosts: ["192.168.8.102","192.168.8.102","192.168.8.102"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

此处有一个坑,后缀是yml的文件,它里面每一行的配置中,:后面要有1个空格。可以用图标识出来。

节点3操作

[es@hadoop102 ]$ cd /usr/local/elasticsearch/es3/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi elasticsearch.yml    #追加

cluster.name: escluster

node.name: node-3

network.host: 0.0.0.0

http.port: 9203

http.cors.enabled: true  

http.cors.allow-origin: "*"

discovery.seed_hosts: ["192.168.8.102","192.168.8.102","192.168.8.102"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

此处有一个坑,后缀是yml的文件,它里面每一行的配置中,:后面要有1个空格。可以用图标识出来。

9、修改es使用的内存

es默认启动需要1G内存,如果机器配置低,需要把es需要的内存调小到512M

节点1操作

[es@hadoop102 config]$ cd /usr/local/elasticsearch/es1/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi jvm.options

修改前

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_09

修改后

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_10

节点2操作

[es@hadoop102 config]$ cd /usr/local/elasticsearch/es2/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi jvm.options

修改前

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_09

修改后

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_10

节点3操作

[es@hadoop102 config]$ cd /usr/local/elasticsearch/es3/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi jvm.options

修改前

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_09

修改后

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_10

10、修改es安装目录权限

使用root用户操作

[root@hadoop102 ~]# chown -Rf es:es /usr/local/elasticsearch/    

11、启动es

使用es用户操作

节点1操作

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/es1/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ ./elasticsearch -d

节点2操作

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/es2/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ ./elasticsearch -d

节点3操作

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/es3/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ ./elasticsearch -d

12、访问测试

(1)、新开一个命令窗口输入

[es@hadoop102 ~]$ curl http://127.0.0.1:9201

Elasticsearch掰开揉碎第2篇linux环境搭建_elk_15

[es@hadoop102 ~]$ curl http://127.0.0.1:9202

Elasticsearch掰开揉碎第2篇linux环境搭建_elk_16

[es@hadoop102 ~]$ curl http://127.0.0.1:9203

Elasticsearch掰开揉碎第2篇linux环境搭建_elasticsearch_17

(2)、在浏览器中输入

http://192.168.8.102:9201/

Elasticsearch掰开揉碎第2篇linux环境搭建_java_18

http://192.168.8.102:9202/

Elasticsearch掰开揉碎第2篇linux环境搭建_elasticsearch_19

http://192.168.8.102:9203/

Elasticsearch掰开揉碎第2篇linux环境搭建_elk_20

兄弟们,如果你测试显示的和我是一样的,恭喜恭喜,你在linux下已经成功搭建了,Elasticsearch的伪集群环境

linux下的Elasticsearch集群

集群:就是在多台服务器上,分别独立安装Elasticsearch软件。当使者操作连接Elasticsearch集群时,操作的任务是分发给集群中的多个Elasticsearch节点的,实现了均衡负载。

集群和伪集群搭建过程非常相似,经过前面伪集群环境的搭建,相信大家已经非常熟悉操作的过程了。所以在集群环境搭建的过程中,我就只写上注意事项和命令,就不上传图片了。

1、创建目录(所有节点)

[root@hadoop102 ~]# mkdir -p /usr/local/elasticsearch

2、创建普通用户(所有节点)

[root@hadoop102 ~]# groupadd es

[root@hadoop102 ~]# useradd es -g es

[root@hadoop102 ~]# chown -Rf es:es /usr/local/elasticsearch/

[root@hadoop102 ~]# su - es

3、上传es软件到 /tmp目录 并解压(所有节点)

[es@hadoop102 ~]$ tar zxvf /tmp/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elasticsearch

4、启动报错1(所有节点)

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin

[root@hadoop102 bin]# ./elasticsearch

future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_144/jre] does not meet this requirement

future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_144/jre] does not meet this requirement

[2021-06-10T21:07:29,154][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [hadoop102] uncaught exception in thread [main]

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

报错原因:

环境变量不符合,当前是jdk8版本,es需要的是jdk11。同时不要使用root用户操作。

es自己带的jdk11,所在路径如下:

/usr/local/elasticsearch/elasticsearch-7.8.0/jdk    

5、启动报错1解决(所有节点)

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ vi elasticsearch-env

在 set -e -o pipefail 下面加入

JAVA_HOME="/usr/local/elasticsearch/elasticsearch-7.8.0/jdk"

6、启动报错2(所有节点)

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ ./elasticsearch      

错误细节1、

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

错误细节2、

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

错误细节3、

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

7、启动报错解决2(所有节点)

错误细节1对应解决方案

root用户操作

[root@hadoop102 ~]# vi /etc/security/limits.conf  最后追加如下

* hard nofile 65536

* soft nofile 131072

* hard nproc 4096

* soft nproc 2048

错误细节2对应解决方案

root用户操作

[root@hadoop102 ~]# vi /etc/sysctl.conf    最后追加如下:

vm.max_map_count=655360

fs.file-max=655360

让上面的修改配置生效

[root@hadoop102 ~]# sysctl -p    

错误细节3对应解决方案

es用户操作

[es@hadoop102 config]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/config

[es@hadoop102 config]$ vi elasticsearch.yml   最后面追加

cluster.name: escluster   【集群的名字】

node.name: node-1    【节点的名字】

network.host: 0.0.0.0   【任何IP都能访问】

http.port: 9200     【开放端口9200】

【支持跨域,为了让类似head的第3方插件可以请求es】

http.cors.enabled: true  

http.cors.所有节点ow-origin: "*"

【集群发现配置】

discovery.seed_hosts: ["192.168.8.102","192.168.8.103","192.168.8.104"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

[es@hadoop103 config]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/config

[es@hadoop103 config]$ vi elasticsearch.yml   最后面追加

cluster.name: escluster   【集群的名字】

node.name: node-2    【节点的名字】

network.host: 0.0.0.0   【任何IP都能访问】

http.port: 9200     【开放端口9200】

【支持跨域,为了让类似head的第3方插件可以请求es】

http.cors.enabled: true  

http.cors.所有节点ow-origin: "*"

【集群发现配置】

discovery.seed_hosts: ["192.168.8.102","192.168.8.103","192.168.8.104"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

[es@hadoop104 config]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/config

[es@hadoop104 config]$ vi elasticsearch.yml   最后面追加

cluster.name: escluster   【集群的名字】

node.name: node-3   【节点的名字】

network.host: 0.0.0.0  【任何IP都能访问】

http.port: 9200     【开放端口9200】

【支持跨域,为了让类似head的第3方插件可以请求es】

http.cors.enabled: true  

http.cors.所有节点ow-origin: "*"

【集群发现配置】

discovery.seed_hosts: ["192.168.8.102","192.168.8.103","192.168.8.104"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

discovery.zen.ping_timeout: 60s

8、启动es(所有节点)

[root@hadoop102 ~]# su - es

[es@hadoop102 ]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0

[es@hadoop102 ]$ bin/elasticsearch -d    【后台启动】

9、关闭es(所有节点)

当你有需要时,再关闭es

[root@hadoop102 ~]# ps -ef|grep elastic

[root@hadoop102 ~]# kill -9 上一步查出的pid

10、单节点测试es

1、新开窗口(所有节点)

[es@hadoop102 ~]$ curl http://127.0.0.1:9200

 "name" : "node-1",

 "cluster_name" : "escluster",

 "cluster_uuid" : "9g6K0fW1TG6oeQxKRxfUxQ",

 "version" :

   "number" : "7.8.0",

   "build_flavor" : "default",

   "build_type" : "tar",

   "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",

   "build_date" : "2020-06-14T19:35:50.234439Z",

   "build_snapshot" : false,

   "lucene_version" : "8.5.1",

   "minimum_wire_compatibility_version" : "6.8.0",

   "minimum_index_compatibility_version" : "6.0.0-beta1"

 ,

 "tagline" : "You Know, for Search"

[es@hadoop103 ]$ curl http://127.0.0.1:9200

[es@hadoop104 ]$ curl http://127.0.0.1:9200

2、在浏览器中输入

http://192.168.8.102:9200

Elasticsearch掰开揉碎第2篇linux环境搭建_hadoop_21


http://192.168.8.103:9200

Elasticsearch掰开揉碎第2篇linux环境搭建_java_22


http://192.168.8.104:9200

Elasticsearch掰开揉碎第2篇linux环境搭建_hadoop_23

11、集群测试es

在浏览器中输入

http://192.168.8.102:9200/_cluster/health?pretty  

Elasticsearch掰开揉碎第2篇linux环境搭建_linux_24


http://192.168.8.102:9200/_cat/health?v

Elasticsearch掰开揉碎第2篇linux环境搭建_java_25

兄弟们,如果你测试显示的和我是一样的,恭喜恭喜,你在linux下已经成功搭建了,Elasticsearch的集群环境

结束语

至此,Elasticsearch掰开揉碎系列的第2篇就结束了,本篇文章中主要是针对linux环境下,进行Elasticsearch的伪集群和集群环境搭建。

但是我知道有太多的新手兄弟了,他们可能并不会linux相关的操作,这样就提高了他们的学习门槛,或者直接让他们夭折在学习的路上。所以,下一篇我带来的是在windows环境中,搭建属于你的Elasticsearch环境。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!








以上是关于Elasticsearch掰开揉碎第2篇linux环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch掰开揉碎第9篇Java基础环境搭建

Elasticsearch掰开揉碎第10篇maven项目

Elasticsearch掰开揉碎第6篇Kibana详解

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇

Elasticsearch掰开揉碎第12篇java操作ES常用API

Llinux课程计划安排