使用Docker Compose创建Elasticsearch + Kibana(Elasticsearch7.14.0)的方法

首先

由于在使用Elasticsearch+Kibana进行信息获取和可视化时,希望除了生产环境之外拥有一个可以自由操作的环境,因此我在CentOS的开发机和个人的Mac终端上使用Docker Compose创建了一个基于HTTP版Elasticsearch+Kibana的环境。我将这个过程记录下来作为备忘。这里只使用了Elasticsearch和Kibana的Docker官方镜像进行了创建。如果想要进行定制化,需要另外创建Docker文件进行构建。

如果在公司内受到代理的阻碍,可以事先在.bashrc、/etc/yum.conf、/etc/systemd/system/docker.service等文件中设置好代理配置。

1 Docker的安装

设置存储库

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装所需的包裹

$ sudo yum install docker-ce docker-ce-cli containerd.io

启动Docker并确认版本

$ sudo systemctl start docker
$ sudo docker --version

安装 Docker 引擎时,请参考以下官方来源。

安装Docker Compose的步骤

安装所需的软件包

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

应用二进制的执行权限

$ sudo chmod +x /usr/local/bin/docker-compose

版本确认。

$ docker-compose --version
docker-compose version 1.29.2, build 1110ad01

安装Docker Compose,请参考官方说明并查看其他发行版或不同版本的相关信息。

使用Docker Compose启动Elasticsearch和Kibana。

目录结构如下所示。
在任意目录下创建elasticstack目录,并在该目录下管理Docker Compose文件集合。(由于这次的定义文件docker-compose.yml采用了最简单的结构,所以没有进行elasticsearch.yml和kibana.yml的挂载。如果需要挂载,请在docker-compose.yml中进行追加。)

./elasticstack/
├── docker-compose.yml
├── elasticsearch
│   └── conf
│       └── elasticsearch.yml
└── kibana
    └── conf
        └── kibana.yml

在elasticstack目录下创建docker-compose.yml文件,并在Elasticsearch的官方网页描述之外,添加Kibana的信息。

#docker-yml from elastic sample +kibana
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
  kibana:
    image: docker.elastic.co/kibana/kibana:7.14.0
    ports:
      - 5601:5601
    environment:
      SERVER_NAME: localhost:5601
      ELASTICSEARCH_HOSTS: http://es01:9200
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge


为了避免内存不足异常,在启动docker-compose之前,进行以下设置:
(默认值不足以满足容量需求,无法启动而导致错误)

$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
$ sysctl -w vm.max_map_count=262144

使用 docker-compose 启动容器(-d 是后台选项)。

$ docker-compose up -d

检查容器的启动状态。

$ docker-compose ps
        Name                       Command               State                         Ports                       
-------------------------------------------------------------------------------------------------------------------
elasticstack_kibana_1   /bin/tini -- /usr/local/bi ...   Up      0.0.0.0:5601->5601/tcp,:::5601->5601/tcp          
es01                    /bin/tini -- /usr/local/bi ...   Up      0.0.0.0:9200->9200/tcp,:::9200->9200/tcp, 9300/tcp
es02                    /bin/tini -- /usr/local/bi ...   Up      9200/tcp, 9300/tcp                                
es03                    /bin/tini -- /usr/local/bi ...   Up      9200/tcp, 9300/tcp  

如果容器正常启动,可以通过Chrome等浏览器访问 http://localhost:5601 ,从Kibana中确认ElasticStack的状态。

b5907042f914b42bbf452530488b78ce.gif

请提供更多上下文信息。

    • Install Docker Engine

 

    • Install Docker Compose

 

    Install Elasticsearch with Docker
广告
将在 10 秒后关闭
bannerAds