内网服务器DNS配置,引发的惨案

前言

最近运维给我们组的一台内网服务器加内存,由于机器被重启,之前所有的服务都被停掉了,需要我们手动重启各个服务(以前的服务部署比较low)。

事故报错

当我用脚本一顿批量操作后,用 jps -l 命令查看服务运行情况时,发现一个服务都没起来。只能查看启动日志,发现里面有个报错:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from URL [jar:file:/home/leex/jar/member-service.jar!/META-INF/spring/log4j.xml]; nested exception is java.net.UnknownHostException: logging.apache.org
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:410)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93)
at com.alibaba.dubbo.container.spring.SpringContainer.start(SpringContainer.java:46)
at com.alibaba.dubbo.container.Main.main(Main.java:86)
Caused by: java.net.UnknownHostException: logging.apache.org
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)

一看发现是log4j日志的问题,但是具体原因未知,一看这么多报错,第一反应就是百度,结果百度了一大堆,也没有一个解决方案。只能自己硬着头皮分析报错日志。

日志分析

首先找到两个关键句:

  1. IOException parsing XML document from URL [jar:file:/home/leex/jar/member-service.jar!/META-INF/spring/log4j.xml]
  2. Caused by: java.net.UnknownHostException: logging.apache.org

根据第一点,找到项目中 log4j.xml 文件如下:
在这里插入图片描述
再结合第二点,猜测是服务器无法访问到 logging.apache.org 域名。
于是我在本地和服务器上都ping 了下。发现本地可以ping通,而服务器返回如下:
在这里插入图片描述
所以确定原因:服务器网络配置问题

问题解决

确定原因之后,又是一顿查资料,最后通过增加dns配置解决。
增加如下配置:
在这里插入图片描述
此种方案服务器重启失效,所以提供另一种解决方案:
修改网卡DNS设置:

vim /etc/sysconfig/network-scripts/ifcfg-eth0 ,增加如下配置
在这里插入图片描述

重启服务后,发现日志正常,服务正常启动。到此问题已经解决。

科普

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)

免费公共DNS列表

Google DNS 8.8.8.8,8.8.4.4
Public DNS+ 119.29.29.29
阿里 DNS 223.6.6.6,223.5.5.5
百度 DNS 180.76.76.76

猜你喜欢

转载自blog.csdn.net/HXNLYW/article/details/106944237