Docker 桌面版安装 Elasticsearch 7.6.2 和 Kibana 7.6.2
有一个 知识库档案系统 使用到了 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 等其他三个账号又有什么作用呢?
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。