本文介绍,在云服务器上安装Elaticsearch8 + Kibana8,并进行外网访问配置的全过程。主要介绍:
其中,重点介绍不关闭ES8后自带的xpack.security.enabled: true
配置,即使用https访问ES资源的配置方法。
项 | 版本 |
---|---|
服务器类型 | 腾讯云轻量应用服务器,CPU 2核 - 内存 2GB - 系统盘 40GB |
操作系统版本 | Ubuntu Server 20.04 LTS 64bit |
Elaticsearch | 版本8.2.3, build_type为tar(官网下载的压缩包) |
Kibana | 版本8.2.3, build_type为tar(官网下载的压缩包) |
其他有用工具 | postman(相对于curl指令,我更习惯使用postman) vscode(记录操作步骤、编写请求) putty(远程连接服务器) |
说明:
主要参考书籍为:
赵建亭. 《Elasticsearch权威指南》 清华大学出版社
注意此书基于ES7,部分配置内容和ES8有所出入,供参考。
不得不说,使用云服务器,不同于我之前在本地安装。当时在本地上,从下载完成,到我使用Kibana的dev tool,用时不超过30分钟。因为ES本身封装的已经很好了,努力在做开箱即用的配置。
我原以为云服务器就是操作稍微麻烦,就是没想到有如此多大大小小的坑。
期间,还要在充斥着无意义重复转载、内容农场、低能SEO,像垃圾堆一样的中文资料中查找有关信息,真是一个富有挑战性的,又恶心又有趣的体验。
希望我这篇文章能让阁下在垃圾堆里面少翻点。感谢网络上各位网友的无私分享,给我很大帮助。
挑个合适的套餐即可,只要符合自身需求就行。这台服务器主要在云服务器运行ES系统,监控有关数据,向我发送信息,最基础配置已经满足我的需要。
系统方面,我选用的系统是ubuntu,主要用起来比较熟。win server 2012 R2我工作时用过,当时没给我留下好的印象,所以不使用。
价格方面,最基础也意味着最便宜。最便宜的服务器,新客的基础款轻量应用服务器60-70元一年,别的活动可能更低。
我比较习惯使用putty工具,只需要重置密码后,使用SSH登录即可。注意你的公网ip和内网ip都显示在控制台中,远程电脑登录时候使用公网ip。
我需要登录服务器,使用浏览器进行某些可视化内容,所以要安装桌面,主要参照腾讯云文档:
(不得不说,有个官方文档还是很好的)
运行以下命令并重启
sudo systemctl set-default multi-user
运行完后,在控制台中重启服务器。
我没有弄明白腾讯云防火墙与ubuntu防火墙的关系。似乎ubuntu上防火墙默认不开启,只需要在腾讯云控制台开启有关端口即可。
由于ES、Kibana的默认端口为5601和9200,公网访问,需要手动放行。
5601,9200
,其余选项默认,确定保存规则即可请注意,本文重点介绍不关闭ES8自带的**xpack.security.enabled: true
**配置,即使用https访问ES资源的配置方法。如果关闭自带此配置,有可能会简便很多。
如果只需要看配置SSL部分,请直接转3.2 具体配置一节
LINUX X86_64
我没有使用常用的apt
方式安装,因为腾讯云服务器的Ubuntu已经配置腾讯云软件源镜像(访问下载速度很快),但我不会如何下载我想要的版本。
下载完成后,使用unzip
解压缩包就可使用了。
前三项配置完,就可以服务器启动服务,服务器和公网访问ES服务了,后两项主要是针对Kibana的配置。
绝大多数ES有关的配置,配置都发生在ES解压后的文件夹下。以下提到的bin/和config/,都是Elasticsearch下的文件夹。进行配置时,应停止ES服务。ES服务运行时,不会实时加载配置。(除了安全配置信息)
切换到config文件夹
cd config/
编辑配置文件elasticsearch.yml
vi elasticsearch.yml
找到默认注释的networkhost,增加配置项并保存
networkhost :0.0.0.0
(此步骤针对内存较小的服务器。如果服务器内存满足JVM默认配置,没发生3.5节常见问题1,是不必配置的)
切换到config文件夹
cd config/
编辑配置文件jvm.options
vi jvm.options
修改以下参数并保存。
原来的两个参数:
-Xms4g -Xmx4g
改后的参数
-Xms512M -Xmx512M
(这个内存区域限制,是ubuntu系统的限制)
运行命令
sudo sysctl -w vm.max_map_count=262144
切换到etc/下的文件,查看是否有此修改
sudo vi /etc/sysctl.conf
以下内容有的话不用处理,没有的话增加配置
vm.max_map_count=262144
切换到config文件夹
cd config/
编辑配置文件elasticsearch.yml
vi elasticsearch.yml
增加如下配置并保存
http.cors.enabled: true
http.cors.allow-origin: "*"
这个配置对于Kibana很重要,过程比较长,耐心去做。生成的CA、证书对、密钥等都可以反复生成,覆盖之前的配置,多进行尝试就会成功。
建议有条件的直接去看官方文档,我会基于官方文档进行我的操作记录:
这位网友写的简略些,但也可以做参考:
云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
以下是正式步骤:
切换到bin/下,运行:
/elasticsearch-certutil ca
注意:
切换到bin/下,运行:
/elasticsearch-certutil cert --ca elastic-stack-ca.p12
注意:
elastic-stack-ca.p12
是默认输出P12文件的名称,可以修改成自己需要输出的文件名称,不加.p12
也是没问题的。切换到config文件夹
cd config/
编辑配置文件elasticsearch.yml
vi elasticsearch.yml
注意修改配置文件的以下节:
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: {P12文件}
truststore.path: {P12文件}
注意:
切换到bin/下,运行:
./elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password ./elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
会提示原来已经有密钥,覆盖即可。
这一步骤的目标是生成一个包含ES、Kibana各自证书的压缩包elasticsearch-ssl-http.zip
。
以下步骤是我根据自身情况,在此基础上做了部分修改。如果情况与我不同,要以官方文档为准。
我的场景:没有域名、负载均衡等服务器,ES为单节点的集群。公网访问时,直接以http + ip方式访问Kibana服务。Kibana以https方式访问ES资源。
step1. 切换到bin/下,运行:
./elasticsearch-certutil http
然后一步一步来,以下是官网的一个例子,我补充了我配置的内容:
以上步骤完成,会自动在文件夹根目录(bin/
的上一级)生成压缩包elasticsearch-ssl-http.zip
。其包含两个文件夹,里面的结构如下:
/elasticsearch |_ README.txt
|_ http.p12
|_ sample-elasticsearch.yml
/kibana |_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml
step2. 将此压缩包解压缩,把http.p12
文件移动到config/certs
下,覆盖原文件
注:如果你需要改到别的位置,修改elasticsearch.yml的此节:
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
step3. 切换到bin/
,运行以刷新密钥:
./elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
注意和第Ⅳ步的命令不同
此步骤是针对于Kibana来配置的,不需要配置Kibana的话可以跳过。放在3.2下,只是为了操作流畅。
以上所有bin/
和config/
都是elasticsearch-8.2.3
文件夹下的。
以下所有bin/
和config/
都是kibana-8.2.3
文件夹下的。
step1. 修改kibana.yml
的配置,主要修改或者增加:
elastic
用户,推荐使用kibana_system
用户。如果不清楚kibana_system
的密码,就去重置。重置方式:切到ES的bin/下,运行:
./elasticsearch-reset-password -u kibana_system
然后用获取到的用户名/密码进行配置
elasticsearch.username: "kibana_system"
elasticsearch.password: {重置后的密钥}
|_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml
配置前,要把elasticsearch-ca.pem放置到合适的路径。我放置在了config/
下。
我这里有点问题,如果像sample-kibana.yml
使用相对路径,会在Kibana启动时无法读取。因此,我使用绝对路径,配置如下:
elasticsearch.ssl.certificateAuthorities: ["/home/ubuntu/ESStack/kibana-8.2.3/config/elasticsearch-ca.pem"]
cd到bin/下,运行./elasticsearch
即可启动ES服务
使用curl命令(大括号不用输入)
curl -k -i -XGET "https://{云服务器公网ip}:9200" --user {用户名称}:{用户密码}
返回HTTP/200即连通成功。
(顺带一提,我至今没搞懂win10上powershell怎么使用curl,只能用cmd,也是够神必的。)
切到ES的bin/下,运行:
./elasticsearch-reset-password -u elastic
这样重置了elastic
这个用户的密码,其他用户同理。
解压缩可能出现忘记输入解压输出路径的情况。解压ES压缩包和解压http密钥对都有可能出问题。只需要运行以下命令:
zipinfo -1 ./{zip文件名称}| xargs rm -rf
出于各种原因,可能存在putty断开连接但是ES进程仍旧继续的情况。若需要手动结束的话,需要:
找到pid
ps -ef | grep elastic
结束进程(大括号不用输入)
kill -9 {pid}
configs/jvm.options
里面修改以下两个参数:-Xms4g-Xmx4g
我改成了
-Xms512M -Xmx512M
原因是系统默认的进程内存区限制不满足ES要求,要手动更改,3.2.3节已有配置方案。
要在服务器执行:
sudo sysctl -w vm.max_map_count=262144
执行后,并修改/etc/sysctl.conf文件,末尾添加或者修改
vm.max_map_count=262144
注意,执行完sudo命令之后,一般已经有此配置了,不必重复配置。
LINUX X86_64
我没有使用常用的apt
方式安装,因为腾讯云服务器的Ubuntu已经配置腾讯云软件源镜像(访问下载速度很快),但我不会如何下载我想要的版本。
下载完成后,使用unzip
解压缩包就可使用了。
切换到config文件夹
cd config/
编辑配置文件kibana.yml
vi kibana.yml
找到默认注释的server.host,增加配置项并保存
server.host: "0.0.0.0"
和3.2.5配置
没有任何区别。涉及Kibana部分,就是3.2.5配置
的Ⅵ 配置Kibana的安全配置部分
cd到bin/下,运行./kibana
即可启动Kibana服务
在本地浏览器访问以下URL(大括号不用输入)
http://{云服务器公网ip}:5601/login?next=%2F
能看到登录界面,能登录到Kibana连通成功。登陆时可以使用elastic
用户
errorUnable to retrieve version information……self signed certificates
需要配置kibana.yml和elasticsearch.yml的SSL,可以看3.2.5配置
在第一次启动ES时,ES会显示elastic用户的密码和有效期为30分钟的,Kibana的令牌。令牌的作用是:
如果你没有像我这样配置,而是选择直接以默认配置方式启动ES、Kibana的话,启动完Kibana会提示你用浏览器访问指定地址,输入令牌,完成ES和Kibana的绑定。
如果某些原因导致令牌失效,以下方式重新生成令牌:
切换到ES文件夹的bin/
下
cd /bin
运行命令
./elasticsearch-create-enrollment-token -s kibana
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。