前言

本文主要介绍如何使用 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
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