在 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
学习目标:
- 在本地模拟运行三节点 Elasticsearch 集群
- 修改 Elasticsearch 内置管理员用户 elastic 的密码
- 运行 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 集群里所加入的两个新的节点。