一次etchosts权限错误导致的es集群错误

一次etchosts权限错误导致的es集群错误,第1张

先说一下环境:系统使用的CentOS75,elasticsearch版本是540。一套产品集群包括三个elasticsearch节点构成的集群。
部署了两套测试集群,配置基本类似,elasticsearch配置文件中使用主机名。在某一次测试后,一套集群里的elasticsearch就开始报错,无法提供服务。查看日志发现,elasticsearch一直抛出UnknownHostException异常,所以无法和另外两个节点通信连成集群。根据堆栈信息,这个异常是在解析其它elasticsearch节点域名的时候调用InetAddressgetAllByName()抛出的。
而另外一套集群里类似的配置,它的elasticsearch服务却是很正常的。唯一的不同是,出问题的集群临时配置了DNS服务。
按正常的情况来说,elasticsearch解析域名的方式应该是先从/etc/hosts中获取,获取不到了再查询DNS。elasticsearch服务节点的主机名、IP都有在配置在/etc/hosts中。所以,即使一套集群配置了DNS,另外一套没有,也不应该出现elasticsearch无法解析域名的问题。

为了找到域名解析错误的原因,我决定跟踪一下elasticsearch解析域名的过程,使用的工具是strace。strace命令可以追踪进程的系统调用。
安装过程很简单。

接着是修改elasticsearch的执行脚本,一般路径是/usr/share/elasticsearch/bin/elasticsearch。在这个脚本的最后几行,在exec 后添加strace命令 strace -o /tmp/esstracelog -f ,如下所示。

-o参数将strace的输出保存到文件/tmp/esstracelog,-f参数表明追踪进程的所有子进程的系统调用。
两个集群的elasticsearch节点都修改了这个脚本,重启服务后对比查看。对比这个输出文件,终于发现一些端倪。首先,elasticsearch调用的getAllByName()确实首先查看了/etc/hosts文件,但是权限不足无法访问这个文件。
这是有问题的,首先是这个文件应该是可读的,不应该出现权限不足的问题,第二是两个集群都无法访问这个文件,但是为什么一个能解析域名而另外一个不能。
接着往下对比,出问题的elasticsearch进程这时候检查到/etc/resovlconf文件已经配置,于是向DNS服务器发出了查询。DNS无法解析,于是抛出了UnknownHostException异常。另外一边,没有问题的elasticsearch进程检查到/etc/resovlconf未配置,这时候做了一个特别的 *** 作,它创建了一个地址族是AF_NETLINK的原始套接字,通过这个套接字查询得到了域名对应的IP地址。我猜测,这可能是访问系统的ARP信息。
既然是DNS的问题,那么把出问题的/etc/resolvconf中的DNS配置删除呢?重启服务之后,elasticsearch服务依然抛出异常,查看日志发现进程虽然跳过了/etc/resolvconf,但是它却开始访问了本地的DNS端口53(UDP),可能这是java最后的解析尝试了。恰好,这个节点上部署了rpcbind服务,这个服务恰好就监听了53端口,结果就是依然无法通过DNS解析,java华丽丽的抛出了异常。

问题的根本原因还是/etc/hosts文件不可读,查看这个文件的权限,结果是600,意思就是只能root用户读写了,其它用户没有任何权限,包括读。elasticsearch服务使用的elasticsearch用户,所以当然就会被禁止读取。
经过其它的查找,发现是有一个服务进程会一直更新这个hosts文件,更新的方式是先创建一个临时文件,然后rename成hosts文件,由于临时文件的默认权限是600,所以导致hosts文件的权限最后也是600了。
至此,整个的问题的原因已经清楚。hosts权限的错误,导致elasticsearch通过DNS解析域名,又刚好DNS解析报错,没有通过ARP解析域名。
另外从这个事情中也可以看到java解析域名的套路,先/etc/hosts文件,接着是DNS,先远程的DNS后本地的DNS,最后尝试从本地ARP缓存解析,中间有一个过程抛出异常的时候,解析就会失败。

WIFI未打开 :检查手机的wifi是否是打开状态。
2
SMB服务器不在同一网络内 :检查路由的连接状态,不对的话,改正即可。
3
IP地址失效 :确保连接正常的情况下重新搜索
4
SMB服务已关闭: ①点击“开始”菜单,在搜索框中输入“服务”单击进入,

好的。
检查手机上面的网络连接状况,查看其它软件是否可以正常联网,检查一下手里面的安全管家软件是否已经限制了它的网络访问功能,如果存在限制,那么就取消限制,检查登陆帐号密码是否正确,同时区分一下大小写,如果已经忘记密码,那么可以通过密码找回功能重新设置密码,手机系统或者软件没有响应,重启一下手机再进行登陆,ES软件版本较低,将软件升级到最新版本后登陆。
WIFI未打开:检查手机的wifi是否是打开状态。SMB服务器不在同一网络内:检查路由的连接状态,不对的话,改正即可。IP地址失效:确保连接正常的情况下重新搜索SMB服务已关闭:点击“开始”菜单,在搜索框中输入“服务”单击进入。

出现错误代码es358这种情况是因为手机系统禁止了农业银行访问网络的权限,导致请求服务器失败。
解决方法如下:1、在手机桌面上打开箭头所指的设置。
2、打开设置后点击蜂窝网络。
3、在出现的页面里,选择应用软件农业银行。
4、允许农业银行使用WLAN与蜂窝网络。
5、打开农业银行就可以正常 *** 作了。
:农行掌上银行(Android版)是农业银行为Android手机用户提供的专用客户端软件,集金融应用和增值服务于一体,意在满足客户自由、方便、快捷、潮流的移动金融需求,畅享“掌尚e达,自由随行” 移动金融自由新体验。 支持Android *** 作系统V21以上版本。

如果您遇到了服务器错误无法获取查找设备状态的问题,可以尝试以下解决方法:
1检查网络连接:确保您的设备已连接到互联网,并且网络稳定。
2尝试重新加载页面:刷新网页或应用,看是否可以解决这个问题。
3重启设备:尝试重启设备,看是否可以解决问题。
4清空缓存:如果问题仍然存在,请尝试清空缓存。在浏览器设置中找到缓存选项,清除浏览器缓存。
5检查服务器状态:也有可能是服务器出现了问题,您可以等待一段时间再尝试 *** 作,或者联系相关技术支持人员查询服务器状态。
6升级软件:如果以上解决方法均未生效,可以尝试升级设备所使用的软件版本,可能会修复一些问题。
如果以上方法无法解决问题,建议联系设备厂商或相关技术支持人员寻求帮助。

服务器出现错误。根据查询博客园得知,es文件浏览器添加ftp显示路径为空是服务器出现错误,es文件浏览器是一个能管理安卓设备本地、局域网共享、远程FTP、蓝牙设备和云存储的系统工具类移动软件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10331599.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-07
下一篇2023-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存