搭建es集群
单点es的缺点:1.存储数据有限;2.单点故障问题(es出现故障则整个服务会直接宕机)
解决存储数据有限:搭建多台es服务器实现集群
解决单点故障:在不同的es服务器中进行备份数据(例:在第二台服务器中备份第一台的数据)
搭建es集群:
1.编写docker-compose.yml文件并上传到linux中/root
version: '2.2'
services:es01:image: elasticsearch:7.12.1container_name: es01environment:- 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/dataports:- 9200:9200networks:- elastices02:image: elasticsearch:7.12.1container_name: es02environment:- 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/dataports:- 9201:9200networks:- elastices03:image: elasticsearch:7.12.1container_name: es03environment:- 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/datanetworks:- elasticports:- 9202:9200
volumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks: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映射定义 ...}}
}
集群脑裂问题
注:索引库一旦创建,分片数量不可在改变,否则可能产生查询不到数据的问题