Docker 桌面版安装 Elasticsearch 7.6.2 和 Kibana 7.6.2

2023-10-16T15:35:00

有一个 知识库档案系统 使用到了 Elasticsearch 服务,需要在本地开发环境安装。但 md 文档里只介绍了 Centos 和 windows 系统安装,不巧我使用了 Mac 系统,并且安装了 Docker 桌面版,希望能够针对现有环境进行安装。

官网下载地址 提供了 使用 docker 安装 Elasticsearch 的文档。当前的默认的版本是 8.10.3,没注意直接就安装了 Elasticsearch 8.10.3 和 Kibana 8.10.3。

结果配置了 elastic 密码,启动项目失败,报错连接不上。

esclient:
  master-host: 127.0.0.1
  master-port: 9200
  master-user-name: elastic
  master-user-pwd: xxx

再次找到 ES安装.MD 发现,里面演示安装的是 7.6.1。网上百度找到了 spring 文档里对于 elasticsearch 版本对应的表格

四舍五入就是 Spring Boot 2.3.x 对应 Elasticsearch 7.6.2,至少是兼容的。所以选择安装 7.6.2。

安装 Elasticsearch 7.6.2

按照 Elasticsearch 官网 7.6 的安装文档 安装 Elasticsearch 7.6.2,并使用 Docker 启动单节点集群(测试一台就够):

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2

docker run --name es02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2

因为前面安装了一个 es01 8.10.3 版本,所以这边取名 es02。但教程到这就没了,后面是一些生产环境的配置等。没有像 8.10.3 一样安装过程中生成了 elastic 账号密码,还有一个 token 用于 Kibana 关联验证。

此时访问 http://localhost:9200/ 是 OK 的,直接启动项目成功了。

需要注意的是,此时连接 elastic 客户端使用的是之前生成的密码(这与当前情况是不匹配的),也就是说此时连接没有验证密码。

设置 Elasticsearch 7.6.2 密码

测试环境到上面就够了,可以去启动项目,不影响使用。但考虑后面会部署到服务器上,所以提前了解一下密码的设置。

百度到一篇 elasticSearch 7.X 配置用户名密码访问,一开始是针对配置文件 elasticsearch.yml 的修改,然后执行设置用户名和密码的命令。教程里提到了 x-pack,然后我在官网文档里也找到一个 Set up X-Pack,点进 Configuring security (设置安全密码)里。

首先是第一步,开启 xpack。因为基础版和试用默认是 false,打开配置 elasticsearch.yml 添加后保存重启服务:

xpack.security.enabled: true

之后就是设置密码(elastic、kibana、logstash_system、beats_system):

bin/elasticsearch-setup-passwords interactive

最后修改项目里的 esclient.master-user-pwd 重启项目即可。

安装 Kibana 7.6.2 并设置账号密码

7.6 的文档里没有对与 Kibana 的安装说明,所以参考 8.10.3,修改一下版本好就行:

docker pull docker.elastic.co/kibana/kibana:7.6.2

docker run --name kib02 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:7.6.2

这样安装完 Kibana 7.6.2 以后,并没有返回设置好的账号密码。但前面的 elasticSearch 7.X 配置用户名密码访问 提到了这一点(kibana.yml):

#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "172.17.0.6"
elasticsearch.hosts: [ "http://172.17.0.5:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic"
elasticsearch.password: "xxx"

这里使用前面安装好的 elasticsearch 内网地址,以及 elastic 账号密码。

  • server.host 对应 kibana 服务的内网地址
  • elasticsearch.hosts 对应 elasticsearch 服务的内网地址
  • elasticsearch.username 登录账号
  • elasticsearch.password 登录密码

这里如果两个 host 地址设置有误,访问 kibana 会报错:Kibana server is not ready yet.,日志里会有错误提示:
Unable to revive connection: http://elasticsearch:9200/

此时访问 http://localhost:5601/ 使用 kibana 账号登录会报新的问题:403 Forbidden

删除站点的 cookie 之后使用 elastic 账号密码登录就可以了

PS:如果 Kibana 只能使用了 elastic 的账号密码登录,那么前面设置的 kibana 等其他三个账号又有什么作用呢?

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »