使用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的状态。
请提供更多上下文信息。
-
- Install Docker Engine
-
- Install Docker Compose
- Install Elasticsearch with Docker