Elastic Stack Workshop | 刘征 Developer Advocate @ Elastic

Version 0.2.5

搜索、观测、保护三大解决方案实战教程,各种级别和类型的学习资料,欢迎一起学习和共建。

在 Linux 上运行 Elasticsearch 8.1.0

在 Linux 上运行 Elasticsearch & Kibana 的开发环境。本练习所需要的Linux虚拟机或者物理机需要至少8GB的内存,建议16GB或者更多。

访问官方下载页面:https://www.elastic.co/downloads/past-releases/elasticsearch-8-1-0 下载对应的软件包到本地的目录中。

  • elasticsearch-8.1.0-linux-x86_64.tar.gz
  • kibana-8.1.0-linux-x86_64.tar.gz

学习目标:

  1. 在本地模拟运行三节点 Elasticsearch 集群
  2. 修改 Elasticsearch 内置管理员用户 elastic 的密码
  3. 运行 Kibana 服务,启用内置的 Elastic Stack 监控功能

将下载的软件包上传到 Linux 非 root 用户的 Home 目录中,并在这 Home 目录中创建三个空目录:node1 、 node2 和 node3。然后将 Elasticsearch 软件包解压缩三次到这三个目录中。将Kibana解压缩到 Home 目录中。

用非 root 用户登录到 Linux 服务器上,完成下面的操作。

[martin@fedora-35 ~]# mkdir node1
[martin@fedora-35 ~]# mkdir node2
[martin@fedora-35 ~]# mkdir node3
[martin@fedora-35 ~]# ls
anaconda-ks.cfg  elasticsearch-8.1.0-linux-x86_64.tar.gz  kibana-8.1.0-linux-x86_64.tar.gz  node1  node2  node3
[martin@fedora-35 ~]# tar zxf elasticsearch-8.1.0-linux-x86_64.tar.gz -C node1
[martin@fedora-35 ~]# tar zxf elasticsearch-8.1.0-linux-x86_64.tar.gz -C node2
[martin@fedora-35 ~]# tar zxf elasticsearch-8.1.0-linux-x86_64.tar.gz -C node3
[martin@fedora-35 ~]# tar zxf kibana-8.1.0-linux-x86_64.tar.gz 

修改默认系统参数。

[martin@fedora-35 elasticsearch-8.1.0]$ sudo sysctl -w vm.max_map_count=262144

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for martin: 
vm.max_map_count = 262144

修改了 Linux 操作系统 vm.max_map_count 参数之后,我们就完成了本练习的所有准备工作。

下面开始启动第一个 Elasticsearch 节点。用非root用户登录到Linux 服务器上,运行下面的命令。

[martin@fedora-35 ~]# cd node1/elasticsearch-8.1.0/
[martin@fedora-35 elasticsearch-8.1.0]# bin/elasticsearch -Ecluster.name=3m -Enode.name=node1  -Enetwork.host=0.0.0.0

等待以上的命令停止滚动,在输出结果中复制出下面的部分。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✅ 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`):
  f1gKPebCODac5qrtZpOV

ℹ️  HTTP CA certificate SHA-256 fingerprint:
  6ced3cf5c93efded6ae88427463c33c2f4bdeb61893b927969cce93b0b40bd8b

ℹ️  Configure Kibana to use this cluster:
• Run Kibana and click the configuration link in the terminal when Kibana starts.
• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMjQuOTEuMTE5OjkyMDAiXSwiZmdyIjoiNmNlZDNjZjVjOTNlZmRlZDZhZTg4NDI3NDYzYzMzYzJmNGJkZWI2MTg5M2I5Mjc5NjljY2U5M2IwYjQwYmQ4YiIsImtleSI6IlBZZjlyMzhCMkJ1aHdMVnAySUQ3OlhrTE5YMjB4U3dTN3kzSHJnbVktTUEifQ==

ℹ️ Configure other nodes to join this cluster:
• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMjQuOTEuMTE5OjkyMDAiXSwiZmdyIjoiNmNlZDNjZjVjOTNlZmRlZDZhZTg4NDI3NDYzYzMzYzJmNGJkZWI2MTg5M2I5Mjc5NjljY2U5M2IwYjQwYmQ4YiIsImtleSI6IlBJZjlyMzhCMkJ1aHdMVnAySUQyOjBXMFVnR2lnU0dxTXdrS3RoUmQzRFEifQ==

  If you're running in Docker, copy the enrollment token and run:
  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.1.0`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

这样就成功的启动了 3m 集群里的首个节点,以上启动过程,完成了几件重要的系统安全保障工作。

  • 为 elastic 用户创建了随机密码
  • 为 Elasticsearch 集群创建了一套节点间加密传授的数字证书
  • 为 Kibana 服务器创建了注册配置令牌
  • 给出了其它 Elasticsearch 节点加入这个 3m 集群的操作方法

由于随机生成的用户密码不方便使用,使用下面的命令修改 elastic 用户的密码打开新的 SSH 窗口登录 Linux 服务器,用非root 用户进入 node1 的 Elasticsearch 目录里。执行命令 bin/elasticsearch-reset-password -u elastic -i

