docker-compose部署es+kibana+ik
·
前言
本文主要介绍如何使用 docker-compose 快速部署 elasticsearch。
环境
- CentOS 7.9
Docker 安装
# docker
curl -fsSL "https://get.docker.com" | bash -s docker
# 启用
systemctl enable docker
# 启动
systemctl start docker
# docker-compose
curl -L "https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 执行权限
chmod +x /usr/local/bin/docker-compose
elasticsearch 安装
配置文件准备
本次共使用到3个配置文件,docker-compose.yaml、elasticsearch.yaml、kibana.yaml。
docker-compose.yaml -> docker-compose 相关配置信息,定义docker;
elasticsearch.yaml -> es 相关配置信息;
kibana.yaml -> kibana 相关配置信息;
docker-compose.yaml
version: "3"
services:
# ES相关配置
elasticsearch:
# 镜像
image: docker.elastic.co/elasticsearch/elasticsearch:8.14.2
# 容器名称
container_name: elasticsearch
# 自动重启
restart: always
ports:
- 9200:9200
- 9300:9300
# 文件挂载
volumes:
- ./elasticsearch/data:/usr/share/elasticsearch/data
- ./elasticsearch/log:/usr/share/elasticsearch/logs
- ./elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./elasticsearch/plugins:/usr/share/elasticsearch/plugins
environment:
- ELASTIC_PASSWORD=password
- ES_JAVA_OPTS=-Xms2g -Xmx2g
# kibana相关配置
kibana:
image: docker.elastic.co/kibana/kibana:8.14.2
container_name: kibana
restart: always
volumes:
- ./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
# 它指示Docker Compose在启动服务时应该按照依赖关系的顺序来启动容器。
depends_on:
- elasticsearch
# 它允许一个容器能够访问另一个容器的网络连接信息(如IP地址和端口)。
links:
- elasticsearch:elasticsearch
ports:
- 5601:5601
# Prometheus监控,用于从Elasticsearch集群收集指标并暴露给Prometheus服务器进行监控
elasticsearch-exporter:
image: quay.io/prometheuscommunity/elasticsearch-exporter:v1.4.0
container_name: elasticsearch_exporter
command:
- --es.uri=http://elastic:password@elasticsearch:9200
restart: always
ports:
- 9114:9114
elasticsearch.yaml
cluster.name: es.piper
cluster.initial_master_nodes: ["node-1"]
node.name: "node-1"
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
path.data: ["/usr/share/elasticsearch/data"]
http.cors.enabled: true
http.cors.allow-origin: /.*/
http.cors.allow-methods: OPTIONS,HEAD,GET,POST,PUT,DELETE
http.cors.allow-headers: Authorization,X-Requested-With,X-Auth-Token,Content-Type,Content-Length
http.cors.allow-credentials: true
# xpack启用需要配置ca证书,后续步骤包含启用流程,此处先跳过。
xpack.security.enabled: false
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.verification_mode: certificate
#xpack.security.transport.ssl.client_authentication: required
#xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
#xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
kibana.yaml
server.host: "0.0.0.0"
server.port: 5601
server.shutdownTimeout: "5s"
server.rewriteBasePath: true
server.basePath: "/kibana"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
# 此处配置的账号密码在es中不存在,所以kibana启动时会报错,后续步骤包含启用流程,此处先跳过。
elasticsearch.username: "kibana_admin"
elasticsearch.password: "123456"
monitoring.ui.container.elasticsearch.enabled: true
配置文件目录结构
– es-docker
– es-docker/docker-compose.yaml
– es-docker/elasticsearch
– es-docker/elasticsearch/elasticsearch.yaml
– es-docker/kibana
– es-docker/kibana/kibana.yaml
ik分词器安装 下载连接
下载完成后将压缩包解压到目录即可 es-docker/elasticsearch/plugins/elasticsearch-analysis-ik-8.14.2
部署流程
将准备好的文件夹上传至目标服务器,进入es-docker目录。
构建容器
# 构建容器 es、kibana、es-exporter
docker-compose up -d
# 进入容器
docker exec -it elasticsearch bash
# 添加ca证书
./bin/elasticsearch-certutil ca
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
# 将证书移动到config目录
mv elastic-certificates.p12 config/
# 配置密码
# 添加ca证书时如果有密码则需要这一步,否则跳过即可
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
# 创建一个用户kibana_admin,将密码设置为123456,并且绑定kibana_system角色
bin/elasticsearch-users useradd kibana_admin -p 123456 -r kibana_system
# 退出容器
exit
开启xpack
修改配置 elasticsearch.yaml
#xpack.security.enabled: false
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
重启容器
# 修改相关配置后重启生效
docker restart elasticsearch
# 使 kibana.yaml 文件中配置的es账号密码生效
docker restart kibana
更多推荐





所有评论(0)