內網服務器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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章