目录
2、elasticsearch的config的es_master.yml配置
5、创建Kibana密钥库并添加配置(就是将es的用户和密码存储在密钥库中,用了进行Kibana访问带安全认证的ES)
版本信息,不一定按照我的版本
Docker version 23.0.5
Docker Desktop 4.19.0
Docker Compose version v2.17.3
docker images
elasticsearch:7.17.5
kibana:7.17.5
# es的视图化插件,需要的可以装
mobz/elasticsearch-head:5
目录结构
安装步骤
参考网站:docker-compose部署单台es和kibana
1、docker-compose.yml编写
version: "3.3"
services:
es_master:
image: elasticsearch:7.17.5
#这里我尝试改成es_master,但是下面的kibana.elasticsearch.hosts=https://es_master:9200无法访问es,不知道为什么
container_name: elasticsearch
hostname: es_master
restart: always
ports:
- 9200:9200
- 9300:9300
expose:
- "9200"
- "9300"
volumes:
- D:/目录/elk/es/config/conf1/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- D:/目录/elk/es/data/data1:/usr/share/elasticsearch/data/
- D:/目录/elk/es/logs:/usr/share/elasticsearch/logs/
- D:/目录/elk/es/plugins:/usr/share/elasticsearch/plugins/
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
#下面注释了 # 不会生效
#- 'cluster.name=elasticsearch' 设置集群名称为elasticsearch
#- 'discovery.type=single-node' 以单一节点模式启动
networks:
elk: #使用networks创建网络
ipv4_address: 192.168.20.10
kibana:
container_name: kibana
hostname: kibana
#kibana的版本要与es的版本对应(必须)
image: kibana:7.17.5
restart: always
environment:
- elasticsearch.hosts=https://elasticsearch:9200
ports:
- 5601:5601
volumes:
- D:/目录/elk/kibana/config/kibana.yml:/usr/share/elasticsearch/config/kibana.yml
depends_on:
- es_master
networks:
elk:
ipv4_address: 192.168.20.20
#es视图化工具插件
es-head:
container_name: es-head
image: mobz/elasticsearch-head:5
restart: always
ports:
- 9100:9100
#依赖es-master
depends_on:
- es_master
networks:
#使用已创建的网络
#mynetwork:
# external: true
#创建网络
elk:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.20.0/24
gateway: 192.168.20.1
es_master容器的container_name我尝试过定义为container_name: es_master
kibana容器的
environment: - elasticsearch.hosts=https://es_master:9200
的时候,kibana会报错,提示找不到es的节点,所以我直接用container_name: elasticsearch
如果es容器提示以下报错
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
查看这里的文章,针对window的,但是重启电脑后就会失效
windows docker 安装 ES vm.max_map_count [65530]_junoo0的博客-CSDN博客
2、elasticsearch的config的es_master.yml配置
# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-node1
# 是否可以成为master节点
node.master: true
# 是否允许该节点存储数据,默认开启
node.data: true
# 网络绑定
network.host: 0.0.0.0
# 设置对外服务的http端口
http.port: 9200
# 设置节点间交互的tcp端口
transport.port: 9300
# 集群发现
discovery.seed_hosts: ["192.168.20.10"] #这里的ip是network自定义的网络
# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes: ["es-node1"]
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# xpack安全认证,如果不需要验证账号密码,下面配置改为 false
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
discovery.seed_hosts: ["192.168.20.10"]
上面的ip地址,是再docker-compose.yml下面创建的自定义网络
3、kibana的config的kibana.yml配置
# 汉化
i18n.locale: "zh-CN"
# 服务
server.port: 5601
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
# ES
elasticsearch.hosts: [ "https://elasticsearch:9200" ]
# 此处设置elastic的用户名和密码,es设置开启安全验证的时候必须要设置
#elasticsearch.username: "elastic"
#elasticsearch.password: "***"
这里有个坑,设置了es身份验证凭据,但是kibana起来之后会一直提示,原因我也不是很清除为什么,有大神可以解答下吗
missing authentication credentials for REST request
所以我换了另一种方法给kibana设置安全验证es账号
注意,需要完成 4、elasticsearch创建安全验证用户 操作
参考地址:Kibana访问带安全认证的ES
4、elasticsearch创建安全验证用户
es_master.yml配置设置了xpack安全验证时,进入es容器创建账号
docker exec -it elasticsearch bash
输入命令,
./bin/elasticsearch-setup-passwords auto #系统分配密码,比较安全
./bin/elasticsearch-setup-passwords interactive #自己设置密码
5、创建Kibana密钥库并添加配置(就是将es的用户和密码存储在密钥库中,用了进行Kibana访问带安全认证的ES)
以root账号进入kibana容器中
./bin/kibana-keystore create
./bin/kibana-keystore add elasticsearch.username
【输入elastic,我用的es创建的elastic账号】
./bin/kibana-keystore add elasticsearch.password
【输入第一步中的关于elastic的密码】参考地址:Kibana访问带安全认证的ES
执行完成之后重启kibana容器
6、搭建完成
es服务
验证账号通过
kibana
、
登陆kibana(使用配置的验证账号登陆)