容器化+RPC中的网络问题

       事情的起因是这样的,最近项目提测,测试告诉我说主要流程有超时问题,提测被打回了,于是我看了下日志,发现都是远程调动其他服务超时(服务发现方式),确认了被调用的服务是可以正常响应的之后,发现被调用的服务和注册中心都是通过docker部署,而我提测的项目是直接部署在物理机上的,猜测可能是网络问题,于是先让测试把我提测的项目也容器化,之后调用不再超时。问题解决了,然而其中的原理还是一头雾水,docker局域网,服务发现,服务网关,这其中到底是问什么导致网络不通呢。网上查阅了一些资料,梳理一下这个问题。

       1. 服务发现,各服务注册到注册中心,相互调用通过注册中心查询对方的真实ip和端口。这里内部服务间的rpc是不走服务网关的,与服务网关没有关系。

      2. docker启动默认bridge模式,将docker容器连接到虚拟网桥(类似交换机),给docker容器分配ip,通常是172.17.0.0/16网段,此时容器内和宿主机是可以互相ping通的,同时使用端口映射,宿主机将48080端口映射到容器的8080端口,所以访问 宿主机ip:48080就相当于访问容器的8080端口,因此,宿主机及其局域网的其他机器(包括宿主机上的其他容器)都是可以访问到该容器的。

      3. 测试给容器化部署的服务和注册中心都加入到了10.10网段的局域网中(与公司内网的网段不同),被调用的服务以10.10网段的ip注册到了注册中心,我的服务因为上面第二条也是可以注册到注册中心的,但是查找被调用的服务的ip查找到的是10.10网段的ip,因此调用网络不通。而我的服务也加入到10.10网段的局域网中之后就和被调用的服务在同一个局域网中,就可以调用通啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值