无法访问Docker Swarm模式下的已发布端口

时间:2019-12-30 09:52:10

标签: hadoop port swarm webui

我正在尝试在dockerized环境中设置Hadoop集群,并且在以Swarm模式运行时出现一些问题。即,我无法访问资源管理器(http://host_ip:8088)的Web UI。其他Web界面,例如hdfs(http://host_ip:50070)或Spark历史记录服务器(http://host_ip:18080)都可以正常工作。

通过群模式,我的意思是通过docker init...docker join...加入两个docker deamons主机,并使用docker network create --attachable --driver=overay my-net创建一个覆盖网络。然后使用以下命令运行主节点:

docker run --name $HADOOP_MASTER -h $HADOOP_MASTER --net=my-net \
                -p  8088:8088  -p 50070:50070 -p 50090:50090 \
                -p  8080:8080 -p 18080:18080 -p 4040:4040 \
                -itd "$IMG_NAME"

其后是启动名称节点和资源管理器。

使用以下命令运行从属节点

docker run --name $HADOOP_SLAVE -h $HADOOP_SLAVE --net=my-net -itd "$IMG_NAME"

随后在每个从属节点中启动一个数据节点和一个节点管理器。

所有节点都正确连接,我可以通过运行以下命令来确保这一点:

yarn node -list --> nodes are displayed
hdfs dfsadmin -report --> again nodes are displayed
jps --> resource manager, node managers, name node and data nodes are running

通过运行docker port hadoop-master,将显示以下输出:

4040/tcp -> 0.0.0.0:4040
50090/tcp -> 0.0.0.0:50090
8088/tcp -> 0.0.0.0:8088
50070/tcp -> 0.0.0.0:50070
18080/tcp -> 0.0.0.0:18080
8080/tcp -> 0.0.0.0:8080

当我在Docker容器中键入curl -v hadoop-master:8088时,得到一个肯定的响应,即该服务正在运行,但是在docker deamon主机curl -v localhost:8088中尝试运行该服务时,控制台将输出:

* Closing connection 0
curl: (56) Recv failure: Connection reset by peer

通过使用netstat -naop,我可以确认端口:8088正在监听,因此我不知道这里可能有什么问题。此外,我想指出的是,在其中一个docker deamons主机中使用网桥网络和相同的命令设置时,我能够访问资源管理器(http://host_ip:8088)的Web ui。仅在使用覆盖两个主机的覆盖网络时出现此问题,并且容器中的:8088端口形式似乎未正确映射到docker deamon主机的端口。

0 个答案:

没有答案