服务监听地址和发布地址

概念阐述

在JavaChassis中,服务的监听地址和发布地址是两个独立的概念,可以独立配置:

  • 监听地址:指微服务实例启动时监听的地址。该配置项决定了可以通过哪些IP访问此服务。
  • 发布地址:指微服务实例注册到服务中心的地址。其他的微服务实例会通过服务中心获取此实例的信息,根据发布地址访问此服务实例,所以该配置项决定了其他服务实际上会使用哪个IP访问此服务。

场景描述

用户通过配置服务的监听地址和发布地址来确定服务实例监听的IP和其他服务实例访问本实例时请求的IP。

配置说明

服务监听地址的配置项是servicecomb.rest.addressservicecomb.highway.address,分别对应rest传输方式和highway传输方式的监听地址。两者的配置规则相同,以下仅以servicecomb.rest.address作为说明。
服务发布地址的配置项是servicecomb.service.publishAddress,该地址可以不配置。不配置此项时JavaChassis会根据特定的规则选取发布地址。

表1 服务发布地址生效规则

规则编号监听地址配置发布地址配置实际生效的发布地址
1127.0.0.1-127.0.0.1
20.0.0.0-选取一张网卡的IP地址作为发布地址。
要求该地址不能是通配符地址、回环地址或广播地址
3具体IP-与监听地址一致
4具体IP与发布地址配置项一致
5“{网卡名}”指定网卡名的IP,注意需要加上引号和括号

说明: - 服务实例实际监听的地址始终与监听地址配置项保持一致。 - 使用网卡名配置发布地址时,要求使用双引号包裹住网卡名占位符,否则会造成解析配置报错。 - 网卡名必须是主机存在的网卡。

示例代码

microservice.yaml文件的配置示例如下:

  1. servicecomb:
  2. service:
  3. publishAddress: "{eth0}" # 注册到服务中心的发布地址会是eth0网卡的IP
  4. rest:
  5. address: 0.0.0.0:8080 # 监听主机的全部网卡IP
  6. highway:
  7. address: 0.0.0.0:7070 # 监听主机的全部网卡IP