先說目前的結論:
docker-swarm部署的應用,在阿里雲內網上無法訪問。
之前都是在自己的雲主機上,用docker-swarm部署,映射端口后,通過公網ip可以訪問服務。
昨天要轉到公司提供的服務器上,由於同一區域還有其他服務要交互,准備通過內網地址提供服務,內網網速快,也沒有流量限制。
但是部署以后,發現無論如何內網ip訪問端口都不通。
但是通過外網ip訪問這些端口,都能正常使用。
首先排除服務問題,因為外網功能正常。
其次內網也是連通的,ping得通,而且不通過docker啟動的服務端口,也能通。
通過netstat查看,docker啟動的是tcp6監聽。所以懷疑與內網+ipv6有關,折騰了比較久,也請阿里技術人員幫忙看過,結合網上搜索的一些文章,得到幾點信息:
- docker啟動的都是監聽tcp6協議,即使主機禁用ipv6
- 通過tcpdump可以抓到內網發來到docker-swarm端口的tcp起始包,但是docker服務沒有響應
- 通過iptables監聽不到內網ip發來到docker-swarm端口的tcp包
- docker不通過swarm部署的應用,mapping出來的端口,通過內網ip也能訪問
鑒於此,最終改用docker-compose進行部署,起始已經不算是集群了,僅僅是可以和docker swarm復用配置文件而已。
最后的問題可能是在阿里雲或者docker swarm上,但是無法確認了。