文章目录
- 1. 前言
- 2. 服务端
- 3. 客户端
1. 前言
个人电脑或者服务器,存在多网卡环境时,Nacos
可能会存在IP
不正确问题。
2. 服务端
Nacos
服务在启动的时候需要选择运行时使用的IP
或者网卡,在启动时,可以看到打印了IP
:
多网卡环境下,Nacos
获取IP
参考Spring Cloud
设计,通过nacos.inetutils
参数,可以指定使用的网卡和IP
地址,在nacos\conf\application.properties
配置文件中,可以看到支持的配置参数:
#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:
# nacos.inetutils.ip-address=
nacos.inetutils.prefer-hostname-over-ip
用于配置cluster.conf
里是否应该填 hostname
,nacos.inetutils.ip-address
直接配置 Nacos
的IP
,示例:
nacos.inetutils.ip-address=10.11.105.155
重新启动查看控制台:
此外还支持其他配置,比如 nacos.inetutils.use-only-site-local-interfaces
参数可以让 Nacos
使用局域网 IP
,这个在 Nacos
部署的机器有多网卡时很有用:
nacos.inetutils.use-only-site-local-interfaces=true
nacos.inetutils.ignored-interfaces
支持配置网卡数组,可以让 Nacos
忽略多个网卡:
nacos.inetutils.ignored-interfaces[0]=eth0
nacos.inetutils.ignored-interfaces[1]=eth1
nacos.inetutils.preferred-networks
参数可以让 Nacos
优先选择匹配的 IP
,支持正则匹配和前缀匹配:
nacos.inetutils.preferred-networks[0]=30.5.124.
nacos.inetutils.preferred-networks[0]=30.5.124.(25[0-5]|2[0-4]\\d|((1d{2})|([1-9]?\\d))),30.5.124.(25[0-5]|2[0-4]\\d|((1d{2})|([1-9]?\\d)))
3. 客户端
在使用 API
或者 SDK
直接注册时,可以指定服务实例的 IP
,服务之间可以 IP
进行调用,在使用 Spring Cloud
时, Nacos
会自动注册实例 IP
,例如:
自动注册的实例 IP
,在多网卡环境下,获取的可能不是你想到的地址,这时可以使用 spring.cloud.nacos.discovery.ip
指定注册的 IP
地址:
spring:
cloud:
nacos:
# 服务发现
discovery:
# 命名空间
namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec
# 服务端地址,默认:127.0.0.1:8848
server-addr: 192.168.7.63:8848
# 注册的 IP 地址
ip: 192.168.6.93
重新注册,查看IP
: