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
问题 我们的服务一直用 Consul 作为注册中心,在 AWS 和 阿里云上使用的时候,没出现过问题。最近把一些服务迁到腾讯云的时候,遇到一个问题:注册的服务地址都是 127.0.1.1。 127.0.1.1 这个地址我们平时遇到的比较少,…...
数字水印 | 离散小波变换 DWT 的 Python 代码实现
🍍原文: 【图像处理】图像离散小波变换及 Python 代码实现 🍍写在前面: 本文在原文的基础上补全了代码。 1 环境准备 ① 安装 p y w t \mathsf{pywt} pywt 包: pip install PyWavelets说明: p y w t \…...
[框架] Unity 公共执行器
本篇我们通过使用单例模式来创建一个公共执行器,使得原本应该在Update()、FixedUpdate()中的指令都可以统一放在一个对象中执行,且可进行添加和移除操作。 1. 创建单例模式改造器:SingletonMono 我们先创建一个单例模式改造器,使…...
二进制转为HEX数组小工具
在使用RA8889时,JPG的解码只能从FLASH的DMA通道获取,那么如果要从远端、或者SD卡等处读取JPG图片出来显示怎么办? RA8889支持JPG图片硬解码,但数据流是从FLASH进行DMA读取的,然后再进行解码。因此这种情况下ÿ…...
数据结构-二叉树-红黑树
一、红黑树的概念 红黑树是一种二叉搜索树,但在每个节点上增加一个存储位表示节点的颜色,可以是Red或者BLACK,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,…...
C++11 新特性 decltype 说明符
一、typeof与typeid 1.1、typeof 在C11标准之前,GCC已经提供了一个类似功能的运算符 typeof对类型进行推导,但是这毕竟是编译器的实现,不是标准。 int a 0; typeof(a) b 5;1.2、typeid C标准提供了 typeid 运算符,获取的类型…...
java线程局部变量使用方式
线程局部变量是Java中用于存储线程本地信息的变量。这种变量仅在线程的生命周期内存在,并且每个线程都有自己的一份拷贝。换句话说,线程局部变量是线程私有的,其他线程无法访问。 使用场景主要包括: 1. 存储线程状态信息ÿ…...
【隧道篇 / WAN优化】(7.4) ❀ 01. 启动WAN优化 ❀ FortiGate 防火墙
【简介】几乎所有的人都知道,防火墙自带的硬盘是用来保存日志,以方便在出现问题时能找到原因。但是很少的人知道,防火墙自带的硬盘其实还有另一个功能,那就是用于WAN优化。 防火墙自带的硬盘 在FortiGate防火墙A、B、C、D系列&…...
2024数维杯数学建模B题生物质和煤共热解问题的研究原创论文分享
大家好,从昨天肝到现在,终于完成了2024数维杯数学建模挑战赛B题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 2024数维杯数学建模B题煤共热解每一问高质量完整代码讲解!_哔哩哔哩_bilibili 2024数维杯…...
中国电子学会(CEIT)2022年12月真题C语言软件编程等级考试三级(含详细解析答案)
中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试一级 2022年12月 编程题五道 总分:100分一、鸡兔同笼(20分) 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至…...
今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月12日,星期日
每天一分钟,知晓天下事! 2024年5月12日 星期日 农历四月初五 1、 全国多地已推“一次挂号管三天”,部分医院专家门诊适用。 2、 在梅大高速塌方事故中拦车、救援,黄曼秋等5人拟确认为见义勇为。 3、 深圳新能源车指标申请条件调…...
微服务思想以及实现
文章目录 前言一、什么时候需要拆分微服务1. 创业型项目2. 大型项目 二、怎么拆1. 拆分目标2. 拆分方式 三、微服务之间远程调用1. 实现方式2. 手动发送Http请求(RestTemplate)3. 服务注册中心3.1 原理3.2 Nacos注册中心3.3 服务注册3.4 服务发现(Discov…...
C语法:格式符号%f和%lf引发的错误
今天编程时有如下代码: #include"stdio.h"int main(void) {double profit;double bonus;printf("请输入本月利润\n");scanf("%f",&profit);//错误:此行profit是double类型,格式符为%f,当输入8时࿰…...
Java基础入门day48
day48 JDBC调用关系 tomcat 简介 tomcat是Apache下的一个核心项目,免费开源,支持servlet和jsp。 tomcat技术先进,性能稳定,目前比较流行的web应用服务器 安装 官网: Apache Tomcat - Welcome! 下载 tomcat8.5 解压&a…...
C++笔记(体系结构与内核分析)
1.OOP面向对象编程 vs. GP泛型编程 OOP将data和method放在一起,目的是通过封装、继承、多态提高软件的可维护性和可扩展性GP将data和method分开,可以将任何容器与任何算法结合使用,只要容器满足塞饭所需的迭代器类型 2.算法与仿函数的区别 …...
c++ 唤醒指定线程
在C中,直接唤醒一个特定的线程并不像在Java的Thread类中有interrupt()方法或者某些操作系统特定的API(如POSIX的pthread_cond_signal或Windows的SetEvent)那样简单。C标准库没有提供一个直接的方法来"唤醒"一个正在等待的线程。然而…...
java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
今天遇到一个问题 系统线上问题,经常出现这样的问题,刚重启系统时不报错了,可是运行一段时间又会出现。sql已经写了limit 1,mybatis的debug日志也返回total为1,可是却报错返回了1805条数据 乍一看,感觉太不…...
AI图书推荐:利用生成式AI实现业务流程超自动化
《利用生成式AI实现业务流程超自动化》(Hyperautomation with Generative AI)这本书探索了广泛的用例和示例,展示了超自动化在不同行业、领域和特定部门的多样化应用, 让您熟悉UiPath、Automation Anywhere和IBM等流行工具和平台&…...
什么事防抖和节流,有什么区别,如何实现
防抖和节流,本质上是优化高频率执行代码的一种手段,比如:resize、scroll、keypress、mousemove这些事件在触发的时候,会不断调用绑定在事件上的回调函数,这样极大浪费资源,降低前端性能。 为了优化体验&am…...
PanguSync大数据量初始化脚本
由于数据库增量同步软件PanguSync初始化最大超时时间为600s,如果初始数据量很大,第一次部署时可能会超时,可以先停止任务,使用以下Sql语句进行初始化,以下语句可以分步执行,初始化完成后,后续无需再执行耗时…...
树莓派Web IDE:零配置云端编程环境与Python硬件模拟实践
1. 项目概述:一个“开箱即用”的编程环境革命最近,树莓派基金会悄无声息地扔下了一颗“重磅炸弹”——他们正式推出了一个网页端的代码编辑器。这个消息在创客圈和教育圈里,可能比发布一款新硬件还要让人兴奋。为什么?因为它直接戳…...
Oryx 2部署与运维手册:生产环境配置完全解析
Oryx 2部署与运维手册:生产环境配置完全解析 【免费下载链接】oryx Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning 项目地址: https://gitcode.com/gh_mirrors/or/oryx 想要在生产环境中稳定运行大…...
你的电机为什么抖?排查STM32F4 PWM驱动TB6612的5个常见硬件坑(附示波器实测)
你的电机为什么抖?排查STM32F4 PWM驱动TB6612的5个常见硬件坑(附示波器实测) 电机控制系统中,PWM信号的质量直接影响着驱动芯片和电机的性能表现。许多工程师在使用STM32F4系列MCU配合TB6612驱动模块时,常常遇到电机抖…...
深入解析Arm Cortex-A53 Cache架构:从原理到多核一致性与性能优化实践
1. 项目概述:为什么我们需要深入理解A53的Cache?在嵌入式系统和移动计算领域,Arm Cortex-A53处理器是一个绕不开的名字。作为Armv8-A架构下的“小核”常青树,它以其出色的能效比,广泛存在于从智能手表到智能电视&#…...
2026届必备的五大降AI率神器推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能技术不断深入发展着,学术领域对于原创性以及学术诚信的要求愈发严格起来…...
TS9580,TS3440,TS3400,G3000,G1810,G2810,G3810,G4810,TS9020,TS9120报错5B00,P07,E08,1700,5b04废墨垫清零,亲测有用。
下载:点这里下载 备用下载:https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下: G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...
高级磁盘空间管理:WinDirStat深度配置与自动化清理指南
高级磁盘空间管理:WinDirStat深度配置与自动化清理指南 【免费下载链接】windirstat WinDirStat is a disk usage statistics viewer and cleanup tool for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/wi/windirstat 在当今数据爆炸的时代…...
RK3568开发板TB-96AI-3568CE深度评测:从核心接口到AI应用实战
1. 从芯片到板卡:TB-96AI-3568CE的设计哲学当一块芯片从图纸走向现实,成为一块可以握在手中的开发板时,这中间的路程远不止是简单的引脚引出和电源接通。我接触过不少基于RK3568的方案,但拿到贝启科技这块TB-96AI-3568CE时&#x…...
2026亲测10大论文降AI工具,免费好用的都在这了
说实话,咱们26届熬过初稿真的挺不容易,万一终审抽检没过就太冤了,谁都不想在最后关头被卡住。身边有不少同学试图手动去改,结果原格式全乱了,踩过坑才 知道找对工具到底有多重要。 提升内容原创度很关键,终…...
别再只存字节了!用C语言共用体(Union)在EEPROM里优雅存储浮点数和结构体(STM32实战)
嵌入式数据存储进阶:用共用体实现EEPROM中的浮点数与结构体存储 在嵌入式开发中,数据存储是每个工程师都无法回避的挑战。当我们需要将设备校准参数、运行日志或用户配置等非字节型数据保存到EEPROM时,传统的逐字节读写方法往往显得笨拙且容易…...
