-
下载软件
Elasticsearch 的官方地址:https://www.elastic.co/cn/
下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
可以根据情况自行选择不同操作系统的版本。
-
安装软件
2.1. 集群策划
-
准备三台linux服务器,用于配置Elasticsearch 集群
启动集群后,每台虚拟机的进程如下:
主机名 node1 node2 node3 进程明 Elasticsearch(es-node-1) Elasticsearch(es-node-2) Elasticsearch(es-node-3) -
将压缩包 elasticsearch-8.1.0-linux-x86_64.tar.gz 上传到虚拟机中
解压缩文件到自定义路径,笔者解压路径为:/data/software/es,解压后,软件路径为:
/data/software/es/elasticsearch-8.1.0
# 切换目录 cd /data/software/es/ # 解压缩 tar -zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz
解压后的 Elasticsearch 的目录结构如下
目录 含义 bin 可执行脚本目录 config 配置目录 jdk 内置JDK目录 lib 类库 logs 日志目录 modules 模块目录 plugins 插件目录 注意:ES运行需要依赖java环境由于当前的ES版本再带jdk,所以节点中无需配置java环境
-
由于ES为了防止高权限的linux用户修改系统文件禁止root账户启动ES,所以需要手动创建新用户es
# 新增 es 用户 useradd es # 为 es 用户设置密码 passwd es
-
创建数据文件目录,证书目录,并修改Elasticsearch 文件拥有者
# 创建数据文件目录 mkdir /data/software/es/elasticsearch-8.1.0/data # 创建证书目录 mkdir /data/software/es/elasticsearch-8.1.0/config/certs #切换目录 cd /data/software/es/elasticsearch-8.1.0 # 修改文件拥有者 chown -R es:es /data/software/es/elasticsearch-8.1.0
-
在第一台服务器节点 es-node-1 设置集群多节点通信密钥
# 切换用户 su es cd /data/software/es/elasticsearch-8.1.0 # 签发 ca 证书,过程中需按两次回车键 bin/elasticsearch-certutil ca # 用 ca 证书签发节点证书,过程中需按三次回车键 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 将生成的证书文件移动到 config/certs 目录中 mv elastic-stack-ca.p12 elastic-certificates.p12 config/certs
-
在第一台服务器节点 es-node-1 设置集群多节点 HTTP 证书
# 签发 Https 证书 bin/elasticsearch-certutil http # 以下是每次要求输入时,需要输入的内容
指定证书路径 (这里的路径就是你创建的证书目录的路径 )
无需输入密码
设置证书失效时间,这里的y表示年
无需每个节点配置证书
输出连接到第一个节点的所有主机名称
输出连接到第一个节点的所有主机 IP 地址
不改变证书选项配置
不给证书加密,按键输入两次回车
解压刚刚生成的zip包
# 解压文件 unzip elasticsearch-ssl-http.zip #将解压后的证书文件移动到 config/certs 目录中 mv elasticsearch/http.p12 kibana/elasticsearch-ca.pem config/certs
-
修改主配置文件:config/elasticsearch.yml,由于配置文件里面全是注释,可以直接粘贴我下面的配置,需要注意的是文件的路径需要设置成你自己的文件路径,网络访问节点需要修改成你自己的主机名称
# 设置 ES 集群名称 cluster.name: es-cluster # 设置集群中当前节点名称 node.name: es-node-1 # 设置数据,日志文件路径 path.data: /data/software/es/elasticsearch-8.1.0/data path.logs: /data/software/es/elasticsearch-8.1.0/log # 设置网络访问节点 network.host: linux1 # 设置网络访问端口 http.port: 9200 # 初始节点 discovery.seed_hosts: ["linux1"] # 安全认证 xpack.security.enabled: true xpack.security.enrollment.enabled: true xpack.security.http.ssl: enabled: true keystore.path: /data/software/es/elasticsearch-8.1.0/config/certs/http.p12 truststore.path: /data/software/es/elasticsearch-8.1.0/config/certs/http.p12 xpack.security.transport.ssl: enabled: true verification_mode: certificate keystore.path: /data/software/es/elasticsearch-8.1.0/config/certs/elastic-certificates.p12 truststore.path: /data/software/es/module/elasticsearch-8.1.0/config/certs/elastic-certificates.p12 # 此处需注意,es-node-1 为上面配置的节点名称 cluster.initial_master_nodes: ["es-node-1"] http.host: [_local_, _site_] ingest.geoip.downloader.enabled: false xpack.security.http.ssl.client_authentication: none
-
启动ES软件
# 启动 ES 软件 bin/elasticsearch
第一次启动成功后,会在命令行窗口显示用户名,密码,一定要找个地方存下来。注意:这个密码只有第一次的启动才会有
如果没有出现上图所示的内容,出现下图所示的内容也可以
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✅ Elasticsearch security features have been automatically configured! ✅ Authentication is enabled and cluster connections are encrypted. ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): e*onpaK75L8iUWGVTKSf kibana / Io+GM*EXL7u=CidAPkLO ❌ Unable to generate an enrollment token for Kibana instances, try invoking `bin/elasticsearch-create-enrollment-token -s kibana`. ❌ An enrollment token to enroll new nodes wasn't generated. To add nodes and enroll them into this cluster: • On this node: ⁃ Create an enrollment token with `bin/elasticsearch-create-enrollment-token -s node`. ⁃ Restart Elasticsearch. • On other nodes: ⁃ Start Elasticsearch with `bin/elasticsearch --enrollment-token <token>`, using the enrollment token that you generated. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的
http 协议 RESTful 端口 -
访问服务器节点 https://虚拟机地址:9200
因为配置了安全协议,所以使用 https 协议进行访问,但由于证书是自己生成的,并不
可靠,所以会有安全提示选择继续即可
输入账号,密码登录即可,看到类似下图的json说明启动成功
-
-
其他节点的安装配置
-
在linux1节点,进入到es的安装目录,执行scp命令,将linux1节点的es分别分发给linux2和linux3节点
# 进入到es安装目录 cd /data/software #向linux2节点分发es,需要先在linux2节点创建 /data/software目录 scp -r es root@linux2:/data/software #回车输入root账号密码 #向linux3节点分发es,需要先在linux3节点创建 /data/software目录 scp -r es root@linux2:/data/software
-
到linux2节点,创建es用户,修改es的配置文件
# 创建用户 useradd es passwd es #这只密码,两次的密码要输入一致 # 进入es的配置目录 cd /data/software/es/elasticsearch-8.1.0/config/ vim elasticsearch.yml # 设置节点名称 node.name: es-node-2 # 设置网络访问主机 network.host: linux2 #按esc退出编辑,输入:wq保存退出
-
到linux3节点,创建es用户,修改es的配置文件
# 创建用户 useradd es passwd es #这只密码,两次的密码要输入一致 # 进入es的配置目录 cd /data/software/es/elasticsearch-8.1.0/config/ vim elasticsearch.yml # 设置节点名称 node.name: es-node-3 # 设置网络访问主机 network.host: linux3 #按esc退出编辑,输入:wq保存退出
-
依次启动集群的三台服务器节点,不要忘记切换用户后启动
-
linux1:
# 切换用户 su es # 后台启动服务 bin/elasticsearch -d
-
linux2
# 切换用户 su es # 后台启动服务 bin/elasticsearch -d
-
linux3
# 切换用户 su es # 后台启动服务 bin/elasticsearch -d
-
-
问题解决
- Elasticsearch 是使用 java 开发的,8.1 版本的 ES 需要 JDK17 及以上版本。默认安装包
中带有 JDK 环境,如果系统配置 ES_JAVA_HOME 环境变量,那么会采用系统配置的
**JDK。**如果没有配置该环境变量,ES 会使用自带捆绑的 JDK。虽然自带的 JDK 是 ES
软件推荐的 Java 版本,但一般建议使用系统配置的 JDK
-
启动成功后,如果访问 localhost:9200 地址后,弹出登录窗口
第一次启动时,因为开启了密码验证模式,在启动窗口中会显示输入账号和密码。如果
没有注意到或没有找到账号密码,可以设置免密登录:# Enable security features xpack.security.enabled: false
-
双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改config/jvm.options 配置文件
# 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配 内存 # Xms represents the initial size of total heap space # 设置 JVM 最大可用内存为 1G # Xmx represents the maximum size of total heap space -Xms4g -Xmx4g
-
启动后,如果密码忘记了,怎么办?可以采用指令重置密码
# 使用 es 用户,执行指令,重置 elastic 用户密码 bin/elasticsearch-reset-password -u elastic
-
如果Linux2,linux3这两个节点配置有问题但是正常启动了,在机群里看不到linux2,linux3节点,那么需要删除这两个节点的数据目录和日志目录并重新创建,再启动。
-
可以在谷歌浏览器中安装Multi Elasticsearch Head插件查看es集群的启动情况
-
Kibana 安装 & 使用
Elasticsearch 的开源分析可视化工具,与存储在 Elasticsearch 中的数据进行交互
-
Elasticsearch 下载的版本是 8.1.0,这里我选择同样的 8.1.0 版本
下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana -
安装软件
-
将压缩包 kibana-8.1.0-linux-x86_64.tar.gz 上传到虚拟机中
-
解压缩文件到自定义路径,笔者解压路径为:/data/software/es/kibana,解压后,软件路径为:/data/software/es/kibana/kibana-8.1.0
-
给 Kibana 生成证书文件
# 在 ES 服务器中生成证书,输入回车即可 cd /data/software/es/elasticsearch-8.1.0 bin/elasticsearch-certutil csr -name kibana -dns linux1 # 解压文件 unzip csr-bundle.zip # 将解压后的文件移动到 kibana 的 config 目录中 mv kibana.csr kibana.key /data/software/es/kibana/kibana-8.1.0/config/ # 生成 crt 文件 cd /data/software/es/kibana/kibana-8.1.0/config/ openssl x509 -req -in kibana.csr -signkey kibana.key -out kibana.crt
-
修改配置文件:kibana.yml
# 服务端口 server.port: 5601 # 服务主机名 server.host: "0.0.0.0" #这里设置成不受限制的连接 # 国际化 - 中文 i18n.locale: "zh-CN" # ES 服务主机地址 elasticsearch.hosts: ["https://linux1:9200"] # 访问 ES 服务的账号密码 elasticsearch.username: "kibana" elasticsearch.password: "fnqIYLQGv81iyW5nWeZ-" #注意这里的密码需要用到忘记密码的命令进行生成,用户名就是kibana elasticsearch.ssl.verificationMode: none elasticsearch.ssl.certificateAuthorities: [ "/opt/module/elasticsearch-8.1.0/config/certs/elasticsearch-ca.pem" ] server.ssl.enabled: true server.ssl.certificate: /data/software/es/kibana/kibana-8.1.0/config/kibana.crt server.ssl.key: /data/software/es/kibana/kibana-8.1.0/config/kibana.key
-
修改软件目录拥有者
# 切换目录 chown -R es:es /data/software/es/kibana/kibana-8.1.0/
-
切换用户,启动软件
# 切换用户 su es # 启动软件 bin/kibana # 也可以后台启动 nohup /data/software/es/kibana/kibana-8.1.0/bin/kibana >kibana.log 2>&1 &
-
-
应用软件
打开浏览器,输入访问地址:https://ip:5601
可以在开发者工具中测试,到此es集群和kibana就安装完成!