go集成consul的问题

来源:1-4 go集成consul

右京先生

2023-04-26 15:41:05

是用Mac,拓展坞和虚拟机(WIFI)两张网卡,也就对用两个IP地址,分别是192.168.3.20、192.168.46.1

consul安装在虚拟机centOS的Docker,虚拟机ip为192.168.46.130。我也可以在consul容器中ping通3.20

但是(如图)

红色框中的IP必须是46.1服务才能被正确注册,换成3.20则不会被健康、成功注册,这是为什么呢?

写回答

1回答

bobby

2023-04-26

据你的描述,你的 Mac 电脑上有两张网卡,分别是连接到 192.168.3.0 网络的网卡和连接到 192.168.46.0 网络的网卡。你在虚拟机中安装了 Consul,虚拟机的 IP 地址是 192.168.46.130,你也可以在 Consul 容器中通过 IP 地址 192.168.3.20 访问 Mac 电脑上的服务。但是当你在 Consul 注册服务时,如果将 IP 地址设置为 192.168.3.20,服务就无法被正确注册。

这个问题的原因可能是因为 Consul 默认使用容器 IP 地址来注册服务,而不是通过访问 IP 地址。因此,如果你在服务注册中使用了 192.168.3.20,那么 Consul 会使用容器 IP 地址来代替这个 IP 地址,这样就会导致服务注册失败。

为了解决这个问题,你可以将 Consul 容器的网络设置为宿主机网络(host network),这样 Consul 就可以直接使用宿主机的 IP 地址来注册服务,而不是使用容器 IP 地址。具体操作可以参考 Consul 官方文档中的说明:使用宿主机网络运行 Consul


0

Go开发工程师

未来3-5年企业高性能项目不可替代的语言,从基础到项目实战再到重构,真正从入门到精通

508 学习 · 577 问题

查看课程