ElasticSearch 进入 "read only" 模式,节点无法更改
ElasticSearch entered "read only" mode, node cannot be altered
我的 ES 集群(由 5 个数据节点,3 个主节点组成)在夜间发生了一些事情。
我不知道发生了什么,但是所有的索引和数据都被删除了,集群进入了“只读”模式,可能是被黑了?
尝试获取 Kibana 运行 时,我得到以下信息:
已尝试重新启动 Kibana - 它已重新启动,但没有任何变化。
尝试重新启动 Elastic - 它重新启动(所有节点),没有任何改变。
然后我查看了集群设置,这就是我得到的:
{
"persistent": {
"cluster": {
"routing": {
"allocation": {
"enable": "all"
}
},
"blocks": {
"read_only": "true"
}
}
},
"transient": {
"cluster": {
"routing": {
"allocation": {
"enable": "all"
}
}
}
}
}
我尝试按如下方式撤消只读:
PUT _cluster/settings
{
"persistent": {
"blocks.read_only": false
}
}
如您所见,运气不佳:
{
"error": {
"root_cause": [
{
"type": "cluster_block_exception",
"reason": "blocked by: [FORBIDDEN/6/cluster read-only (api)];"
}
],
"type": "cluster_block_exception",
"reason": "blocked by: [FORBIDDEN/6/cluster read-only (api)];"
},
"status": 403
}
有什么想法吗?
更新:,现在是更重要的部分 - 为什么?
发生了什么,为什么?
我丢失了所有数据并且我的集群进入了只读模式。
正确的命令是:
PUT /_cluster/settings
{
"persistent" : {
"cluster.blocks.read_only" : false
}
}
原来 ES 有一些可用磁盘的阈值 space,当 "flood" 被命中时,它会将索引置于只读模式。
为了将其设置回去(使用 ES6 测试),您需要执行以下操作:
PUT /[index_name]/_settings
{
"index.blocks.read_only_allow_delete": null
}
可以在文档的以下页面上找到更多信息:
https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html
我的 ES 集群(由 5 个数据节点,3 个主节点组成)在夜间发生了一些事情。
我不知道发生了什么,但是所有的索引和数据都被删除了,集群进入了“只读”模式,可能是被黑了?
尝试获取 Kibana 运行 时,我得到以下信息:
已尝试重新启动 Kibana - 它已重新启动,但没有任何变化。 尝试重新启动 Elastic - 它重新启动(所有节点),没有任何改变。
然后我查看了集群设置,这就是我得到的:
{
"persistent": {
"cluster": {
"routing": {
"allocation": {
"enable": "all"
}
},
"blocks": {
"read_only": "true"
}
}
},
"transient": {
"cluster": {
"routing": {
"allocation": {
"enable": "all"
}
}
}
}
}
我尝试按如下方式撤消只读:
PUT _cluster/settings
{
"persistent": {
"blocks.read_only": false
}
}
如您所见,运气不佳:
{
"error": {
"root_cause": [
{
"type": "cluster_block_exception",
"reason": "blocked by: [FORBIDDEN/6/cluster read-only (api)];"
}
],
"type": "cluster_block_exception",
"reason": "blocked by: [FORBIDDEN/6/cluster read-only (api)];"
},
"status": 403
}
有什么想法吗?
更新:
正确的命令是:
PUT /_cluster/settings
{
"persistent" : {
"cluster.blocks.read_only" : false
}
}
原来 ES 有一些可用磁盘的阈值 space,当 "flood" 被命中时,它会将索引置于只读模式。
为了将其设置回去(使用 ES6 测试),您需要执行以下操作:
PUT /[index_name]/_settings
{
"index.blocks.read_only_allow_delete": null
}
可以在文档的以下页面上找到更多信息: https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html