Elasticsearch 8.7三节点集群NFS快照恢复path.repo路径不可访问问题
错误信息翻译
"reason": "[rep3] [[FOZ63vx_RAiD46C5vTndJA, 'org.elasticsearch.transport.RemoteTransportException: [node-1][192.168.xx.xxx:9300][internal:admin/repository/verify]'], [lM0JnpvIR5eugzv-9i5Lw, 'org.elasticsearch.transport.RemoteTransportException: [node-3][192.168.xx.xxx:9300][internal:admin/repository/verify]']]",
"suppressed": [{"type": "repository_verification_exception", "reason": "[rep3] 存储位置[/var/nfs/elasticsearch2]在节点[{node-1}{FOZ63vx_RAiD46C5vTndJA}{1N_QFYKXTQ6GPUV1YC2ELQ}{node-1}{192.168.xx.xxx}{192.168.xx.xxx:9300}{cdfhilmrstw}{8.7.1}{ml.machine_memory=16778862592, ml.allocated_processors=4, ml.max_jvm_size=8388608000, ml.allocated_processors_double=4.0, xpack.installed=true}]上不可访问"}]
1. 修复NFS目录权限
在所有Elasticsearch节点上执行:
- 把NFS挂载目录的所有者/组改为
elasticsearch用户:sudo chown -R elasticsearch:elasticsearch /var/nfs/elasticsearch2 - 设置读写权限,确保Elasticsearch能正常访问:
sudo chmod -R 750 /var/nfs/elasticsearch2
2. 调整NFS挂载参数
Elasticsearch对NFS挂载有严格要求,修改每个节点的/etc/fstab,确保挂载行包含以下参数:
<NFS服务器IP>:/共享目录路径 /var/nfs/elasticsearch2 nfs rw,sync,hard,vers=4.2,noatime,nodev,nosuid 0 0
执行重新挂载生效:
sudo mount -a
- 关键参数说明:
hard防止I/O错误丢弃请求,sync保证写入同步,vers=4.2使用稳定的NFS版本。
3. 验证Elasticsearch配置
- 检查每个节点
elasticsearch.yml中的path.repo配置:path.repo: ["/var/nfs/elasticsearch2"] - 重启所有Elasticsearch节点加载配置:
sudo systemctl restart elasticsearch
4. 解除SELinux限制
若系统开启SELinux,需允许Elasticsearch访问NFS路径:
- 临时关闭测试:
sudo setenforce 0 - 测试有效后添加永久规则:
sudo semanage fcontext -a -t elasticsearch_var_lib_t "/var/nfs/elasticsearch2(/.*)?" sudo restorecon -Rv /var/nfs/elasticsearch2
5. 手动验证节点访问权限
在每个节点切换到elasticsearch用户,测试读写NFS目录:
sudo su - elasticsearch touch /var/nfs/elasticsearch2/test_file rm /var/nfs/elasticsearch2/test_file
若操作失败,说明该节点NFS挂载或权限仍有问题,需重新排查客户端配置。
6. 重新校验快照仓库
完成以上操作后,重新创建或验证快照仓库:
curl -X PUT "http://<ES节点IP>:9200/_snapshot/rep3" -H "Content-Type: application/json" -d '{ "type": "fs", "settings": { "location": "/var/nfs/elasticsearch2", "compress": true } }'
内容的提问来源于stack exchange,提问作者Raushan kumar

