服务监听地址和发布地址
概念阐述
在JavaChassis中,服务的监听地址和发布地址是两个独立的概念,可以独立配置:
- 监听地址:指微服务实例启动时监听的地址。该配置项决定了可以通过哪些IP访问此服务。
- 发布地址:指微服务实例注册到服务中心的地址。其他的微服务实例会通过服务中心获取此实例的信息,根据发布地址访问此服务实例,所以该配置项决定了其他服务实际上会使用哪个IP访问此服务。
场景描述
用户通过配置服务的监听地址和发布地址来确定服务实例监听的IP和其他服务实例访问本实例时请求的IP。
配置说明
服务监听地址的配置项是servicecomb.rest.address
和servicecomb.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