Skip to content

服务监听地址和发布地址

概念阐述

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

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

场景描述

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

配置说明

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

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

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

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

示例代码

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

servicecomb:
  service:
    publishAddress: "{eth0}" # 注册到服务中心的发布地址会是eth0网卡的IP
  rest:
    publishPort: 8888 # 发布地址端口,不配置默认与监听地址端口一致
    address: 0.0.0.0:8080 # 监听主机的全部网卡IP
  highway:
    publishPort: 8888 # 发布地址端口,不配置默认与监听地址端口一致
    address: 0.0.0.0:7070 # 监听主机的全部网卡IP