{笨方法学Elasticsearch}测试cluster.routing.allocation.disable_allocation

本文介绍如何通过配置Elasticsearch来禁用和启用数据迁移,以防止重启节点时的数据变动,并提供具体的curl命令示例。

也可以使用下面的参数设置不迁移:


<span class="pln" style="color:#000000;">curl </span><span class="pun" style="color:#66660;">-</span><span class="pln" style="color:#000000;">XPUT localhost</span><span class="pun" style="color:#66660;">:</span><span class="lit" style="color:#06666;">9200</span><span class="pun" style="color:#66660;">/</span><span class="pln" style="color:#000000;">_cluster</span><span class="pun" style="color:#66660;">/</span><span class="pln" style="color:#000000;">settings </span><span class="pun" style="color:#66660;">-</span><span class="pln" style="color:#000000;">d </span><span class="str" style="color:#0880;">'{</span><span class="pln" style="color:#000000;"><br style="" />                </span><span class="str" style="color:#0880;">"transient"</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">:</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{</span><span class="pln" style="color:#000000;"><br style="" />                    </span><span class="str" style="color:#0880;">"cluster.routing.allocation.enable"</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">:</span><span class="pln" style="color:#000000;"> </span><span class="str" style="color:#0880;">"none"</span><span class="pln" style="color:#000000;"><br style="" />                </span><span class="pun" style="color:#66660;">}</span><span class="pln" style="color:#000000;"><br style="" />        </span><span class="pun" style="color:#66660;">}</span><span class="str" style="color:#0880;">'</span>
<span class="pln" style="color:#000000;">curl </span><span class="pun" style="color:#66660;">-</span><span class="pln" style="color:#000000;">XPUT localhost</span><span class="pun" style="color:#66660;">:</span><span class="lit" style="color:#06666;">9200</span><span class="pun" style="color:#66660;">/</span><span class="pln" style="color:#000000;">_cluster</span><span class="pun" style="color:#66660;">/</span><span class="pln" style="color:#000000;">settings </span><span class="pun" style="color:#66660;">-</span><span class="pln" style="color:#000000;">d </span><span class="str" style="color:#0880;">'{</span><span class="pln" style="color:#000000;"><br style="" />                </span><span class="str" style="color:#0880;">"transient"</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">:</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{</span><span class="pln" style="color:#000000;"><br style="" />                    </span><span class="str" style="color:#0880;">"cluster.routing.allocation.enable"</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">:</span><span class="pln" style="color:#000000;"> </span><span class="str" style="color:#0880;">"all"</span><span class="pln" style="color:#000000;"><br style="" />                </span><span class="pun" style="color:#66660;">}</span><span class="pln" style="color:#000000;"><br style="" />        </span><span class="pun" style="color:#66660;">}</span><span class="str" style="color:#0880;">'</span>


======================================

cluster.routing.allocation.disable_allocation:

    字面理解就是不分配shard。由于Elasticsearch数据迁移的时候必然涉及shard的重新分配,所以这个配置是用来防止在重启节点时,ES的数据发生来回的迁移。


具体测试:


1. 设置不迁移

curl -XPUT localhost:9200/_cluster/settings -d'{"transient":{"cluster.routing.allocation.disable_allocation":true}}'

 

2. 关闭节点nvlkv14之前

 

3. 关闭节点nvlkv14之后,可以看出没有做数据迁移

 

 

4. 重启几点nvlkv14之后,没有恢复数据

 

5. 设置迁移

curl -XPUTlocalhost:9200/_cluster/settings -d'{"transient":{"cluster.routing.allocation.disable_allocation":false}}'

数据恢复跟之前的分布式完全一样的

 

6. 没有设置不能迁移,集体重启之后,数据恢复跟重启之前一样

### ELK 集群中 `cluster.routing.allocation.exclude._ip` 的配置及使用方法 在 Elasticsearch 集群中,`cluster.routing.allocation.exclude._ip` 是一个用于控制分片分配的参数。通过设置该参数,可以将特定 IP 地址的节点从分片分配中排除,从而实现对集群资源的精细化管理。 #### 参数说明 `cluster.routing.allocation.exclude._ip` 用于指定一个或多个 IP 地址,Elasticsearch 将不会在这些 IP 地址对应的节点上分配新的分片或迁移现有分片[^2]。此参数可以在动态集群设置中进行修改,支持临时(`transient`)和持久(`persistent`)两种模式。 #### 配置示例 ##### 1. 排除单个节点的 IP 地址 以下命令将指定 IP 地址的节点从分片分配中排除: ```json PUT /_cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": "192.168.1.100" } } ``` 这条命令会将 IP 地址为 `192.168.1.100` 的节点标记为不可用,Elasticsearch 不会在该节点上分配新分片或迁移现有分片[^3]。 ##### 2. 排除多个节点的 IP 地址 如果需要排除多个节点的 IP 地址,可以通过逗号分隔的方式指定多个 IP 地址: ```json PUT /_cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": "192.168.1.100,192.168.1.101" } } ``` 这条命令会将 IP 地址为 `192.168.1.100` 和 `192.168.1.101` 的节点从分片分配中排除[^3]。 ##### 3. 清空排除规则 如果需要恢复所有节点的分片分配能力,可以将 `cluster.routing.allocation.exclude._ip` 设置为空值: ```json PUT /_cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": null } } ``` 这条命令会清空之前的排除规则,允许所有节点重新参与分片分配[^4]。 #### 注意事项 - **动态调整**:`cluster.routing.allocation.exclude._ip` 支持动态调整,无需重启 Elasticsearch 集群即可生效。 - **持久化设置**:如果希望排除规则在集群重启后仍然有效,可以将 `transient` 替换为 `persistent`[^5]。 - **集群健康状态**:在调整分片分配规则时,建议监控集群的健康状态,确保分片分配不会导致数据丢失或性能下降[^1]。 #### 检查集群状态 调整分片分配规则后,可以通过以下命令检查集群状态,确保规则已正确应用: ```bash curl -X GET "http://localhost:9200/_cluster/health?pretty" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值