首页 > 其他分享 >docker-compose快速部署elasticsearch-8.8.1集群+kibana+logstash

docker-compose快速部署elasticsearch-8.8.1集群+kibana+logstash

时间:2023-08-07 17:11:45浏览次数:40  
标签:compose xpack 8.8 ca kibana ssl certs es01 security

安装环境

centos7.9 8cpu 16G 内存 vda50 G vdb 100G

如果您的环境是Linux,注意要做以下操作,否则es可能会启动失败
用编辑工具打开文件/etc/sysctl.conf
在尾部添加一行配置vm.max_map_count = 262144,如果已存在就修改,数值不能低于262144
修改保存,然后执行命令sudo sysctl -p使其立即生效

找个干净目录,新建名为.env的文件

ELASTIC_PASSWORD=123
KIBANA_PASSWORD=123
STACK_VERSION=8.8.1
CLUSTER_NAME=docker-cluster
LICENSE=basic
ES_PORT=9200
KIBANA_PORT=5602
MEM_LIMIT=1073741824
# Project namespace (defaults to the current folder name if not set)
#COMPOSE_PROJECT_NAME=myprojectb

编辑docker-compose 文件

version: "3"
services: setup: image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - certs:/usr/share/elasticsearch/config/certs user: "0" command: > bash -c ' if [ x${ELASTIC_PASSWORD} == x ]; then echo "Set the ELASTIC_PASSWORD environment variable in the .env file"; exit 1; elif [ x${KIBANA_PASSWORD} == x ]; then echo "Set the KIBANA_PASSWORD environment variable in the .env file"; exit 1; fi; if [ ! -f certs/ca.zip ]; then echo "Creating CA"; bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip; unzip config/certs/ca.zip -d config/certs; fi; if [ ! -f certs/certs.zip ]; then echo "Creating certs"; echo -ne \ "instances:\n"\ " - name: es01\n"\ " dns:\n"\ " - es01\n"\ " - localhost\n"\ " ip:\n"\ " - 127.0.0.1\n"\ " - name: es02\n"\ " dns:\n"\ " - es02\n"\ " - localhost\n"\ " ip:\n"\ " - 127.0.0.1\n"\ " - name: es03\n"\ " dns:\n"\ " - es03\n"\ " - localhost\n"\ " ip:\n"\ " - 127.0.0.1\n"\ > config/certs/instances.yml; bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key; unzip config/certs/certs.zip -d config/certs; fi; echo "Setting file permissions" chown -R root:root config/certs; find . -type d -exec chmod 750 \{\} \;; find . -type f -exec chmod 640 \{\} \;; echo "Waiting for Elasticsearch availability"; until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done; echo "Setting kibana_system password"; until curl -s -X POST --cacert config/certs/ca/ca.crt -u elastic:${ELASTIC_PASSWORD} -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done; echo "All done!"; ' healthcheck: test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"] interval: 1s timeout: 5s retries: 120 es01: depends_on: setup: condition: service_healthy image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - certs:/usr/share/elasticsearch/config/certs - ../volumes/data/es01/logs:/usr/share/es/logs:rw - ../volumes/data/es01/data:/usr/share/es/data:rw ports: - ${ES_PORT}:9200 environment: - node.name=es01 - cluster.name=${CLUSTER_NAME} - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es02,es03 - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - bootstrap.memory_lock=true - xpack.security.enabled=true - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.key=certs/es01/es01.key - xpack.security.http.ssl.certificate=certs/es01/es01.crt - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.http.ssl.verification_mode=certificate - xpack.security.transport.ssl.enabled=true - xpack.security.transport.ssl.key=certs/es01/es01.key - xpack.security.transport.ssl.certificate=certs/es01/es01.crt - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.verification_mode=certificate - xpack.license.self_generated.type=${LICENSE} mem_limit: ${MEM_LIMIT} networks: - stack ulimits: memlock: soft: -1 hard: -1 healthcheck: test: [ "CMD-SHELL", "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'", ] interval: 10s timeout: 10s retries: 120 es02: depends_on: - es01 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - certs:/usr/share/elasticsearch/config/certs - ../volumes/data/es02/logs:/usr/share/es/logs:rw - ../volumes/data/es02/data:/usr/share/es/data:rw environment: - node.name=es02 - cluster.name=${CLUSTER_NAME} - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es01,es03 - bootstrap.memory_lock=true - xpack.security.enabled=true - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.key=certs/es02/es02.key - xpack.security.http.ssl.certificate=certs/es02/es02.crt - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.http.ssl.verification_mode=certificate - xpack.security.transport.ssl.enabled=true - xpack.security.transport.ssl.key=certs/es02/es02.key - xpack.security.transport.ssl.certificate=certs/es02/es02.crt - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.verification_mode=certificate - xpack.license.self_generated.type=${LICENSE} mem_limit: ${MEM_LIMIT} networks: - stack ulimits: memlock: soft: -1 hard: -1 healthcheck: test: [ "CMD-SHELL", "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'", ] interval: 10s timeout: 10s retries: 120 es03: depends_on: - es02 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - certs:/usr/share/elasticsearch/config/certs - ../volumes/data/es03/logs:/usr/share/es/logs:rw - ../volumes/data/es03/data:/usr/share/es/data:rw environment: - node.name=es03 - cluster.name=${CLUSTER_NAME} - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es01,es02 - bootstrap.memory_lock=true - xpack.security.enabled=true - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.key=certs/es03/es03.key - xpack.security.http.ssl.certificate=certs/es03/es03.crt - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.http.ssl.verification_mode=certificate - xpack.security.transport.ssl.enabled=true - xpack.security.transport.ssl.key=certs/es03/es03.key - xpack.security.transport.ssl.certificate=certs/es03/es03.crt - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.verification_mode=certificate - xpack.license.self_generated.type=${LICENSE} mem_limit: ${MEM_LIMIT} networks: - stack ulimits: memlock: soft: -1 hard: -1 healthcheck: test: [ "CMD-SHELL", "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'", ] interval: 10s timeout: 10s retries: 120 kibana: depends_on: es01: condition: service_healthy es02: condition: service_healthy es03: condition: service_healthy image: docker.elastic.co/kibana/kibana:${STACK_VERSION} volumes: - certs:/usr/share/kibana/config/certs - ../volumes/data/kibanadata:/usr/share/kibana/data:rw ports: - ${KIBANA_PORT}:5601 environment: - SERVERNAME=kibana - ELASTICSEARCH_HOSTS=https://es01:9200 - ELASTICSEARCH_USERNAME=kibana_system - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD} - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt mem_limit: ${MEM_LIMIT} networks: - stack healthcheck: test: [ "CMD-SHELL", "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'", ] interval: 10s timeout: 10s retries: 120 volumes: certs: driver: local esdata01: driver: local esdata02: driver: local esdata03: driver: local kibanadata: driver: local networks: stack: driver: bridge

