我有一个3节点的Elasticsearch集群,它耗尽了每个节点中的磁盘空间。每个节点都是EC2实例。群集现在完全没有反应。
我有什么解决方案来释放空间?
在集群中添加节点会释放另一个节点中的空间,因为现在集群会通过其他节点重新分发信息吗?
或者是我唯一的解决方案,但绝对不是首选的解决方案是在侧面创建一个更大的集群并从第一个集群迁移数据?
非常欢迎任何其他想法/解决方案。
每个节点(elasticsearch.yml)上的群集配置如下所示:
cluster.name: AutoSearchCluster
node.name: i-asd4352
plugin.mandatory: cloud-aws
discovery.zen.ping.multicast.enabled: false
discovery.type: ec2
cloud.aws.region: us-west-2
discovery.ec2.groups: prod-group
gateway.recover_after_nodes: 2
gateway.expected_nodes: 3
gateway.recover_after_time: 5m
indices.fielddata.cache.size: 40%
提前谢谢。
答案 0 :(得分:0)
EC2根实例卷可能没有大量磁盘空间,因此在添加新节点之前,请检查您的EC2 AMI规范(您使用的是什么AMI?),以查看设备根存储是什么(EBS与内部)。之后,如果需要,您添加的任何新节点都应定义为附加所需大小的EBS卷,其中ES将存储数据(或增加的EBS根卷)
在短期内,如果为索引定义的分片数量(默认为5)大于3,是的,您可以添加与分片数量一样多的节点,并且会有一些改进(因为一些当前在现有节点中的分片将转到新节点。
此外,如果您有一个或多个副本(分片*副本>节点),添加新节点将获得一些改进(因为某些副本将转到新节点)。
但是,如果您的索引具有3个分片和零个副本,则添加新节点将不会执行任何操作。
答案 1 :(得分:-3)
您可以向群集添加新节点并重新排列分片,将分片重新路由/移动到新节点,但在继续之前请备份数据。 您还可以将网络连接硬盘安装到EC2,并将ES配置为不同的存储路径。