当一个节点从集群中下线了, es 有一个延迟拷贝机制, 默认是等一分钟之后再开始处理 unassigned 的分片, 该做 rebalance的去 rebalance,之所以这样, 是因为es担心如果一个点只是中断了片刻, 或者临时下线某台机器就立马大动干戈,就麻烦了!
elasticsearch 中 index.unassigned.node_left.delayed_timeout 的默认值是多少?
在Elasticsearch中,index.unassigned.node_left.delayed_timeout
的默认值是1分钟(1m)。这个参数定义了当节点离开集群时,未分配的索引分片等待重新分配的时间。如果在这个时间内节点没有重新加入集群,那么这些未分配的分片将被标记为unassigned状态。
如何修改整个es集群的 index.unassigned.node_left.delayed_timeout 值 ?
要修改整个Elasticsearch集群的index.unassigned.node_left.delayed_timeout
值,你需要进行以下步骤:
-
进入Elasticsearch的配置目录。默认情况下,这个目录在
/etc/elasticsearch/
(Linux)或C:\ProgramData\Elastic\Elasticsearch\config
(Windows)。 -
在配置目录中找到名为
elasticsearch.yml
的配置文件,并打开它。 -
在
elasticsearch.yml
文件中,找到或添加以下行来设置index.unassigned.node_left.delayed_timeout
的值:index.unassigned.node_left.delayed_timeout: <新的超时值>
用你想要的新超时值替换
<新的超时值>
。 -
保存并关闭
elasticsearch.yml
文件。 -
重启Elasticsearch集群,以使新的配置生效。
请注意,如果你有多个节点的Elasticsearch集群,你需要在每个节点上进行上述步骤来修改整个集群的index.unassigned.node_left.delayed_timeout
值,确保在所有节点上使用相同的新超时值,以保持集群的一致性。
怎么用curl修改集群的 index.unassigned.node_left.delayed_timeout 值?
你可以使用curl命令通过HTTP REST API来修改Elasticsearch集群的index.unassigned.node_left.delayed_timeout
值。以下是通过curl命令修改的步骤:
- 打开终端或命令提示符,并运行以下curl命令来修改
index.unassigned.node_left.delayed_timeout
的值:
curl -XPUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"persistent": {
"index.unassigned.node_left.delayed_timeout": "<新的超时值>"
}
}'
将<新的超时值>
替换为你想要的新超时值。
- 运行上述curl命令后,会返回一个JSON响应,表示设置已成功应用于Elasticsearch集群。
请注意,上述curl命令假设Elasticsearch正在本地运行,并且默认监听端口为9200。如果你的Elasticsearch配置有所不同,请相应地修改curl命令中的主机和端口。
此外,如果你的Elasticsearch集群需要身份验证,你需要在curl命令中提供相应的身份验证参数。有关更多详细信息,请参阅Elasticsearch文档中关于安全设置的部分。
如何修改某个索引的 index.unassigned.node_left.delayed_timeout 值 ?
curl -XPUT 'localhost:9200/<INDEX_NAME>/_settings' -d '
{
"settings": {
"index.unassigned.node_left.delayed_timeout": "60s"
}
}'
网友评论