本機redis客戶端與虛擬機上服務端以及Storm drpc無法連接通常情況的解決方案

最近在學redis、Storm drpc等框架的時候都出現了本地主機的客戶端無法正常連接虛擬機上的服務端。在經過一段時間的排查後,發現最終都是同一個原因,不過被我忽視了。爲了以後遇到類似的問題可以節省時間,所以在這裏記錄下來。
redis報錯如下:

ERROR o.a.s.d.executor - 
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
Caused by: java.net.SocketTimeoutException: connect timed out

解決方案:
1.我查看了IP地址和端口號,沒有問題。
2.嘗試systemctl stop firewall關閉firewall防火牆,發現firewall在storm測試的時候爲了省事兒已經被我關了。
3.經過了很長時間的嘗試還是沒好,就在將要放棄的時候,突然想到會不會是centos的iptables 將請求過濾掉了。嘗試讓redis的默認端口6379允許通過,/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT最終解決。
Storm drpc報錯如下:

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: org.apache.storm.thrift.transport.TTransportException: java.net.ConnectException: Connection timed out: connect
Caused by: java.lang.RuntimeException: org.apache.storm.thrift.transport.TTransportException: java.net.ConnectException: Connection timed out: connect
Caused by: org.apache.storm.thrift.transport.TTransportException: java.net.ConnectException: Connection timed out: connect
Caused by: java.net.ConnectException: Connection timed out: connect

由於在遇到這個問題之後沒有及時解決,導致後面又遇到了同樣的問題,花費了大量的時間。
解決方法同上,最終在iptables中開啓對應端口,/sbin/iptables -I INPUT -p tcp --dport 3772 -j ACCEPT問題解決。
吸取教訓,以後發生類似連接問題,先查firewall和iptables,節省時間;遇到問題及時解決,否則會碰到同樣的問題。

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