您的位置:首页 > 运维架构 > Docker

混合架构下的docker-tomcat容器协同部署JAVA WEB服务,内嵌ICE中间件服务的技术实现

2018-03-21 00:00 901 查看
混合架构下的docker-tomcat容器协同部署JAVA WEB服务,内嵌ICE中间件服务技术实现

1、背景说明

在跟第三方的交互过程中,由于框架搭建限制,第三方建议使用ICE进行简单的通信

由于服务端采用的JAVA WEB服务,所以内部嵌套了一套 ICE 服务的协同启用

2、问题

**ICE服务的启动只能使用到自己所在机器的IP,

然而docker容器的IP和物理机的IP是不一样的,外部可以直接访问到物理机的IP,但是无法直接访问docker容器的IP。

造成了ICE的服务无法被外部请求到。**

3、问题的解决思路

这个问题的解决花费了2天时间,尝试过了各种端口映射和IP绑定方案,都无果。

最终的解决思路有两个,

一个是通过外部物理机进行ICE内部服务的转发,因为物理机是可以请求到docker容器的IP对应的端口的。而后通过其他形式进行请求结果的二次转发

上述思路起源于ICE集群的注册中心的思路。
但是ICEGrid之类的配置和部署过于生涩复杂,暂时没时间研究这个事情。

所以采用了类似的解决方案,内部物理机转发其上容器的ICE的处理结果。

另外一种解决方案,源自0.0.0.0**的奇妙之处。

在容器内注册服务的时候,绑定这个地址,可以在外部通过外部的IP地址进行访问到**。

那么现在要解决的就是端口映射的问题了。

4、docker-tomcat容器的端口映射

由于tomcat容器内部的命令非常的局限,只能通过容器创建时候的完成端口映射,而无法后续新增外部的端口映射。

所以我采用了下述的命令

**docker run --privileged=true -v /test.war:/usr/local/tomcat/webapps/test.war -p 10010:10000 -p 8081:8080 --name tomcat7 tomcat:7 **

内部的tomcat占用8080端口,在外部通过8081进行访问,内部的ICE服务通过0.0.0.0和10000 进行启动,在外部通过物理机的IP+10010端口访问到了ICE服务。

这是最优解决方案

如需要转载
请注明文章出处
https://my.oschina.net/u/3032872/blog/1648473
谢谢~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