linux centos7.9安装 ES 和 kibana 集群

linux centos7.9 安装 ES 和 kibana 集群

logstash 安装完没派上用场,不过启动之后就能用,我们公司环境没要求安装logstash。

话不多说,开始入坑。

系统IP主机名所属服务
centos7.9192.168.232.68elasticsearchelasticsearch-master logstash kibana
centos7.9192.168.232.69elasticsearch01elasticsearch-node
centos7.9192.168.232.70elasticsearch02elasticsearch-node

一、部署

1.下载服务安装包

jdk				(三台服务器都需要)
wget https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz

logstash		(192.168.232.68需要)
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.2-linux-x86_64.tar.gz

Elasticsearch	(三台服务器都需要)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-linux-x86_64.tar.gz

中文ik分词器		(三台服务器都需要)
gitlab官网:https://github.com/medcl/elasticsearch-analysis-ik
登录官网自行下载

elasticsearch-head(192.168.232.68需要)
wget https://cdn.npmmirror.com/binaries/node/v14.15.0/node-v14.15.0-linux-x64.tar.xz

kibana			 (192.168.232.68需要)
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.5.2-linux-x86_64.tar.gz

Metricbeat组件 	 (192.168.232.68需要)
官网:https://www.elastic.co/cn/downloads/past-releases#metricbeat
下载的组件需要和 elasticsearch 版本相同
我下载的是tar包,也可以是rpm包
wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.5.2-linux-x86_64.tar.gz


以上就是所需要的安装包
开始解压部署
部署Elasticsearch (以下操作3台服务器都做)
yum -y install wget  git net-tools unzip  lrzsz  vim

操作系统优化

1 设置打开的文件句柄数和线程数
vim /etc/security/limits.conf

#添加
# soft:软限制;hard:硬限制
# nproc:单个用户可打开的进程最大数
# nofile:单个进程打开文件最大数
# as:地址空间限制(unlimited:无限)
# fsize:最大文件大小
# memlock:最大锁定内存地址空间
*               soft    nproc           65536
*               hard    nproc           65536
*               soft    nofile          65536
*               hard    nofile          65536
*               -       as              unlimited
*               -       fsize           unlimited
*               -       memlock         unlimited

2 关闭 swap 交换空间
swapoff -a && sed -i '/swap/s/^.*$/#&/' /etc/fstab

3 设置虚拟内存大小和 TCP 超时重传次数
vim /etc/sysctl.conf
#添加
vm.max_map_count=262144
net.ipv4.tcp_retries2=5

#默认情况下 TCP keepalive 时间为 60 秒,超时重传 15 次。
sysctl -p

## vim /etc/profile
export LOG4J_FORMAT_MSG_NO_LOOKUPS=true


4.配置主机名解析

   cat << "EOF" >>  /etc/hosts
   192.168.232.68  elasticsearch
   192.168.232.69  elasticsearch01	
   192.168.232.70  elasticsearch02
   EOF
开始安装 Elasticsearch 只在192.168.232.68操作

1.解压 Elasticsearch和jdk

mkdir /home/opt/
tar -xvf elasticsearch-8.5.2-linux-x86_64.tar.gz -C /home/opt
tar -xf jdk-18_linux-x64_bin.tar.gz  -C /home/opt/

2.配置java

ln -s /home/opt/jdk-18.0.2/bin/java /usr/bin/java

3.配置环境变量

vim /etc/profile

LS_JAVA_HOME=/home/opt/jdk1.8.0_231
JRE_HOME=/home/opt/jdk1.8.0_231
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZK_HOME/bin:$PATH:$KAFKA_HOME/bin:$FLUME_HOME/bin:$PATH
CLASSPATH=.:$LS_JAVA_HOME/lib/dt.jar:$LS_JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$KAFKA_HOME/bin:$FLUME_HOME/bin:$PATH
export LS_JAVA_HOME JRE_HOME FLUME_HOME FLUME_CONF_DIR ZK_HOME KAFKA_HOME PATH CLASSPATH

保存退出
刷新环境变量
source /etc/profile

4.创建 esuser 用户、data目录

useradd -u 9200 esuser
mkdir -p /data/elasticsearch/{data,logs,temp}
chown -R esuser:esuser /home/opt/elasticsearch-8.5.2/  /data/elasticsearch/

