Elasticsearch在Linux环境下的2种运行和停止方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch在Linux环境下的2种运行和停止方式相关的知识,希望对你有一定的参考价值。
参考技术A 最近在学习elasticsearch,我之前对这个还是个菜鸟经过2天的学习来记录下我自己关于Elasticsearch在Linux环境下的2种启动和停止方式:第一种:
1、前台运行:
运行结果
2、ctrl+c停止运行
停止后:
第二种:后端运行
1、后端运行的命令
bin/elasticsearch -d
结果
2、查看elasticsearch被那个端口占用和停止
2-1、采用jps命令查看
2-2、采用kill -9 端口来停止运行
所以:
若是es的前台运行,则用ctrl + c来停止。
若是es的后台运行,则用kill -9 进程号来停止。
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
[root@hadoop102 ~]# setenforce 0
[root@hadoop102 ~]# vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
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
(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
3、上传es安装包到/tmp目录
[root@hadoop102 ~]# ls /tmp/|grep elasticsearch
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
注意: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在Linux环境下的2种运行和停止方式的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch-5.2.1在windows下的安装方法