Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x

Posted Elastic 中国社区官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x相关的知识,希望对你有一定的参考价值。

在我之前的文章 “Elasticsearch:使用 RPM 安装包来安装 Elastic Stack 8.x” 里,我详细地介绍了如何使用 RPM 安装包来安装 Elastic Stack 8.x。在今天的文章中,我来详细描述如何从零开始来创建一个含有三个节点的 Elasticsearch 集群。我们最终实现的是如下的 Elasticsearch 集群。

如上所示,我们有三台运行 CentOS 的机器。它们的 IP 地址分别列在上面。我们将在这些机器上部署最新的 Elastic Stack 8.5.3。

创建 CentOS 虚拟机

如果你已经有自己的 CentOS 机器,那你就可以直接跳过这个部分。针对没有 CentOS 机器的开发者来说,Vagrant 是一个不错的选择。请参照我之前的教程 “Vagrant 入门教程” 来进行学习。

我们首先在自己的电脑中创建一个目录,并创建如下的一个 Vagrantfile 文件:

Vagrantfile

# vi: set ft=ruby :

ENV['VAGRANT_NO_PARALLEL'] = 'yes'

Vagrant.configure(2) do |config|

  config.vm.provision "shell", path: "bootstrap.sh"

  config.vm.define "es1" do |es1|
    es1.vm.box = "centos/7"
    es1.vm.hostname = "es1.example.com"
    es1.vm.network "private_network", ip: "172.42.42.10"
    es1.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
      vb.name = "es1"
      vb.memory = 4096
      vb.cpus = 2
    end
  end

  config.vm.define "es2" do |es2|
    es2.vm.box = "centos/7"
    es2.vm.hostname = "es2.example.com"
    es2.vm.network "private_network", ip: "172.42.42.20"
    es2.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]      
      vb.name = "es2"
      vb.memory = 2048
      vb.cpus = 1
    end
  end

  config.vm.define "es3" do |es3|
    es3.vm.box = "centos/7"
    es3.vm.hostname = "es3.example.com"
    es3.vm.network "private_network", ip: "172.42.42.30"
    es3.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]      
      vb.name = "es3"
      vb.memory = 2048
      vb.cpus = 1
    end
  end

end

如上所示,它创建三个 CentOS 的虚拟机。我们分别为它们设置相应的 IP 地址。在上面,它还引用了一个 bootstrap.sh 文件。它是用来帮我们安装一下必要的包及进行相应的配置。它的定义如下:

bootstrap.sh

#!/bin/bash

# Update the system
echo "[TASK 1] Updating the system"
yum update -y >/dev/null 2>&1

# Install desired packages
echo "[TASK 2] Installing desired packages"
yum install -y -q vim redhat-lsb-core net-tools bind-utils >/dev/null 2>&1

# Set up global aliases and exports
echo "[TASK 3] Creating global aliases and functions"
cat >>/etc/bashrc <<EOF
# Generated by Vagrant
alias vi='vim'
alias sudo='sudo '
export EDITOR=vim
export TERM=xterm
# Generated by Vagrant
EOF

echo "colorscheme elflord" >> /etc/vimrc

# Enable password authentication
echo "[TASK 4] Enabling password authentication in sshd config"
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd

# Disable SELinux
echo "[TASK 5] Disable SELinux"
setenforce 0
sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

# Set Root password
echo "[TASK 6] Set root password"
echo "admin" | passwd --stdin root >/dev/null 2>&1

# Disable and stop firewalld
echo "[TASK 5] Disable and stop firewalld"
systemctl disable firewalld >/dev/null 2>&1
systemctl stop firewalld

# Update hosts file
echo "[TASK 6] Update /etc/hosts file"
cat >>/etc/hosts<<EOF
172.42.42.10 es1.example.com es1
172.42.42.20 es2.example.com es2
172.42.42.30 es3.example.com es3
EOF

如上所示,它禁用了 firewall,以便机器之间能互相连接。在实际的使用中,这个并不推荐。我们需要通过 iptable 来进行配置。另外在上面,我们为 root 用户创建了一个 admin 的密码。这个在下面的命令中将会被使用。

这样我们目录里的文件就是:

$ pwd
/Users/liuxg/data/elk/elastic8
$ ls
Vagrantfile  bootstrap.sh

