目录

解决Elasticsearch索引只读(read-only)

背景

这两天有开发向我反馈说elasticsearch有报错,嘿,我定睛一看,这不是进入只读状态了,看来是存储达到额度,我马上加个新的数据节点,平衡一下存储压力
报错信息:

1
Elasticsearch Error {type:cluster_block_exception,reason:”blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];}

新建服务器,安装elasticsearch

为了和之前的服务器一样,我简单写一下我elasticsearch版本和服务器系统版本

软件 版本
centos 7.9
elasticsearch 6.7.2
JDK 1.8.61
内存 32G

安装和配置elasticsearch

使用rpm 安装

1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.rpm
1
rpm --install elasticsearch-6.7.2.rpm

配置参数,进入/etc/elasticsearch目录
修改配置vim elasticsearch.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# ======================== Elasticsearch Configuration ========================= 

cluster.name: cluster-prod-es # 集群名称

node.name: node-x # 节点名称

path.data: /var/lib/elasticsearch # 数据存储

path.logs: /var/log/elasticsearch  # 日志存储

network.host: 192.168.0.170 # 主机IP地址 

http.port: 9200 # 端口号

discovery.zen.ping.unicast.hosts: ["192.168.0.171", "192.168.0.172", "192.168.0.173"] # 集群节点

discovery.zen.minimum_master_nodes: 2 #防止脑裂

修改配置vim jvm.options

1
2
-Xms16g
-Xmx16g

启动elasticsearch 服务

1
systemctl start elasticsearch.service

等待数据节点自动调节

这里要等待一会儿数据节点自动调节,这个调节时间取决于你数据的大小,一般来说几个小时也好了,如果数据重要性不太高的话,和领导沟通一下,就别傻坐着等他迁移完,正常下班就行了。

关闭索引只读

对了,千万不要忘记关闭只读状态,虽然你新增了节点,但是当前的只读状态并没有关闭,所以要执行一下命令关闭只读状态

1
curl -XPUT -H "Content-Type: application/json" http://192.168.0.170:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

或者你在head-elasticsearch上操作
/images/head-es.jpg

感谢你的阅读