問題描述
同時購買,配置相同,跑的服務相同,騰訊雲虛擬機
去telnet MQ的61616端口
- 一個連接超時
- 一個拒絕連接
而項目使用的框架對MQ的健康檢查,會判斷TCP連接MQ 61616的端口的狀態,只認爲兩種狀態時正常的 拒絕連接 正常連接(MQ是集羣)
問題處理
- 兩個服務器安全組完全相同,排除安全組問題
- 防火牆和selinux都是關閉狀態
- 連接超時的機器如果服務端監聽了61616端口,就可以telnet通
- 聯繫騰訊的人員最終確定問題
相同母機上的子機服務對應端口未開啓使用telnet探測端口會被防火牆攔截導致返回連接超時
這是母機上做的策略 只要服務對應端口正常開啓 telnet就是通的 不影響客戶使用
- 處理方法
這個母機的防火牆攔是不能開放的,
關於telnet出現連接超時的原因是這兩臺子機同時放在一臺母機上面會出現這種情況。
如果2臺子機放到不同的母機上面就會顯示拒絕連接。
我們可以通過放置羣組可以把cvm進行分散,詳細參考:https://cloud.tencent.com/document/product/213/15486
存量機器的如有受上述問題的影響,我們可以選個時間進行遷移?
- 只能將服務遷移到不同母機的虛擬機上,可通過放置羣組來實現
知識點
知識點原文:https://typecodes.com/linux/tcpconnectiontimedout.html
Connection refused
使用telnet來檢查tcp鏈路時,如果遇到"Connection refused"的錯誤,那麼表示從本地客戶端到目標IP地址的路由是正常的,但是該目標端口沒有進程在監聽,然後服務端拒絕掉了連接。
一個成功的tcp鏈接將會看到Syn,Syn-Ack,Ack,這也就是我們預期的TCP三次握手。當使用tcpdump或wireshark抓包工具來探測發送過來的請求報文包時,Connection refused將會看到Syn,Rst。
Connection timed out
如果telnet的時候,TCP路由不正常,那麼會得到一個Connection timed out的錯誤。"Couldn’t connect"原因有很多,可能是服務器無法ping通,可能是服務器(防火牆等)丟棄了該請求報文包,也可能是服務器應答太慢,又或者存在間歇性的問題(這種情況很難從日誌文件中排查問題)。