Linux 中 Dubbo 提供者注册到了内网 IP 上怎么处理

今天在Linux部署Dubbo的服务提供者时,本地启动项目发现linux上的服务注册的是内网ip,然后消费者请求时就出现请求不到的情况(显示内网ip)

怎么让Liunx上的服务注册到公网ip?

方式1:修改hosts文件(不推荐)

  • hostname查看机器名
  • 修改hosts文件 vi /etc/hosts 如果前面机器名已被映射我们就将其注释掉
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# 192.168.0.4 aa7SBWjOVd aa7SBWjOVd
# 填写你的公网ip
*.*.*.* aa7SBWjOVd aa7SBWjOVd

特别注意: 后面的机器名需要保持和之前默认的一致(反正亲测不一致还是会注册到内网ip上)

  • 修改主机名执行命令
# 主机名改成你自己的即可
hostnamectl set-hostname aa7SBWjOVd
  • systemctl restart network 重启网卡

再次查看机器名 hostname 看是否改成 aa7SBWjOVd

  • 重启你的服务

如果还是不行就 reboot 后再重新启动dubbo服务

方式2:启动jar包时加参数(==推荐==)

启动命令增加-DDUBBO_IP_TO_REGISTRY=*.*.*.*(公网IP)

  • DUBBO_IP_TO_REGISTRY — 注册到注册中心的IP地址
  • DUBBO_PORT_TO_REGISTRY — 注册到注册中心的端口
  • DUBBO_IP_TO_BIND — 监听IP地址
  • DUBBO_PORT_TO_BIND — 监听端口