ice java web_混合架构下的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服务。

这是最优解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值