5.修改配置

vim  /home/opt/elasticsearch-8.5.2/bin/elasticsearch-env
找到  if [ ! -z "$JAVA_OPTS" ]  的行注释掉
意思是不使用ES自带的JDK 使用本地安装的。
8.0以前的版本这几行是在39行左右 
8.5以后的版本是在65行左右 如图:

在这里插入图片描述

JVM 优化
vim /home/opt/elasticsearch-8.5.2/config/jvm.options
根据需求修改

-Xms10g
-Xmx10g
#-Xms 和 -Xmx 大小最好相同。
#-Xmx 不要超过物理内存的 50%.

开始修改配置文件

vim /home/opt/elasticsearch-8.5.2/config/elasticsearch.yml

cluster.name: es-devops   #集群名称
node.name: elasticsearch  #节点名称

#### - - ---- - - - - 注意  注意 注意 这里角色分配 - - - --  - - - ###

########----------这些角色只需要在kibana安装节点配置 ,且需要使用堆栈监测功能--------#############
node.roles: [master,data,ingest, ml, transform, remote_cluster_client]
########----------如果使用堆栈功能,需要把安全认证关闭------------------#############

######## ------- 正常情况下配置两个角色足够 -----------#########
node.roles: [master,data] # 注意至少有两个具有选举master资格的节点

path.data: /data/elasticsearch/data # 数据存储位置
path.logs: /data/elasticsearch/logs #日志存储位置
bootstrap.memory_lock: false
network.host: 0.0.0.0 #允许连接IP
# 允许跨域
http.port: 9200 # 网页访问端口
http.cors.enabled: true

http.cors.allow-origin: "*"
http.cors.allow-headers: "*"
cluster.initial_master_nodes: ["elasticsearch", "elasticsearch01", "elasticsearch02"]
action.destructive_requires_name: false
discovery.seed_hosts: ["192.168.232.68:9300", "192.168.232.69:9300", "192.168.232.70:9300"] 
# 集群成员

#如果关闭安全认证需要使用以下方法,我默认是关闭状态 如果开启安全认证 使用如下方法
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false
如图:192.168.232.68 (master)

在这里插入图片描述

如图:192.168.232.69(从) 192.168.232.70(从)
两台从节点几乎没变化 改一下节点名称就可以了,配置一模一样

在这里插入图片描述

角色介绍

 master:master准确的来说是具有成为master节点资格的节点,即master-eligible node,
 具体哪个节点会成为master node 则由master选举算法选举出来的。 

 data: 又称数据节点,包含已建立索引的文档的分片,数据节点处理与数据相关的操作,例如 CRUD,搜索和聚合
 
 ingest: 又称摄取节点,可以执行由一个或多个ingest processor组成的预处理pipeline。用于对写入	
 或者查询的数据进行预处理,即可以将部分client需要预处理的工作放到了server端,如常见的格式转换,
 空值处理以及时间处理。 可以通过  GET _ingest/pipeline 来查看所有的ingest processor,
 并在查询或者写入数据时配置相关的processor来进行数据预处理。 
 
 ml:  X-pack专用角色,又称机器学习节点,提供了机器学习功能,该节点运行作业并处理机器学习 API 请求 。
 
 transform: X-pack专用角色,又称转换节点,运行转换并处理转换 API 请求。 
 如果你只有 OSS 发行版,请不要使用这些设置。

remote_cluster_client: 是跨集群连接时需要用到的client节点,又称跨集群节点
默认情况下,集群中的任何节点都可以充当跨集群客户端并连接到其他集群。  
连接后,你可以使用跨集群搜索来搜索远程集群。
你还可以使用跨集群复制在集群之间同步数据。这些操作实现的基础就是远程连接节点。
开启安全认证方法:
首先修改配置文件 把配置文件里的false 改为 true 然后指定证书位置,证书位置如下生成
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#添加以下配置
xpack.security.transport.ssl.verification_mode: none
xpack.security.transport.ssl.keystore.path:   /home/opt/elasticsearch-8.5.2/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /home/opt/elasticsearch-8.5.2/config/certs/elastic-certificates.p12
ingest.geoip.downloader.enabled: false
xpack.monitoring.collection.enabled: true
生成证书 为Elasticsearch集群创建一个证书颁发机构。
cd /home/opt/elasticsearch-8.5.2/bin

