Consul 注册的服务地址变成了 127.0.1.1

2024-05-12 12:52

本文主要是介绍Consul 注册的服务地址变成了 127.0.1.1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

我们的服务一直用 Consul 作为注册中心,在 AWS 和 阿里云上使用的时候,没出现过问题。最近把一些服务迁到腾讯云的时候,遇到一个问题:注册的服务地址都是 127.0.1.1。

127.0.1.1 这个地址我们平时遇到的比较少,这个地址和 127.0.0.1 一样,也是个本地环回地址。

先看看问题。

用 API 看一下服务注册详情:

curl -XGET 127.0.0.1:8500/v1/agent/services

这会列出所有已注册服务的详细信息,每个服务的信息如下所示。

{"AP-USDT-0": {"ID": "AP-0","Service": "AP-0","Tags": [],"Meta": {"TIMESTAMP": "1715337108416"},"Port": 9093,"Address": "127.0.1.1","TaggedAddresses": {"lan_ipv4": {"Address": "127.0.1.1","Port": 9093},"wan_ipv4": {"Address": "127.0.1.1","Port": 9093}},"Weights": {"Passing": 1,"Warning": 1},"EnableTagOverride": false}
}

比较重要的字段包括服务 ID,服务地址 Address,服务端口 Port。这里可以看到远程服务器注册的服务地址是 「127.0.1.1」。这样的话,访问这个服务的「其他服务」获取到的地址是变成了本地地址,无法访问服务。

服务取到「127.0.1.1」这个地址,先查看一下 /etc/hosts 文件,打开以后,发现有这样两条记录:

127.0.1.1 localhost.localdomain VM-0-12-ubuntu
127.0.0.1 localhost

这里就找到问题了,hosts 第一条记录就是「127.0.1.1」,如果把这条记录注释或者删除是不是就好了?

在这之前,先要把之前注册的无效服务删除。

Consul 删除某个服务

Consul 删除服务有两种方式,一种是用 API,一种是用命令行。

-- 使用 API 删除服务
curl -XPUT "http://10.0.0.12:8500/v1/agent/service/deregister/service-id"-- 使用命令行删除服务
consul services deregister -id=$id

上面的两种方式,每次都只能删除一条记录,如果要删除所有服务,可以使用下面的命令。

consul catalog services | awk '{print $1}' | while read service; doconsul services deregister -id=$service
done

问题解决

把无效服务删除,修改完 /etc/hosts 文件之后,重启服务,再次查看服务。

curl -XGET 127.0.0.1:8500/v1/agent/services

这次服务注册已经没有问题了,服务注册了正确的地址。

{"AP-USDT-0": {"ID": "AP-0","Service": "AP-0","Tags": [],"Meta": {"TIMESTAMP": "1715337108416"},"Port": 9093,"Address": "10.0.0.13","TaggedAddresses": {"lan_ipv4": {"Address": "10.0.0.13","Port": 9093},"wan_ipv4": {"Address": "10.0.0.13","Port": 9093}},"Weights": {"Passing": 1,"Warning": 1},"EnableTagOverride": false}
}

关于 127.0.1.1

127.0.0.1 通常被用作回环接口的 IP 地址,而 127.0.1.1 是一种替代方案,它在某些 Linux 发行版中用来标识计算机的主机名(hostname),常被用于本地测试和开发环境中,表示本机自己。

在大多数情况下,我们不需要 127.0.1.1。如果您想在本地测试一个应用程序,您可以使用 127.0.0.1 或者 localhost 来访问它。如果您需要在 Linux 中修改主机名(hostname),可以编辑 /etc/hostname 文件并重启网络服务。

总结

不用的云服务商提供的 Linux 服务器,都对系统做了一些定制,即使是同样的系统,例如 Ubuntu,也会有些许的不同。在进行服务迁移的时候,一些小的问题,也需要花费大力气解决。这种细节必须亲身经历才能体会到,也是开发人员的一种无奈。

这篇关于Consul 注册的服务地址变成了 127.0.1.1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982680

相关文章

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主