淺析部署遇到的2個報錯:Caused by: java.net.SocketTimeoutException: connect timed out的原因及解決、no suitable node (host-mode port already in use on 1 node)原因及解決


一、Caused by: java.net.SocketTimeoutException: connect timed out的原因及解決

  部署時碰到一個錯誤,如下:

java.net.SocketTimeoutException: connect timed out at redis.clients.jedis.Connection.connect(Connection.java:) at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:) at redis.clients.jedis.Connection.sendCommand(Connection.java:) at redis.clients.jedis.Connection.sendCommand(Connection.java:) at redis.clients.jedis.BinaryClient.multi(BinaryClient.java:) at redis.clients.jedis.BinaryJedis.multi(BinaryJedis.java:) at cn.edu.aynu.redis.TestTx.main(TestTx.java:) Caused by: java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:) at java.net.Socket.connect(Socket.java:) at redis.clients.jedis.Connection.connect(Connection.java:) ... more

  這個其實是 redis 的連接錯誤,不是數據庫的連接報錯哦,數據庫的連接報錯是這個:jdbc connection refused

  具體原因是有多種,比如:ip 寫錯了,端口沒開放,ip無法ping通不允許訪問等

  我這里是因為服務器 ip 無法 ping 通,在安全組里放開即可解決。

二、no suitable node (host-mode port already in use on 1 node)原因及解決

  這個報錯意思是:沒有合適的節點(主機模式端口已在1個節點上使用)

  其實其意思就是說端口已經被一個節點使用了,后面還有節點想用就用不了了。

  為什么會這樣呢?因為我在 compose.yaml 里對外放開了端口映射

  replicas: 2,但是端口映射放開了 8080:8080,三個節點,但是服務器只有一個8080,第一個占用8080,其他的在此之后就起不來了,

  解決辦法就是:把端口映射去掉即可。生產環境不需要別人外部通過8080訪問服務,所以不需要開放8080的映射。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM