现在大家都在用spring-cloud,用的比较多的Eureka,Nacos如果业务都部署在一台服务器上,容器间的访问自然没有问题,但如果业务比较多,一台服务器承受不了,需要部署在别的机器上,那该怎么实现他们之间的互访呢。
业务场景:
服务器A 部署了nacos,gateway,业务a
ip地址和端口分别是:
192.168.0.220(宿主机地址)172.30.2.10:8848,172.30.2.20:8000,172.30.2.30:8999(容器组内地址)
服务器B 部署了业务b
ip地址分别是192.168.0.221(宿主机地址),172.30.2.40:8998(容器组内地址)
怎么来实现业务a访问业务b呢:
其实很简单:
业务a的配置
配置nas注册中心宿主机的ip192.168.0.220,及业务a部署的宿主机ip,因部署在同一台机上所以也是192.168.0.220主要配置如下
cloud:
nacos:
discovery:
server-addr: 192.168.0.220:8848
ip: 192.168.0.220
业务b的配置
cloud:
nacos:
discovery:
server-addr: 192.168.0.220:8848
ip: 192.168.0.221
其中:
server-addr:192.168.0.220:8848 nacos注册中心部署的所在的宿主机ip地址。
ip:192.168.0.220 业务a部署的宿主机ip地址
ip:192.168.0.221 业务b部署的宿主机ip地址
这样微服务a,b就可以注册到注册中心,并通过网关也可以互访了。
业务a访问业务b接口:curl http://172.30.2.20:8000/业务b/test,由网关转发实际访问的是http://192.168.0.221:8998/test
当然注册中心nacos,和部署的服务的主机IP也可以配置成公网IP,这样就可以通过公网ip,如果配置了域名,也可以通过域名访问