./elasticsearch-certutil ca
直接全部回车
为集群中的每个节点生成证书和私钥
./elasticsearch-certutil cert --ca elastic-stack-ca.p12
直接全部回车

这样就生成了两个自建的证书 

将证书拷贝到elasticsearch的每个节点下面config/certs目录下
mkdir  /home/opt/elasticsearch-8.5.2/config/certs
mv elastic-certificates.p12 elastic-stack-ca.p12 /home/opt/elasticsearch-8.5.2/config/certs
chown -R esuser:esuser   /home/opt/elasticsearch-8.5.2/
到此证书配置完成,如果不启用证书的话,以上 开启安全认证方法 到此都不需要操作。

安装ik分词器

IK分词器是ES的一个插件,主要用于把一段中文或者英文的划分成一个个的关键字,我们在搜索时候会把
自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器
是将每个字看成一个词,比如"我爱技术"会被分为"我","爱","技","术",这显然不符合要求,所以我们需要安
装中文分词器IK来解决这个问题;

ik分词器gitlab官网:https://github.com/medcl/elasticsearch-analysis-ik
更多版本点击官网中的 Releases
点击 Releases 找到 8.5.2 版本

在这里插入图片描述

下载和 es 相同的版本

在这里插入图片描述

将包上传到服务器

mkdir /home/opt/elasticsearch-8.5.2/plugins/ik
cd /home/opt/elasticsearch-8.5.2/plugins/ik
将包上传到这个目录  必须在 es目录中。
unzip elasticsearch-analysis-ik-8.5.2.zip
rm -f elasticsearch-analysis-ik-8.5.2.zip
chown -R  esuser:esuser  /home/opt/elasticsearch-8.5.2/

启动 elasticsearch

su - esuser

/home/opt/elasticsearch-8.5.2/bin/elasticsearch -d -p /data/elasticsearch/temp/elasticsearch.pid

启动完成之后以下操作均在 master 操作 192.168.232.68

两台从节点不用管了

如果开启安全认证,要给集群建用户密码,如果没开启安全认证可以接着安装 head 插件
不急着安装kibana 和 logstash
------------------------全部启动完成之后,master节点建密码----------------------
### 给认证的集群创建用户密码
bin/elasticsearch-setup-passwords interactive
密码自己设置

elastic 账号:拥有 superuser 角色,是内置的超级用户。 kibana 账号:拥有 kibana_system 角色,用户
kibana 账号: 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和.kibana 索引。不能访问 index。
logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。
beats_system账号: 拥有 beats_system角色。用户 Beats 在 Elasticsearch 中存储监控信息时使用。
elastic是超级用户

注意 如果开启了安全认证 账户密码一定要记着 后面会用到

接下来 如果有需要 可以安装一下 head 插件
~]# wget https://cdn.npmmirror.com/binaries/node/v14.15.0/node-v14.15.0-linux-x64.tar.xz
~]# mv node-v14.15.0-linux-x64.tar.xz /home/opt/
~]# cd /home/opt
~]# tar -xf node-v14.15.0-linux-x64.tar.xz
~]# mv node-v14.15.0-linux-x64 nodejs
~]# ln -s /home/opt/nodejs/bin/npm /usr/local/bin/
~]# ln -s /home/opt/nodejs/bin/node  /usr/local/bin/
~]# node -v   验证
	v14.15.0

~]# npm install -g grunt-cli
		/home/opt/nodejs/bin/grunt -> /home/opt/nodejs/lib/node_modules/grunt-cli/bin/grunt
		+ grunt-cli@1.4.3
		added 59 packages from 71 contributors in 16.72s

~]# ln -s /home/opt/nodejs/bin/grunt   /usr/local/bin/
~]# grunt -version
	 	grunt-cli v1.4.3
~]# git clone https://gitee.com/cyberton/elasticsearch-head.git
~]# cd elasticsearch-head/
~]# vi Gruntfile.js
                connect: {
                    server: {
                    options: {
                       hostname: '*',
                       port: 9100,
                       base: '.',
                       keepalive: true
                            }
                    }
            }

在这里插入图片描述

~]# vi /home/opt/elasticsearch-head/_site/app.js +4388
	#将localhost 修改为 本机IP
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.232.68:9200";

