单点es的缺点:1.存储数据有限;2.单点故障问题(es出现故障则整个服务会直接宕机)
解决存储数据有限:搭建多台es服务器实现集群
解决单点故障:在不同的es服务器中进行备份数据(例:在第二台服务器中备份第一台的数据)
搭建es集群:
1.编写docker-compose.yml文件并上传到linux中/root
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
修改/etc/sysctl.conf文件
vi /etc/sysctl.conf
在文件中添加
vm.max_map_count=262144
然后执行命令,让配置生效
sysctl -p
通过docker-compose启动集群
docker-compose up -d
集群状态监控(cerebro)
下载cerebro
官网:GitHub - lmenezes/cerebro
下载后解压即可
进入bin后双击cerebro.bat即可运行
访问http://localhost:9000 即可进入管理界面
进入后输入你的elasticsearch的任意节点的地址和端口,点击connect即可
创建索引库并进行分片和备份
PUT /itcast
{
"settings": {
"number_of_shards": 3, // 分片数量
"number_of_replicas": 1 // 副本数量
},
"mappings": {
"properties": {
// mapping映射定义 ...
}
}
}
集群脑裂问题
注:索引库一旦创建,分片数量不可在改变,否则可能产生查询不到数据的问题