我们在这个目录下,打入如下的命令:

 

如果你遇到上面的错误信息,你可以继续使用上面的  vagrant up 命令运行:

 

如上所示,在更新完系统后,上面的错误信息就不见了。我们需要为 es2 及 es3 重复这个步骤。 等全部安装完毕后,我们可以使用如下的命令来查看:

vagrant status
Current machine states:

es1                       running (virtualbox)
es2                       running (virtualbox)
es3                       running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

上面显示我们的三个虚拟机都已经运行起来了。我们可以在 virtualbox 里进行查看:

 

上面的安装并没有帮我们安装 Virtualbox Guest Additions。我接着做如下的操作:

vagrant reload

 

它会在 reload 的过程中自动帮我们安装好 Guest Additions。等安装好后,我们可以直接在 host 里打入如下的命令:

ping 172.42.42.10
$ ping 172.42.42.10
PING 172.42.42.10 (172.42.42.10): 56 data bytes
64 bytes from 172.42.42.10: icmp_seq=0 ttl=64 time=0.416 ms
64 bytes from 172.42.42.10: icmp_seq=1 ttl=64 time=0.654 ms

很显然,在 host 上面,我们可以访问 es1。我们也可以同样测试一下 es2 及 es3。

这样,我们的 CentOS 的安装就已经完成了。

安装 Elastic Stack

禁用 firewalld

我们可以使用如下的命令来登录已经创建好的 CentOS:

vagrant ssh es1
$ vagrant ssh es1
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[vagrant@es1 ~]$ hostname
es1.example.com

在上面的一步中,我们在 bootstrap.sh 禁止了 firewall 的使用。针对非虚拟机的开发者来说,你可以登录每个 CentOS 机器后,我们可以通过如下的命令来检查 firewalld 的状态:

systemctl status firewalld
[vagrant@es1 ~]$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

上面显示的是 inactive 的状态,这个是因为我们在 bootstrap.sh 里已经做过了。如果你的是 active 的状态,那么你可以使用如下的命令来停止 firewalld 

systemctl stop firewalld
systemctl disable firewalld

在上面,我们禁用 firewalld。我们可以再次使用:

systemctl status firewalld

来检查状态。我们按照上面的步骤对三个 CenOS 做同样的操作,确保 firewalld 被禁用。

导入 Elasticsearch GPG key

为了方便安装,我们使用 root 用户来进行操作。我们打入命令 su:

[vagrant@es1 ~]$ su
Password: 
[root@es1 vagrant]# 

在上面我们输入密码 admin 即可。这个密码是在 bootstrap.sh 里指定的。

