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

博观而约取,厚积而薄发。这篇文章主要讲述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环境搭建

文章图片

[root@hadoop102 ~]# setenforce 0
Elasticsearch掰开揉碎第2篇linux环境搭建

文章图片

[root@hadoop102 ~]# vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
Elasticsearch掰开揉碎第2篇linux环境搭建

文章图片

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环境搭建

文章图片

(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环境搭建

文章图片

3、上传es安装包到/tmp目录
[root@hadoop102 ~]# ls /tmp/|grep elasticsearch
Elasticsearch掰开揉碎第2篇linux环境搭建

文章图片

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环境搭建

文章图片

注意: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"

(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
修改前

修改后

节点2操作
[es@hadoop102 config]$ cd /usr/local/elasticsearch/es2/elasticsearch-7.8.0/config
[es@hadoop102 config]$ vi jvm.options
修改前

修改后

节点3操作
[es@hadoop102 config]$ cd /usr/local/elasticsearch/es3/elasticsearch-7.8.0/config
[es@hadoop102 config]$ vi jvm.options
修改前

修改后

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

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

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

(2)、在浏览器中输入
http://192.168.8.102:9201/

http://192.168.8.102:9202/

http://192.168.8.102:9203/

兄弟们,如果你测试显示的和我是一样的,恭喜恭喜,你在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



http://192.168.8.103:9200



http://192.168.8.104:9200

11、集群测试es
在浏览器中输入
http://192.168.8.102:9200/_cluster/health?pretty  



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

兄弟们,如果你测试显示的和我是一样的,恭喜恭喜,你在linux下已经成功搭建了,Elasticsearch的集群环境。
结束语至此,Elasticsearch掰开揉碎系列的第2篇就结束了,本篇文章中主要是针对linux环境下,进行Elasticsearch的伪集群和集群环境搭建。
但是我知道有太多的新手兄弟了,他们可能并不会linux相关的操作,这样就提高了他们的学习门槛,或者直接让他们夭折在学习的路上。所以,下一篇我带来的是在windows环境中,搭建属于你的Elasticsearch环境。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!












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


    推荐阅读