部署es集群

我们会在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。

部署es集群可以直接使用docker-compose来完成,但这要求你的Linux虚拟机至少有1G的内存空间

1.1.创建es集群

首先编写一个docker-compose文件,内容如下:

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
version: '2.2'
services:
es01:
image: elasticsearch:7.12.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: elasticsearch:7.12.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- data02:/usr/share/elasticsearch/data
ports:
- 9201:9200
networks:
- elastic
es03:
image: elasticsearch:7.12.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
ports:
- 9202:9200
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local

networks:
elastic:
driver: bridge

es运行需要修改一些linux系统权限,修改/etc/sysctl.conf文件

1
vi /etc/sysctl.conf

添加下面的内容:

1
vm.max_map_count=262111

然后执行命令,让配置生效:

1
sysctl -p

通过docker-compose启动集群:

1
docker-compose up -d

1.2.集群状态监控

kibana可以监控es集群,不过新版本需要依赖es的x-pack 功能,配置比较复杂。

这里推荐使用cerebro来监控es集群状态,官方网址:https://github.com/lmenezes/cerebro

下载好的目录如下:

image-20240919160529087

进入对应的bin目录:

image-20240919160521313

双击其中的cerebro.bat文件即可启动服务。

image-20240919160513149

访问http://localhost:9000 即可进入管理界面:

image-20210602221115763

输入你的elasticsearch的任意节点的地址和端口,点击connect即可:

image-20210109181106866

绿色的条,代表集群处于绿色(健康状态)。

1.3.创建索引库

1)利用kibana的DevTools创建索引库

在DevTools中输入指令:

1
2
3
4
5
6
7
8
9
10
11
12
PUT /itcast
{
"settings": {
"number_of_shards": 3, // 分片数量
"number_of_replicas": 1 // 副本数量
},
"mappings": {
"properties": {
// mapping映射定义 ...
}
}
}

2)利用cerebro创建索引库

利用cerebro还可以创建索引库:

image-20240919160503178

填写索引库信息:

image-20210602221520629

点击右下角的create按钮:

image-20240919160456077

1.1.查看分片效果

回到首页,即可查看索引库分片效果:

image-20240919160447911