7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑

ElasticSearch 集群

    • 一、环境准备
        • 1.版本环境最低 1.8JDK(本文14.0)
        • 2.网络对时:
        • 3.系统文件描述符,参数优化
    • 二、熟悉目录、配置文件
    • 三、部署集群
      • 1、安装 ElasticSearch
      • 2、部署 Head-web插件
      • 3、安装 kibana 查询工具
      • 4、部署中文分词器 ik 插件
        • 安装 ik:
        • **验证是否安装成功**

此文章敢说全网最新,无坑,且详细

官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch

镜像下载地址,logstash 用不上

elasticsarch :https://mirrors.huaweicloud.com/elasticsearch/7.6.2/

kibana:https://mirrors.huaweicloud.com/kibana/7.6.2/

logstash:https://mirrors.huaweicloud.com/logstash/7.6.2/


一、环境准备

1.版本环境最低 1.8JDK(本文14.0)

JDK下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html

[root@localhost ~]# tar -zxvf jdk-14.0.1_linux-x64_bin.tar.gz -C /usr/src
[root@localhost ~]# mv /usr/src/jdk-14.0.1/  /usr/local/java
[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java
> export JRE_HOME=/usr/local/java/jre
> export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
> export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin ' >> /etc/profile
[root@localhost ~]# rm -rf /usr/bin/java
[root@localhost ~]# source /etc/profile

2.网络对时:

ntpdate ntp.ntsc.ac.cn

3.系统文件描述符,参数优化

查看: ulimit -n
临时设置: ulimit -HSn 2048
通过配置文件永久设置:/etc/security/limits.conf
ES 要求系统文件描述符 > 65535


#软限制文件数  soft nofile 
[root@node1 ~]# echo '* soft nofile 655360' >> /etc/security/limits.conf
#硬限制文件数  
[root@node1 ~]# echo '* hard nofile 655360' >> /etc/security/limits.conf

#软限制用户可用进程数 soft nproc 
[root@node1 ~]# echo '* soft nproc 2048' >> /etc/security/limits.conf
#硬限制用户可用进程数 hard nproc
[root@node1 ~]# echo '* hard nproc 4096' >> /etc/security/limits.conf

#JVM能够使用的最大线程数
[root@node1 ~]# echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
[root@node1 ~]# sysctl -p
vm.max_map_count = 655360

#root 用户下直接生效 ulimit
echo 'root soft nofile 655360
root hard nofile 655360
root  soft nproc 655360
root  hard nproc 655360 ' >> /etc/security/limits.conf

重新登录,或者重新连接 xshell


二、熟悉目录、配置文件

--- bin	启动文件
--- config 配置文件
	- elasticsearch.yml 		#ES 主配置文件
	- jvm.options			#java 虚拟机配置
	- log4j2.properties		#日志文件配置
--- lib 		#jar包文件
--- modules 		#功能模块
--- plugins		#插件 (ik插件的存放目录)
--- logs		#日志输出文件
--- data 		#data节点的索引数据存放目录


三、部署集群

1、安装 ElasticSearch

主机 IP 节点
ES_1 192.168.168.4 Master节点
ES_2 192.168.168.5 Data节点
ES_3 192.168.168.6 Date节点

创建用户
[root@node2 ~]# useradd es

安装 es 软件包
[root@node2 ~]# tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz
[root@node2 ~]# cp -rf elasticsearch-7.6.2 /usr/local/es

设置目录属主属组
[root@node2 ~]# chown -R es:es /usr/local/es/ /es

修改 Master节点 elasticsearch.yml 主配置文件

[root@node1 ~]# vim /usr/local/es/config/elasticsearch.yml
---
17 cluster.name: my-application				#集群名称
23 node.name: mster					#节点名称
# node.data: true					#真实环境下不要既当数据节点又当管理
25 node.master: true				   
------ Paths -------
35 path.data: /usr/local/es/data			#存放数据目录
39 path.logs: /usr/local/es/logs			#存放日志目录

------ Network ------
network.host: 192.168.168.4				# 本机IP地址
http.port: 9200					    # 管理端口,对外端口
transport.tcp.port: 9300		   	 # 集群间通讯端口,数据端端口

------ Discovery ------		
71 discovery.seed_hosts: ["192.168.168.4","192.168.168.5","192.168.168.6"]
						#将集群内所有数据节点主机加到管理节点上

75 discovery.zen.minimum_master_nodes: 2	
						#存在几个存活有选举资格的数据节点才可以进行选举

76 discovery.zen.ping_timeout: 120s		#最大超时时间

cluster.initial_master_nodes: ["192.168.168.4"]	#填写主节点地址,或者 localhost/127.0.0.1都行

------ Gateway ------
84 gateway.recover_after_nodes: 3 		#集群重启时有3个节点正常开始数据恢复
85 gateway.recover_after_time: 5m		#等待5分钟
86 gateway.recover_after_data_nodes: 2	#等待有3个节点有数据恢复,等5分钟。如果5分钟之后没有3个节点正常,那么2个节点也数据恢复

#--- 末尾,跨域访问
http.cors.enabled: true					#允许跨域访问
http.cors.allow-origin: "*"				#允许所有主机访问

修改 Data 节点 elasticsearch.yml 主配置文件

[root@node1 ~]# vim /usr/local/es/config/elasticsearch.yml
---
17 cluster.name: my-application			#集群名称
23 node.name: node-1				#节点名称
24 node.data: true				#数据节点   

network.host: 192.168.168.5			# 本机IP地址
[root@node1 ~]# vim /usr/local/es/config/elasticsearch.yml
---
17 cluster.name: my-application			#集群名称
23 node.name: node-2				#节点名称
24 node.data: true				#数据节点   

network.host: 192.168.168.6			# 本机IP地址

启动ES

#启动集群
[root@node1 ~]# su es
[es@node1 root]$ /usr/local/es/bin/elasticsearch

-------------------------------------------------------------
#查看集群当前状态
[root@node1 ~]# curl http://192.168.168.9:9200/_cluster/state?pretty

7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑_第1张图片


2、部署 Head-web插件

Head 插件可以根 ES-Master 节点放在一起。

gihub下载地址:https://github.com/mobz/elasticsearch-head

1、准备 node.JS 环境

[root@es_1 ~]# tar -xvf node-v12.18.2-linux-x64.tar.xz 
[root@es_1 ~]# mkdir /usr/local/node_js
[root@es_1 ~]# mv node-v12.18.2-linux-x64/*  /usr/local/node_js
[root@es_1 ~]# ls /usr/local/node_js
bin  CHANGELOG.md  include  lib  LICENSE  README.md  share
[root@es_1 ~]# echo 'export PATH=$PATH:/usr/local/node_js/bin' >> /etc/profile
[root@es_1 ~]# source /etc/profile
[root@es_1 ~]# node -v
v12.18.2
[root@es_1 ~]# npm -v
6.14.5

2、安装 Head - web 依赖插件

[root@es_1 ~]# git clone git://github.com/mobz/elasticsearch-head.git
[root@es_1 ~]# cp -rf elasticsearch-head-master /usr/local/ES_head
[root@es_1 ~]# cd /usr/local/ES_head/
[root@es_1 ES_head]# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@es_1 ES_head]# cnpm install 

3、解决 Head - web 的跨域问题

vim /usr/local/es/config/elasticsearch.yml 主配置文件

#--- 末尾,添加跨域访问
http.cors.enabled: true					#允许跨域访问
http.cors.allow-origin: "*"				#允许所有主机访问

4、 启动 Head - web

[root@es_1 ~]# cd /usr/local/ES_head
[root@es_1 ES_head]# npm run start

> [email protected] start /usr/local/ES_head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

5、访问 Head -web

http://192.168.168.4:9100
Head-web 插件,把他当成数据库来使用,它最优秀的功能就是查看集群状态,集群分片情况,以及索引库的数据内容。查询功能很垃圾,有更好的kibana
7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑_第2张图片

建立索引,索引其实就是 ElasticSearch 存储数据的库,可以理解成数据库。

7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑_第3张图片

一个索引(数据库)都索引了哪些数据呢,都存储了哪些东西呢,在资料浏览中可以看到

7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑_第4张图片

查询不要用 Head 自带的复合查询,到 kibana 里面去查询,比这个功能强大。


3、安装 kibana 查询工具

​ Kibana 是一个针对 ElasticSearch 的开源分析以及可视化平台,用来搜索、查看交互存储在 ElasitcSearch 索引中的数据。

​ 使用 Kibana,可以通过各种图表进行高级数据分析以及展示。

​ kibana 让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示 ElasticSearch 查询动态。设置 Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成 Kibana 安装并启动 ElasticSearch 索引检测。

官网下载地址:https://www.elastic.co/downloads/kibana
需要注意 kibana 版本要与 ES 版本相对应,可以安装到 Master节点上。

[root@es_1 src]# tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz -C /usr/src/
[root@es_1 src]# cp -rf kibana-7.6.2-linux-x86_64/ /usr/local/kibana
[root@es_1 kibana]# useradd kibana
[root@es_1 kibana]# chown -R kibana:kibana /usr/local/kibana/

修改配置文件 /usr/local/kibana/config/kibana.yml

server.port: 5601
server.host: "192.168.168.4"
elasticsearch.hosts: ["http://192.168.168.4:9200"]
i18n.locale: "zh-CN"		#汉化工具你要是英语特别NB,可以不改这个

启动 kibana,不能使用root用户

[root@es_1 kibana]# su kibana
[kibana@es_1 kibana]$/usr/local/kibana/bin/kibana

7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑_第5张图片
所有的查询命令都在这个开发工具里写
这个工具在页面最左边菜单栏,的倒数第二个

7.X(7.6.2) ElasticSearch,ES集群搭建_head_ik绝对无坑_第6张图片


4、部署中文分词器 ik 插件

​ 分词:把一段中文或者英文,划分成为一个个的关键字,我们在搜索的时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词。

​ 然后进行一个匹配,默认的中文分词是将每个字看成一个词,比如“孙海铭最帅”,会被分解成“孙”,“海”,“铭”,“最”,“帅”。这显然是不符合要求的,所以需要 ik 中文分词器来解决这个问题。

IK 分词算法:

ik_smart:最少切分

ik_max_word:最精细切分


安装 ik:

github 安装地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

注意:ik 分词器版本要与 ES相对应

[root@es_1 ~]# unzip elasticsearch-analysis-ik-7.6.2.zip  -d  /usr/local/es/plugins/ik
[root@es_1 ~]# ll /usr/local/es/plugins/ik/	#此目录需要重新确认属主属组
[root@es_1 ~]# ll /usr/local/es/config/elasticsearch.keystore #此文件

重启 ES - Master节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UeGkctXC-1594348650949)(C:\Users\86156\Pictures\devops\ELK\批注 2020-07-10 093537.png)]

验证是否安装成功

elasticsearch-plugin list 可以查看所有安装的插件

[root@es_1 es]# bin/elasticsearch-plugin list
ik

如果您是运维人员,想要深入学习 ES 的索引查询、索引增删改查、请继续看我的 Kibana 分词器详细操作步骤。

你可能感兴趣的:(ELK)