环境准备
硬件设备: MacBook Pro M1
Elasticsearch 版本号: 7.13.2
Cerebro: 0.9.4
kibana: 7.13.2
镜像准备
Elasticsearch: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
Kibana: docker.elastic.co/kibana/kibana:7.13.2
Elasticsearch 和 kibana 都是使用官方提供的版本,由于 Cerebro 提供的官方版本是 amd64 的架构,在 M1 芯片的电脑上运行会出现一些奇奇怪怪的问题,所以 cerebro 是使用自己编译的镜像版本
编译 Cerebro 镜像
Cerebro 使用的镜像是基于Cerebro 官方镜像源码编译而来的,Dockerfile 如下:
# 使用 arm64v8 架构的 jdk11版本
FROM docker.io/arm64v8/openjdk:11
# cerebro 版本号
ENV CEREBRO_VERSION 0.9.4
RUN apt-get update \
&& apt-get install -y wget \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /opt/cerebro/logs \
&& wget -qO- https://github.com/lmenezes/cerebro/releases/download/v${CEREBRO_VERSION}/cerebro-${CEREBRO_VERSION}.tgz \
| tar xzv --strip-components 1 -C /opt/cerebro \
&& sed -i '/<appender-ref ref="FILE"/>/d' /opt/cerebro/conf/logback.xml \
&& addgroup -gid 1000 cerebro \
&& adduser -gid 1000 -uid 1000 cerebro \
&& chown -R cerebro:cerebro /opt/cerebro
WORKDIR /opt/cerebro
USER cerebro
ENTRYPOINT [ "/opt/cerebro/bin/cerebro" ]
编译镜像:
docker build -t my-cerebro:0.9.4 .
使用 docker-compose 启动 kibana、Es、Cerebro
docker-compose.yml 文件如下:
version: '2.2'
services:
cerebro:
image: 'my-cerebro:0.9.4'
container_name: cerebro
ports:
- "9000:9000"
command:
- -Dhosts.0.host=http://es01:9200
networks:
- elastic
kibana:
image: 'docker.elastic.co/kibana/kibana:7.13.2'
container_name: kibana
ports:
- 5601:5601
environment:
- ELASTICSEARCH_HOSTS=http://es01:9200
networks:
- elastic
es01:
image: 'docker.elastic.co/elasticsearch/elasticsearch:7.13.2'
container_name: es01
ports:
- 9200:9200
- 9300:9300
environment:
- node.name=es01
- cluster.name=elastic-cluster
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ~/Desktop/development/docker/elk/data/data01:/usr/share/elasticsearch/data
networks:
- elastic
es02:
image: 'docker.elastic.co/elasticsearch/elasticsearch:7.13.2'
container_name: es02
environment:
- node.name=es02
- cluster.name=elastic-cluster
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ~/Desktop/development/docker/elk/data/data02:/usr/share/elasticsearch/data
networks:
- elastic
networks:
elastic:
driver: bridge
运行 docker-compose 启动集群
docker-compose up -d
参考资料:
Cerebro官网:github.com/lmenezes/ce…
Elasticsearch官网:www.elastic.co/guide/en/el…