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

这篇具有很好参考价值的文章主要介绍了Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

如上所示,我们有三台运行 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

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

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

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

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

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

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

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

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 里进行查看:

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

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

vagrant reload

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

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

它会在 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

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

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

 在安装的过程中,它会显示 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:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x

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

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

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

保存好文件,我们接着使用如下的命令来启动 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:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x

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

修改完后,我们需要重新启动 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 里看到如下的信息:

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

我们再次在 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:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x

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

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

systemctl restart elasticsearch

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

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

可以看到 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个节点的集群。

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

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

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

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

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

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

启动 Kibana

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

/etc/kibana/kibana.yml

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

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

systemctl start kibana

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

journalctl -u kibana

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

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

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

在上面,它要求我们填入一个 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 拷贝下来,并粘贴到上面的输入框中。

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

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

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

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

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

 

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

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

 

为 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

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

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

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:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x

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

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

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

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

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

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

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

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

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

Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x文章来源地址https://www.toymoban.com/news/detail-416560.html

到了这里,关于Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux查看es节点使用情况,elasticsearch(es) 如何查看当前集群中哪个节点是主节点(master)

    elasticsearch 查看当前集群中的 master 节点是哪个需要使用 _cat 监控命令,具体如下。 查看方法 es 主节点确定命令,以 kibana 上查看示例如下: GET _cat/nodesv 返回结果示例如下: ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.16.16.188 52 99 5 2.59 1.70 1.45 mdi - elastic3

    2023年04月15日
    浏览(47)
  • ElasticSearch集群管理--往集群内添加新节点

    本节描述的集群,都是基于docker对elasticsearch节点进行进行管理。 本节描述elasticsearch基于版本8.5.0 本节描述的集群部署方式只是用来学习和测试,不是为了生产环境 注意,加入这个参数-e ES_JAVA_OPTS=“-Xms1g -Xmx1g”,防止添加新容器后,master节点挂掉 在Kibana监控上可以看到已经

    2024年02月11日
    浏览(40)
  • ElasticSearch实战--集群管理--向集群中添加新节点

    基于ElasticSearch版本8.5.0 本文描述的集群部署方式,只用以测试和学习使用,不能作为生产环境 本文描述的集群方式基于docker ElasticSearch文档

    2024年02月11日
    浏览(47)
  • elasticsearch单机多节点集群搭建

    elasticsearch7开始不支持单机多节点部署 centos服务器两台:10.188.131.247、10.20.148.122 elasticsearch-6.8.23、kibana-6.8.23安装包下载(下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch) 新增es用户(elasticsearch不能用root用户启动) 集群概览:3个master节点,3个数据节点 服务器

    2024年02月12日
    浏览(80)
  • Elasticsearch的集群与节点管理

    Elasticsearch是一个分布式、实时的搜索和分析引擎,它可以处理大量数据并提供快速、准确的搜索结果。在大规模数据处理和搜索场景中,Elasticsearch的集群和节点管理是非常重要的。本文将深入探讨Elasticsearch的集群与节点管理,涵盖其核心概念、算法原理、最佳实践、实际应

    2024年02月21日
    浏览(41)
  • Elasticsearch+Kibana集群部署(3节点)

    l i n d o r − − 良民笔记 lindor--良民笔记 l in d or − − 良民笔记 前言    仅作为笔记并记录elk搭建过程和搭建中遇到的问题, 转载请注明出处 ,目前该章节只讲述了 elasticsearch+Kibana 的安装过程,以及安装中的一些简单报错;适合有适当基础的同学,理论表的比较少。 ‍

    2024年02月09日
    浏览(53)
  • 服务搭建篇(七) Elasticsearch单节点部署以及多节点集群部署

    感兴趣的话大家可以关注一下公众号 : 猿人刘先生 , 欢迎大家一起学习 , 一起进步 , 一起来交流吧! Elasticsearch(简称ES) 是一个分布式 , RESTful风格的搜索和数据分析引擎 , 使用java开发并且是当前最流行的开源的企业级搜索引擎,能够达到近实时搜索,稳定,可靠,快速,安装使

    2024年02月03日
    浏览(63)
  • 【Hadoop】创建Hadoop集群(3个节点)—— 安装部署一个3个节点构成的hbase集群

    前言 此实验搭建3个虚拟节点,一个mater,一个slave1,一个slave2 集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但在物理上常在一起。 HDFS集群负责海量数据的存储,集群中的角色主要有: NameNode、DataNode、SecondaryNode YARN集群负责海量数据运算

    2024年02月08日
    浏览(53)
  • 单机多节点 elasticsearch 集群安全认证

    es 版本:7.6.2 部署环境:CentOS Linux release 7.6.1810 (Core) cd 到 es 的安装目录,并执行下面的命令来生成 ca 证书: 碰到第一个直接回车,不用管。 碰到第二个输入密码,例如 123456。 完成后会在当前目录生成一个文件: elastic-stack-ca.p12 需要输入密码时就直接输入刚才的密码,需

    2024年02月09日
    浏览(42)
  • ElasticSearch的集群、节点、索引、分片和副本

    Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比 ES里的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。 这里Types的概念已经被逐渐弱化,E

    2024年02月02日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包