[martin@fedora-35 elasticsearch-8.1.0]$ bin/elasticsearch-reset-password -u elastic -i
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]: 
Re-enter password for [elastic]: 
Password for the [elastic] user successfully reset.
[martin@fedora-35 elasticsearch-8.1.0]$ 

上面就成功的修改了 elastic 用户的密码,记录该密码备用。在这个命令行窗口中运行 bin/elasticsearch-create-enrollment-token -s node 命令。

[martin@fedora-35 elasticsearch-8.1.0]$ bin/elasticsearch-create-enrollment-token -s node
eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMjQuOTEuMTE5OjkyMDAiXSwiZmdyIjoiNmNlZDNjZjVjOTNlZmRlZDZhZTg4NDI3NDYzYzMzYzJmNGJkZWI2MTg5M2I5Mjc5NjljY2U5M2IwYjQwYmQ4YiIsImtleSI6IlBvY0VzSDhCMkJ1aHdMVnAzNEN1OnFLTkFlLWQ1UTFlU18tUzA3YUZxVVEifQ==

在上面的命令行输出信息中,复制所产生的集群加群令牌,备用。

打开新的命令行窗口,ssh 登录到 Linux 服务器中,进入 Kibana 目录,然后启动 Kibana 服务器。

[martin@fedora-35 ~]$ cd kibana-8.1.0/
[martin@fedora-35 kibana-8.1.0]$ bin/kibana -H 0.0.0.0
[martin@fedora-35 ~]$ cd kibana-8.1.0/[2022-03-22T13:13:09.665+08:00][INFO ][plugins-service] Plugin "metricsEntities" is disabled.
[2022-03-22T13:13:09.815+08:00][INFO ][http.server.Preboot] http server running at http://0.0.0.0:5601
[2022-03-22T13:13:10.003+08:00][INFO ][plugins-system.preboot] Setting up [1] plugins: [interactiveSetup]
[2022-03-22T13:13:10.005+08:00][INFO ][preboot] "interactiveSetup" plugin is holding setup: Validating Elasticsearch connection configuration…
[2022-03-22T13:13:10.069+08:00][INFO ][root] Holding setup until preboot stage is completed.


i Kibana has not been configured.

Go to http://0.0.0.0:5601/?code=960009 to get started.

参数解释:

  • -H 0.0.0.0 : 设定 Kibana 服务可以接受来自任何网络ip的访问

在 Kibana 服务器正常启动之后,打开一个浏览器,输入 Kibana 的 http://ip:5601 地址,例如 http://172.24.91.119:5601/;在 Kibana 的首次登陆配置界面中粘贴入 node1 节点首次启动时所生成的 Kibana 注册令牌,然后点击 ”Configure Elastic“ 按钮。等待 Kibana 配置完毕之后,使用 elastic 用户登录 Kibna。

当界面中出现显示输入验证码的时候,你需要返回 node1 的启动窗口,在哪里找到如下的验证码。

Your verification code is:  960 009 

在 Kibana 左侧菜单中,点击 Management -> Stack Montitoring ,选择启用集群自监控功能。然后进入 3m 集群的节点监控界面。如下图所示。

执行后续的操作,观察 node2 和 node3 的出现。

下面开始模拟 node2 和 node3 加入 3m 集群。

打开新的命令行窗口,进入 node2 的 Elasticsearch 目录中。执行下面的命令,注意这里所使用的 token 是上面的命令所生成的。

bin/elasticsearch -Ecluster.name=3m -Enode.name=node2 --enrollment-token  eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMjQuOTEuMTE5OjkyMDAiXSwiZmdyIjoiNmNlZDNjZjVjOTNlZmRlZDZhZTg4NDI3NDYzYzMzYzJmNGJkZWI2MTg5M2I5Mjc5NjljY2U5M2IwYjQwYmQ4YiIsImtleSI6IlBvY0VzSDhCMkJ1aHdMVnAzNEN1OnFLTkFlLWQ1UTFlU18tUzA3YUZxVVEifQ==

打开新的命令行窗口,进入 node3 的 Elasticsearch 目录中。执行下面的命令,注意这里所使用的 token 是上面的命令所生成的。

bin/elasticsearch -Ecluster.name=3m -Enode.name=node3 --enrollment-token  eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMjQuOTEuMTE5OjkyMDAiXSwiZmdyIjoiNmNlZDNjZjVjOTNlZmRlZDZhZTg4NDI3NDYzYzMzYzJmNGJkZWI2MTg5M2I5Mjc5NjljY2U5M2IwYjQwYmQ4YiIsImtleSI6IlBvY0VzSDhCMkJ1aHdMVnAzNEN1OnFLTkFlLWQ1UTFlU18tUzA3YUZxVVEifQ==

在 Elastic Stack 集群自监控界面上,确认 3m 集群里所加入的两个新的节点。

Last updated on 2017-10-17
Published on 2017-10-17
 Edit on GitHub