docker-compose安装elasticsearch集群与kibana

在工作目录创建docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
version: '2.2'
services:
# 节点一,
es01:
# 此处为 elasticsearch 的镜像版本, 具体版本可以去官网寻找,也可以直接使用此版本
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
# es01 为节点一名称,可以随意修改
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
# 网络配置,增加此处主要是因为docker容器之间网络隔断,不互通。增加之后,则三个几点与kibana都在同一网络。
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
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.9.3
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 配置,如果已经有其他的kibana,可以去除此配置,直接配置其他kibana的ELASTICSEARCH_HOSTS
kibana:
container_name: kb
image: docker.elastic.co/kibana/kibana:7.9.3
environment:
# 此处配置elasticsearch的host列表,
ELASTICSEARCH_HOSTS: '["http://es01:9200"]'
volumes:
# 映射宿主机配置文件到kibana具体容器, /home/docker/es/kibana.yml代表宿主机的文件路径, /usr/share/kibana/config/kibana.yml 此路径不需要修改,否则配置路径错误,配置文件无法生效
- /home/docker/es/kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- '5601:5601' #java、集群通信端口
privileged: true #环境变量
networks:
- elastic

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

# 此处网络配置
networks:
elastic:
# 网络桥接模式
driver: bridge

执行命令启动容器

1
2
docker-compose up -d
-d 后台运行容器

查看容器日志(防止日志错误)

1
docker logs {容器id|容器名称}

kibana.yml文件内容

1
2
3
4
5
6
7
8
9
10
11
12
server.name: kibana
# server.publicBaseUrl: "http://172.1.1.14:5601"
# kibana的主机地址 0.0.0.0可表示监听所有IP
server.host: "0.0.0.0"
# kibana访问es的URL 如果es设置密码,则需要使用 username 、password配置
#elasticsearch.hosts: [ "http://172.1.1.14:9200" ]
# elasticsearch.username: 'kibana'
# elasticsearch.password: 'kibana'
# 显示登陆页面
#xpack.monitoring.ui.container.elasticsearch.enabled: true
# 语言-此处展示为 中文
i18n.locale: "zh-CN"