Lucent's Blog

当时明月在,曾照彩云归。



代码在写我

Bug在De我

螃蟹在剥我的壳

漫天的我落在雪花上

而你在想我...

6ams5piO5pyI

在Nacos中让服务使用指定网段ip注册

问题描述

在nacos服务注册时,发现注册的服务全是容器虚拟IP,并不是可以通讯的内网IP。

问题原因

开启了user namespace,将系统用户映射到docker容器里,使其不再使用root权限。由于开启了user namespace,所以docker容器不能再共享net namespace即docker网络不能再使用host模式,只能用bridge模式。此时服务容器便有了一个虚拟ip,一般该ip在docker0的网段(默认为172)之下。所以服务注册时便使用这个ip进行注册。

解决方案

第一种(不推荐)

为服务设置IP,在服务的配置文件bootstrap.yml中,配置:

spring:
   cloud:
     nacos:
       discovery:
         ip: 10.1.1.1

image.png
这样服务注册时就会使用设置好的ip注册,这种方式不灵活。

第二种(推荐)

在nacos中,项目主配置文件中加入:

spring:
  cloud:
    inetutils:
      ignored-interfaces: eth.*。## 只取eth*地址,eth0,eth1...
      preferred-networks: 10.24.66 ## 限制网段

image.png
这样设置是限制就限制了在服务注册时只取指定网卡的ip地址,同时还限制了网段,保证服务使用正确的ip注册。
当然这种方式也可以写到某个模块的bootstrap.yml中

上一篇

Docker 用户映射

将系统用户映射到docker容器里,使其不再使用root权限…

阅读
下一篇

Dayz第三方登录器的使用方法(Dayz sa launcher)

Dayz Sa Launcher 登录器使用方法…

阅读