减少数据节点的磁盘使用量
编辑减少数据节点的磁盘使用量编辑
为了在不丢失任何数据的情况下减少集群中的磁盘使用量,您可以尝试减少索引的副本数。
减少索引的副本数可能会降低搜索吞吐量和数据冗余度。但是,它可以快速为集群提供喘息空间,直到找到更永久的解决方案。
使用 Kibana
- 登录到 Elastic Cloud 控制台。
-
在 Elasticsearch Service 面板中,单击部署的名称。
如果部署名称被禁用,则您的 Kibana 实例可能不正常,在这种情况下,请联系 Elastic 支持。如果您的部署不包含 Kibana,您只需 先启用它。
- 打开部署的侧边导航菜单(位于左上角 Elastic 徽标下方),然后转到 堆栈管理 > 索引管理。
-
在所有索引的列表中,单击
副本
列两次,以根据副本数量对索引进行排序,从副本数量最多的索引开始。浏览索引,并从重要性最低且副本数量最多的索引开始逐个选择。减少索引的副本数可能会降低搜索吞吐量和数据冗余度。
-
对于您选择的每个索引,单击其名称,然后在出现的面板上单击
编辑设置
,将index.number_of_replicas
的值减少到所需的值,然后单击保存
。 - 继续此过程,直到集群恢复正常。
为了估计需要删除多少个副本,首先需要估计需要释放的磁盘空间量。
-
首先,检索相关的磁盘阈值,这些阈值将指示应释放多少空间。相关的阈值是除冻结层之外的所有层的 高水位线 和冻结层的 冻结洪水阶段水位线。以下示例演示了热层中的磁盘空间不足,因此我们只会检索高水位线
response = client.cluster.get_settings( include_defaults: true, filter_path: '*.cluster.routing.allocation.disk.watermark.high*' ) puts response
GET _cluster/settings?include_defaults&filter_path=*.cluster.routing.allocation.disk.watermark.high*
响应如下所示
{ "defaults": { "cluster": { "routing": { "allocation": { "disk": { "watermark": { "high": "90%", "high.max_headroom": "150GB" } } } } } } }
以上意味着,为了解决磁盘空间不足的问题,我们需要将磁盘使用量降低到 90% 以下,或者拥有超过 150GB 的可用空间,请阅读有关此阈值如何工作的更多信息 此处。
-
下一步是找出当前的磁盘使用量;这将指示应释放多少空间。为简单起见,我们的示例只有一个节点,但您可以将相同的操作应用于相关阈值之上的每个节点。
response = client.cat.allocation( v: true, s: 'disk.avail', h: 'node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards' ) puts response
GET _cat/allocation?v&s=disk.avail&h=node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards
响应如下所示
node disk.percent disk.avail disk.total disk.used disk.indices shards instance-0000000000 91 4.6gb 35gb 31.1gb 29.9gb 111
- 高水位线配置指示磁盘使用量需要降至 90% 以下。考虑留出一些空间,这样节点在不久的将来就不会超过阈值。在本例中,让我们释放大约 7GB 的空间。
-
下一步是列出所有索引并选择要减少的副本。
以下命令按副本数量和主存储大小降序排列索引。我们这样做是为了帮助您选择要减少的副本,前提是您拥有的副本越多,删除副本的风险就越小,副本越大,释放的空间就越多。这没有考虑到任何功能要求,因此请将其视为仅仅是一个建议。
response = client.cat.indices( v: true, s: 'rep:desc,pri.store.size:desc', h: 'health,index,pri,rep,store.size,pri.store.size' ) puts response
GET _cat/indices?v&s=rep:desc,pri.store.size:desc&h=health,index,pri,rep,store.size,pri.store.size
响应如下所示
health index pri rep store.size pri.store.size green my_index 2 3 9.9gb 3.3gb green my_other_index 2 3 1.8gb 470.3mb green search-products 2 3 278.5kb 69.6kb green logs-000001 1 0 7.7gb 7.7gb
-
在上面的列表中,我们可以看到,如果我们将索引
my_index
和my_other_index
的副本减少到 1 个,我们将释放所需的磁盘空间。没有必要减少search-products
的副本,而logs-000001
没有任何副本。使用 索引更新设置 API 减少一个或多个索引的副本减少索引的副本数可能会降低搜索吞吐量和数据冗余度。
response = client.indices.put_settings( index: 'my_index,my_other_index', body: { 'index.number_of_replicas' => 1 } ) puts response
PUT my_index,my_other_index/_settings { "index.number_of_replicas": 1 }