Elastic 使用带有指纹的 Elasticsearch 签名密钥(PGP 密钥 D88E42B4,可从 https://pgp.mit.edu 获得)对所有的包进行签名:

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4

下载并安装公共签名密钥:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

在 /etc/yum.repos.d/ 目录中为基于 RedHat 的发行版创建两个名为 elasticsearch.repo 及 elastic.repo 的文件,或在 /etc/zypp/repos.d/ 目录中为基于 OpenSuSE 的发行版创建一个文件,其中包含:

elasticsearch.repo

[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

elastic.repo (在 es2 及 es3 上可不创建)

[elastic-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
[root@es1 yum.repos.d]# pwd
/etc/yum.repos.d
[root@es1 yum.repos.d]# cat elastic.repo 
[elastic-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

我们接下来使用如下的命令来安装 Elasticsearch:

sudo yum install --enablerepo=elasticsearch elasticsearch

 

 在安装的过程中,它会显示 elastic 超级用户的密码。我们可以把这个密码记下来。

 我们接下来配置 CentOS 启动后,自动启动 Elasticsearch 服务。打入如下的命令:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

我们为 es2 及 es3 做同样的操作。

等我们把 Elasticsearch 在所有的机器上安装好以后,我们在第一个机器 es1 上安装 Kibana:

yum install kibana

同样,我们需要需要运行如下命令来使得 Kibana 在机器重新启动时自动运行:

systemctl daemon-reload
systemctl enable kibana

至此,我们的安装步骤已经完成。我们接下来需要来进行一些配置。

配置第一个节点

我们先对 es1 机器进行配置。我们通过如下的命令可以查看当前机器的 IP 地址:

ip addr

或者如下的命令:

ifconfig | grep inet
[root@es1 yum.repos.d]# ifconfig | grep inet
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::5054:ff:fe4d:77d3  prefixlen 64  scopeid 0x20<link>
        inet 172.42.42.10  netmask 255.255.255.0  broadcast 172.42.42.255
        inet6 fe80::a00:27ff:fede:461f  prefixlen 64  scopeid 0x20<link>
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>

我们接下来配置 elasticsearch.yml 文件:

/etc/elasticsearch/elasticsearch.yml

我们首先修改 cluster.name 为我们喜欢的名称:

 

保存好文件,我们接着使用如下的命令来启动 Elasticsearch:

systemctl start elasticsearch

我们可以通过如下的方法来查看 elasticsearch 服务的日志:

journalctl -u elasticsearch
[root@es1 elasticsearch]# journalctl -u elasticsearch
-- Logs begin at Tue 2022-12-13 01:04:47 UTC, end at Tue 2022-12-13 02:51:23 UTC. --
Dec 13 02:50:39 es1.example.com systemd[1]: Starting Elasticsearch...
Dec 13 02:51:23 es1.example.com systemd[1]: Started Elasticsearch.

如果我们想看更详细的日志,我们可以使用如下的命令:

tail -f /var/log/elasticsearch/liuxg.log

记得这里的 liuxg 是我的 cluster 的名字。在上面的 elasticsearch.yml 中定义的。如果在任何时候我们修改 elasticsearch.yml 文件,那么我们需要使用如下的命令来重新启动 elasticsearch:

systemctl  restart elasticsearch.service

一旦 Elasticsearch 被成功地启动,我们可以在 es1 的 terminal 中打入如下的命令来查看:

 curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200
[root@es1 vagrant]# curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200

  "name" : "node-1",
  "cluster_name" : "liuxg",
  "cluster_uuid" : "lMsFhaLaSaKpd_hTCOJpVg",
  "version" : 
    "number" : "8.5.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "4ed5ee9afac63de92ec98f404ccbed7d3ba9584e",
    "build_date" : "2022-12-05T18:22:22.226119656Z",
    "build_snapshot" : false,
    "lucene_version" : "9.4.2",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  ,
  "tagline" : "You Know, for Search"

上面显示 elasticsearch 正常。我们也可以使用如下的命令来查看有几个 nodes:

curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
[root@es1 vagrant]# curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
172.42.42.10 19 94 1 0.00 0.03 0.05 cdfhilmrstw * node-1

上面的命令显示它只有一个节点。名称为 node-1。

我们接下来使用如下的命令来生成一个 enrollment token:

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
[root@es1 vagrant]# /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
eyJ2ZXIiOiI4LjUuMyIsImFkciI6WyIxNzIuNDIuNDIuMTA6OTIwMCJdLCJmZ3IiOiJhYjY0MzI2MjE3NzVhY2NiZDk5MDEwYzgyYzg2OTcyODQwNGQyMDFiNjk5NDdjMWZlOTYxNWYwNGNhMTI1NTk0Iiwia2V5Ijoic0ctSUNZVUIzQWIyNm5TMnVCT1g6Ym45R0JRQWFRUjJHd2JHVWc0Y2xZUSJ9

我们把这个 enrollment token 拷贝下来。

配置其它的节点

我们接下来先不需要针对 es2 及 es3 的节点的 Elasticsearch 的配置文件做任何的修改。我们在它们的 teminal 中打入如下的命令:

/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>
 /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXIiOiI4LjUuMyIsImFkciI6WyIxNzIuNDIuNDIuMTA6OTIwMCJdLCJmZ3IiOiJhYjY0MzI2MjE3NzVhY2NiZDk5MDEwYzgyYzg2OTcyODQwNGQyMDFiNjk5NDdjMWZlOTYxNWYwNGNhMTI1NTk0Iiwia2V5Ijoic0ctSUNZVUIzQWIyNm5TMnVCT1g6Ym45R0JRQWFRUjJHd2JHVWc0Y2xZUSJ9

请用你自己的 token 替换上面的 enrollment-token 值。

[root@es2 yum.repos.d]# /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXIiOiI4LjUuMyIsImFkciI6WyIxNzIuNDIuNDIuMTA6OTIwMCJdLCJmZ3IiOiJhYjY0MzI2MjE3NzVhY2NiZDk5MDEwYzgyYzg2OTcyODQwNGQyMDFiNjk5NDdjMWZlOTYxNWYwNGNhMTI1NTk0Iiwia2V5Ijoic0ctSUNZVUIzQWIyNm5TMnVCT1g6Ym45R0JRQWFRUjJHd2JHVWc0Y2xZUSJ9

This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically: 
  - Security auto configuration will be removed from elasticsearch.yml
  - The [certs] config directory will be removed
  - Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y

我们在 es2 的 terminal 中启动 elasticsearch 服务:

systemctl start elasticsearch

我们通过如下的命令来查看它的运行状态:

systemctl status elasticsearch
[root@es2 yum.repos.d]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-12-13 03:55:15 UTC; 26s ago
     Docs: https://www.elastic.co
 Main PID: 15827 (java)
   CGroup: /system.slice/elasticsearch.service
           ├─15827 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSeri...
           ├─15891 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.t...
           └─15911 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/...

Dec 13 03:54:20 es2.example.com systemd[1]: Starting Elasticsearch...
Dec 13 03:55:15 es2.example.com systemd[1]: Started Elasticsearch.

很显然它处于运行状态。我们在 es1 的 terminal 中打入如下的命令来查看 nodes 的情况:

 curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
[root@es1 vagrant]# curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
172.42.42.10 5 94 0 0.02 0.04 0.05 cdfhilmrstw * node-1
[root@es1 vagrant]# 

很显然,它还是一个单独的 node。那为啥新的节点 es2 没有加入到已有的集群呢?

我们需要针对 es2 上的 elasticsearch.yml 进行一些配置:

/etc/elasticsearch/elasticsearch.yml

 

修改完后,我们需要重新启动 Elasticsearch:

systemctl restart elasticsearch

使用如下的命令来查看它的运行状态:

systemctl status elasticsearch
[root@es2 yum.repos.d]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-12-13 04:04:20 UTC; 37s ago
     Docs: https://www.elastic.co
 Main PID: 16015 (java)
   CGroup: /system.slice/elasticsearch.service
           ├─16015 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSeri...
           ├─16079 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.t...
           └─16099 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/...

Dec 13 04:03:54 es2.example.com systemd[1]: Stopped Elasticsearch.
Dec 13 04:03:54 es2.example.com systemd[1]: Starting Elasticsearch...

我们可以在 es1 的 log 里看到如下的信息:

我们再次在 es1 的 terminal 中打入如下的命令:

curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
[root@es1 vagrant]# curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
172.42.42.10 46 95 1 0.00 0.04 0.05 cdfhilmrstw * node-1
172.42.42.20 29 95 3 0.18 0.29 0.21 cdfhilmrstw - node-2

 很显然,这个时候,我们看到了两个节点:node-1 及 node-2。

如法炮制,我们需要针对 es3 做同样的配置。只不过我们需要为它取另外一个名字 node-3。我们也需要把它的 IP 地址填入进去。

 

修改完毕后,重新启动 Elasticsearch:

systemctl restart elasticsearch

我们在 es1 的日志信息中可以看到如下的输出:

可以看到 node-3 已经添加进入到已有的集群中了。

我们再次使用如下的命令来查看节点:

curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
[root@es1 vagrant]# curl -k -u elastic:xW4lz=-LeMspuQpTX0jz https://es1:9200/_cat/nodes
172.42.42.30 65 94 6 0.33 0.29 0.14 cdfhilmrstw - node-3
172.42.42.20 63 95 0 0.02 0.08 0.13 cdfhilmrstw - node-2
172.42.42.10  6 95 0 0.09 0.05 0.05 cdfhilmrstw * node-1

 很显然,我们已经得到了3个节点的集群。

我们也可以在浏览器中进行访问:

我们在上面的界面中打入 thisisunsafe 字母,然后我们可以看到界面:

 

 

我们可以看到如上所示的输出。 

启动 Kibana

在上面,我们还没有启动 Kibana。为了能够让 Kibana 被外网所访问,我们需要对 Kibana 做如下的配置:

/etc/kibana/kibana.yml

 我们可以使用如下的命令来进行启动:

systemctl start kibana

我们使用如下的命令来查看它运行的日志信息:

journalctl -u kibana

如上所示,我们可看到让我们去启动 Kibana 的链接。我们在浏览器中输入地址:http://172.42.42.10:5601/?code=203501 

在上面,它要求我们填入一个 enrollment token。我们可以在 es1 的 terminal 下输入如下的命令:

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
[root@es1 elasticsearch]# /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
eyJ2ZXIiOiI4LjUuMyIsImFkciI6WyIxNzIuNDIuNDIuMTA6OTIwMCJdLCJmZ3IiOiJhYjY0MzI2MjE3NzVhY2NiZDk5MDEwYzgyYzg2OTcyODQwNGQyMDFiNjk5NDdjMWZlOTYxNWYwNGNhMTI1NTk0Iiwia2V5Ijoic21fQkNZVUIzQWIyNm5TMlpCTVc6Tm9oOGJaZGtSNmlSZGFqWXBHS2NrZyJ9

把上面的 token 拷贝下来,并粘贴到上面的输入框中。

 

在上面,我们输入超级用户 elastic 的密码:

 

这样我们就进入到 Kibana 的界面了。我也可以在 console 中查看 nodes 的情况:

 

为 Kibana 配置安全

在上面的配置中,Kibana 的访问是以 HTTP 的形式来访问的。我们可以为 Kibana 也配置 HTTPS 的访问。首先,我们先卸载之前安装的 Kibana。然后再重新安装一遍。

yum remove kibana

我们同时确保不留下任何的之前安装的文件:

 rm -rf /etc/kibana/

我们再次安装 Kibana:

yum install kibana

我 Kibana 自动启动配置:

systemctl daemon-reload
systemctl enable kibana

我们进入到 Kibana 的安装目录中 /etc/kibana,并打入如下的命令来生成一个证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

对生成的证书文件修改权限:

chmod 777 cert.pem
chmod 777 key.pem 
[root@es1 kibana]# pwd
/etc/kibana
[root@es1 kibana]# ls
cert.pem  key.pem  kibana.keystore  kibana.yml  node.options
[root@es1 kibana]# chmod 777 cert.pem 
[root@es1 kibana]# chmod 777 key.pem 

 我们接下来需要针对 kibana.yml 文件进行配置:

/etc/kibana/kibana.yml 

elasticsearch.hosts: ["https://172.42.42.10:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "r67=Q_o*9GhuuoEpyL*+"
server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/cert.pem
server.ssl.key: /etc/kibana/key.pem
server.ssl.keyPassphrase: "123456"
elasticsearch.ssl.verificationMode: none

我们可以通过如下的命令来设置 kibana_system 密码:

/usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
[root@es1 vagrant]# /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
This tool will reset the password of the [kibana_system] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y


Password for the [kibana_system] user successfully reset.
New value: r67=Q_o*9GhuuoEpyL*+

我们使用如下的命令来启动 kibana:

systemctl start kibana

我们可以使用如下的命令来检查 kibana 的服务状态:

systemctl status kibana
[root@es1 kibana]# systemctl status kibana
● kibana.service - Kibana
   Loaded: loaded (/usr/lib/systemd/system/kibana.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-12-13 05:14:09 UTC; 49s ago
     Docs: https://www.elastic.co
 Main PID: 17285 (node)
   CGroup: /system.slice/kibana.service
           └─17285 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../s...

我们通过如下的方式来查看 Kibana 的日志:

tail -f /var/log/kibana/kibana.log

我们在浏览器中来访问 Kibana:

 

在上面的界面中打入 thisisunsafe 字母:

 

在上面打入超级用户 elastic 的密码。你就可以进入到 Elasticsearch 了。

以上是关于Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x的主要内容,如果未能解决你的问题,请参考以下文章

(转)如何在CentOS / RHEL 7上安装Elasticsearch,Logstash和Kibana(ELK)

CentOS 6 ElasticSearch 5.5.x 安装指南

CentOS 搭建 ElasticSearch 日志集群服务器

CentOS 8部署Elasticsearch-7.7.1

如何在docker下安装elasticsearch(上)

CentOS6下的ElasticSearch运行步骤