~]# npm install
有报错先不用处理 直接运行下面命令试试
~]# npm run start  
~]# nohup grunt server >/dev/null 2>&1 &   后台运行
访问:测试:
http://192.168.232.68:9100
开启证书的 URL是:
http://192.168.0.153:9100/?auth_user=elastic&auth_password=123
接下来部署 kibana
安装包已经在上面下载好了,上传至服务器即可。
tar -zxvf kibana-8.5.2-linux-x86_64.tar.gz -C /home/opt/
vim  /home/opt/kibana-8.5.2/config/kibana.yml
server.port: 5601

server.host: "192.168.232.68"
##填本机IP或者 0.0.0.0 都可以,最好写本机IP

server.name: "devops-kibana"
## name 名称可以随便指定

### es集群配置
elasticsearch.hosts: ["http://192.168.232.68:9200","http://192.168.232.69:9200","http://192.168.232.70:9200"]

pid.file: /home/opt/kibana-8.5.2/kibana.pid

elasticsearch.requestTimeout: 99999

i18n.locale: "zh-CN"
如图:

在这里插入图片描述

#如果生成证书认证,需要加如下两个参数 ,用户名密码为 elasticsearch 安全证书用户密码
elasticsearch.username: "kibana"
elasticsearch.password: "123"

创建 kibana 用户和依赖目录,并授权

useradd -u 5601 kibana
chown -R kibana:kibana /home/opt/kibana-8.5.2-linux-x86_64

启动 Kibana

su - kibana
cd /home/opt/kibana-8.5.2-linux-x86_64
./bin/kibana
#后台启动
#nohup ./bin/kibana > /dev/null &

PS: 当启动报如下错误(The Reporting plugin encountered issues launching Chromium in a self-test. You may have trouble generating reports.)

参考官方文档,安装依赖包

yum -y install ipa-gothic-fonts
yum -y install xorg-x11-fonts-100dpi
yum -y install xorg-x11-fonts-75dpi
yum -y install xorg-x11-utils
yum -y install xorg-x11-fonts-cyrillic
yum -y install xorg-x11-fonts-Type1
yum -y install xorg-x11-fonts-misc 
yum -y install fontconfig freetype

验证配置是否正常

URL:http://IP:5601
如果有安全认证,会有账户密码
账户默认是:elastic  密码是自己设置的密码。
部署logstash

1.解压

tar -zxf logstash-8.5.2-linux-x86_64.tar.gz -C /home/opt/

2.配置logstash.yml

cd /home/opt/logstash/
vi config/logstash.yml

config.reload.automatic: true

3.ELK收集系统标准日志 ,创建收集日志配置目录;

mkdir  config/etc/
vim elasticsearch.conf
input {
 stdin { }
}
output {
 stdout {
 codec => rubydebug {}
}
 elasticsearch {
 hosts => "127.0.0.1:9200" }
}

后台运行

nohup ./logstash -f ../config/elasticsearch.conf > logstash.log  2>&1 &
如果使用 kibana上的 堆栈监测服务 配置如下
在elasticsearch master 节点安装即可
下载Metricbeat组件
官网:https://www.elastic.co/cn/downloads/past-releases#metricbeat

下载的组件需要和 elasticsearch 版本相同
我下载的是tar包,也可以是rpm包
wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.5.2-linux-x86_64.tar.gz

tar -xf metricbeat-8.5.2-linux-x86_64.tar.gz -C /home/opt/
mv metricbeat-8.5.2-linux-x86_64.tar.gz  metricbeat
cd metricbeat 
vim metricbeat.yml
配置两行
一行是:61行,在61行下面新加一行,如下:
setup.kibana:
  host: "192.168.232.68:5601"  

修改的一行是:94行
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.232.68:9200"]

#hosts 配置的是 elasticsearch master节点IP,且这个节点必须具备上面所述的6个角色属性
就是es 配置文件 node.roles: 参数配置的角色

配置完成之后 保存退出

执行:
./metricbeat modules enable elasticsearch-xpack
完成之后 执行:
./metricbeat -e   
查看是否有报错
正常无报错情况
登录 kibana 页面
点击堆栈监测 功能
稍等片刻 数据会自动刷新

以上就是elasticsearch 8.5.2 kibana 8.5.2 logstash 8.5.2 及其组件安装方式。

喜欢就点个赞吧

需要更正地方请留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值