私のソフトウェアを実行するためのいくつかのノードがあります。起動後、2 つのノード間の TCP 接続が異常であることがわかりました。
Aがリーダーであり、ポート1234でリッスンしていると仮定すると、BはAに接続する必要があります。
ノードBでssを使用すると、次のことがわかります。
$ss |grep A
tcp ESTAB 0 0 B:50144 A:1234
ただし、ノードAで実行しても何も表示されませんss |grep B
。
予想どおり、B はこの接続からデータを読み取ることができず、その結果、私のソフトウェアは実行されません。
言及する必要がある2つの詳細があります。
- ソフトウェア・プロセスのシャットダウン中に tcpdump を実行すると、両方のノードでパケット対話を表示できます。
- eth0 にブリッジされ、eth0 と同じ IP を持つ b0 というブリッジがあります。
私の質問は次のとおりですなぜこれが起こり、どのように解決できますか?
アップデート1:
tcpdumpの実行
- ノード B でプロセスを終了し、B は A に FIN を送信し、A は RESET で応答します。
- ノードAでプロセスを終了すると、AはBに何も送信せず、その逆も同様です。 A が 1234 を受信しなくなった場合でも、B では接続を確認できます。