创建volume
mkdir -p certs
mkdir -p ../volumes/data/es01/{logs,data}
mkdir -p ../volumes/data/es02/{logs,data}
mkdir -p ../volumes/data/es03/{logs,data}
mkdir -p ../volumes/data/kibanadata

运行docker-compose

docker-compose  -f docker-compose.yml up -d

 

标签:compose,xpack,8.8,ca,kibana,ssl,certs,es01,security
From: https://www.cnblogs.com/zyl88/p/17611919.html

相关文章

  • 使用Helm在Kubernetes部署Elasticsearch和Kibana
    使用Helm在Kubernetes部署Elasticsearch和Kibana发布于 19/03/2022 by Lisenet我们将安装Elasticsearch和Kibana,并为 ElasticStack加上安全的https流量和基本安全设置。预先要求我们用的是 Kuberneteshomelab这篇文章.本文中使用的配置文件可在 GitHub. 复制下列......
  • docker-compose 多项目部署
     DockerfileFROMnginxLABELcompony=com.ligyLABELby=ligenyunCOPYdist//usr/share/nginx/html/docker-compose.ymlversion:'3'services:ui2:container_name:ui2restart:alwaysbuild:./ui2ports:-"80......
  • CentOS安装podman-compose
    1.安装python3的依赖yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devellibffi-devel如果当前登录的是普通用户,需要在命令前加sudo,否则不用,下文同理。2.下载python3的......
  • Android开发 Jetpack Compose 与xml的混合开发AndroidView
    前言  JetpackCompose虽然已经逐渐完善,但是其实还是有很多地方未满足需求。比如播放视频、相机预览等等依然需要原来的View。所以目前阶段JetpackCompose与xml的混合开发非常重要。  官方文档地址:https://developer.android.google.cn/jetpack/compose/migrate/interopera......
  • Docker-Compose 一键部署mysql及初始化sql脚本
    1.部署前提:服务器具备docker和docker-compose环境2.镜像准备:-mysql:DockerFile文件:FROMmysql:5.7.41COPY*.sql/docker-entrypoint-initdb.d/初始化sql脚本xxx.sql放在DockerFile文件同级目录下执行指令:dockerbuild-fdockerfile_mysql-tmysql:1.0.0.......
  • docker-compose 启动MySQL
    version:'3.3'services:mysql:image:mysql:8.0.20##镜像restart:alwayshostname:mysqlcontainer_name:mysqlprivileged:trueports:-3306:3306environment:MYSQL_ROOT_PASSWORD:123456TZ:As......
  • docker compose 安装Prometheus+granfa
    cd/home/xxxxmkdir-pprometheuschmod777prometheuscdprometheusmkdir-pgrafana_dataprometheus_datachmod777grafana_dataprometheus_datadocker-compose.ymlversion:"3.7"services:node-exporter:image:prom/node-exporter:lat......
  • 记录一下【docker compose发布】 docker容器间通信
    踩坑:在网上找的帖子说是在dockercompose文件中的network下添加 1:直接报错, 2:然后又去查找说要在compose文件底部,和service同级添加network的声明,添加后还是不能通信,然后使用命令dockernetworkls查看发现新增了两个网络sub_test,pub_test 3:重新查找,使用已有网络需......
  • Android开发 Jetpack Compose Button
    前言  此篇博客讲解Button按钮一个简单的例子快速了解一下效果图代码@ComposablefunAPage(){Column(Modifier.fillMaxSize(),horizontalAlignment=Alignment.CenterHorizontally,verticalArrangement=Arrangement.Center){......
  • kibana4 的安装、配置和使用
        Kibana5都出来了......    简介kibana 是 Elastic.co 提供的个性化统计数据、图标展示页面,而 kibana4 则是一个全新的改版,与 kibana3 有着本质的不同kibana3 实质上是一组页面,通过 nginx 或 Apache 或其他任何一个服务器配置域名到目录的映射,实现访......