服务器consul与本地服务健康检查不通问题解决

(125条消息) 服务器consul与本地服务健康检查不通问题解决_向往鸟的博客-CSDN博客_consul健康检查失败

服务器consul与本地服务健康检查不通问题解决

场景

将consul部署在云服务器上,本地服务注册至consul,并调试。服务健康检查不通过。
 
  • 1

场景还原

  1. consul组件安装

    官网:https://www.consul.io/downloads
    选择系统版本下载安装,示例:CentOs7环境

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
    sudo yum -y install consul
     
    • 1
    • 2
    • 3

    验证安装,正常情况下返回版本信息

    consul -v
     
    • 1

    启动consul,示例(开发模式启动)

    consul agent -dev
     
    • 1
  2. 本地微服务启动文件配置,并启动服务

    server:
      port: 8000
    
    spring:
      application:
        name: business
      cloud:
        consul:
          host: 218.0.55.16
          port: 8500
          discovery:
            service-name: ${spring.application.name}
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  3. 启动consul客户端 观察健康检查结果
    在这里插入图片描述
    健康检查失败。

原因分析

相比使用eureka作为服务注册中心时,服务注册如下:
在这里插入图片描述

  1. 服务提供者启动后,发送自己的信息到注册中心进行注册
  2. 服务提供者每隔一段时间会想注册中心发送心跳,证明自己还活着,没有挂掉!(默认90s)
  3. 服务调用者第一次调用服务提供者时,会向注册中心拉取一份服务提供者的地址,并缓存在本地(下次用可以直接从本地取)
  4. 当服务提供者不可用时,注册中心会将这个服务提供者信息同步到订阅过这个服务的服务消费者。

而consul得注册过程如下:
在这里插入图片描述
区别在于eureka是服务提供者定时往注册中心发送心跳,保证存活,而consul是注册中心访问服务提供者健康检查url。

问题在于:服务器无法主动与内网IP建立连接(连路由都做不到),也就是说除非你本地主机拥有公网IP, 否则无法直接ping通。

解决

如何使服务器能够访问本地得服务接口,就是问题的关键。这就需要进行内网穿透

网上有很多工具,这里使用frp,具体介绍不再赘述,官网很详尽,中文的

frp 官网地址如下:

https://gofrp.org/
 
  • 1

下载地址:

https://github.com/fatedier/frp/releases
 
  • 1

frp包含服务端和客户端。在下载的文件中都有包含,此处因涉及两个系统环境(本地window系统,服务器centos7),所以分别下载window和linux版本。

linux版本下载完成后,上传至服务器,并解压。也可以直接在linux下使用:
wget 【包下载路径】下载,示例:
linux下:

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_386.tar.gz
 
  • 1

解压:

tar -zxvf frp_0.38.0_linux_386.tar.gz
 
  • 1

修改启动服务端配置文件frps.ini, 默认内容如下:

[common]
bind_port = 7000
 
  • 1
  • 2

启动frp服务端:

./frps -c ./frps.ini
 
  • 1

下载window版本,并解压至本地。修改客户端启动配置文件frpc.ini, 如何配置?完整配置说明在frpc_full.ini中都有说明。这里更改配置如下:

[common]
server_addr = 218.0.55.16 #ftp服务端主机IP
server_port = 7000 #ftp服务端主机端口

[range:tcp_port]
type = tcp 
local_ip = 127.0.0.1 #客户端主机IP
local_port = 7000-9000    #批量端口映射, 本地
remote_port = 7000-9000  #映射远程端口
use_encryption = false
use_compression = false
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

window下启动frp程序,需要进入window的cmd下才能执行。cmd下,进入解压包路径。执行

frpc.exe -c ./frpc.ini
 
  • 1

再次查看服务注册情况,进入consul客户端管理页面:
在这里插入图片描述
服务健康检查正常。

 
文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览7944 人正在系统学习中
  • 2
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论
 
SpringCloud集成Consul服务注册后显示健康检查失败问题解决
09-29 1849
consul版本1.10.2算是比较新的版本,安装完成启动后,把自己的服务注册到consul上显示健康检查失败health check failing 问题如图 翻阅网上的解决方案,版本都比较老,有说是版本问题,尝试切换到旧版的consul发现依旧无法解决问题,也有说没有添加actuator监控依赖导致无法健康检查,看了一下自己的pom文件也没问题。有方案是自己写一个controller调用health接口,写的不太清楚,也没弄明白。 尝试了几次解决,发现在consul的web页面实例详情页ou.
Spring Cloud 爬坑记录 - Consul注册,检查状态失败
07-18 8179
按网上的例子添加一个SpringBoot工程到Consul,使用Consul版本1.2.1 工程pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/...
SpringCloud集成Consul服务注册后显示健康检查失败问题解决
11-14
consul版本1.10.2算是比较新的版本,安装完成启动后,把自己的服务注册到consul上显示健康检查失败health check failing 问题如图 翻阅网上的解决方案,版本都比较老,有说是版本问题,尝试切换到旧版的consul发现依旧无法解决问题,也有说没有添...
Consul入门05 - 健康检测_zl1zl2zl3的博客_consul...
11-21
>/etc/consul.d/web.json 第一个定义增加了一个主机级别的检测,名为"ping"。该检测每30秒间隔运行一次,调用命令ping -c1 google.com。在一个基于脚本的健康检测中,该检测使用启动Consul进程的用户来启动该检测。如果检测命令返回一个...
consul-pager:Consul 检查失败监控代理
07-09
Consul-pager 是一个 consul check 监控代理。 它目前仅支持通过 Slack 渠道进行通知。 用法 你必须运行一个 consul 代理监听 localhost:8500。 要启动监控代理类型: consul-pager < global> start -config config.yaml GLOBAL OPTIONS: --address ' 127.0.0.1:8500 ' consul address --dc consul datacenter --token consul token 配置文件应如下所示: channels : MySlackChannel : channeli : subdomain : bbbbb token : bbbbbbb c
Consul】关于健康检查的一点思考
09-25 8246
DNS查询系统利用健康检查以防止不良节点路由信息。当服务查询时,如果服务健康检查失败或者系统检查失败服务信息将会从查询结果中删除。为了实现简单的负载平衡,返回的节点集合每次都是随机的。这种机制使得利用DNS接口基于应用级重试实现面向auto-healing服务体现架构变得更加容易。...
actuator对Consul的影响 consul健康检查通不过的原因之一
actuator对Consul的影响 consul健康检查通不过的原因之一起因错误堆栈consul 业务分析 起因 总体来说就是不听老师讲的。。。自己去搭建环境的时候把maven包进行了简化,把spring-boot-starter-actuator这个包删掉了 错误堆栈 com.netflix.client.ClientException: Load balancer does not have available server for client: XXX at com.netflix.loadba
SpirngCloud Consul 注册到主机健康检查失败
SpirngCloud Consul 注册到主机健康检查失败Spring.properties加上此配置 在Spring.properties加上此配置 #(SpringCloud consul服务(注册到主机名的问题)) #1、定开启IP地址注册 spring.cloud.consul.discovery.prefer-ip-address=true #2、当前服务的请求IP spring.cloud.consul.discovery.ip-address=${spring.cloud.client
spring-cloud-consul:设置servlet context-path 导致的 Consul 健康检查失败
配置文件 server: port: 9021 servlet: context-path: /config 去掉 server.servlet.context-path=/config 后 server: port: 9021 # servlet: # context-path: /config 原因及解决办法 原因:consul对微服务健康检查路径是固定的。默认为 /actuator/health,没有自动加上 servlet.context-path中设置的 /c
consul服务注册后健康检查一直失败如何解决
热门推荐
2019独角兽企业重金招聘Python工程师标准>>> ...
consul健康检查接口404
在测试项目时发现consul服务端显示测试客户端的健康检查的接口调用失败,返回404: 在客户端也显示: [org.springframework.web.servlet.PageNotFound:1176] - No mapping found for HTTP request with URI [/consul-test/health] in DispatcherServlet with name 'dispatcherServlet' 配置是正确的: spring.profil...
前端新手请求接口失败问题
前端新手请求接口失败问题问题描述: 原因分析: 后端的服务器没有开 解决方案: 开启对应接口的服务器
centos7启动consul,本地客户端无法连接问题
问题描述 提示:本地启动consul客户端,无法连接centos7的服务端 原因分析: 1.服务端未启动 2.服务端防火墙导致无法访问 1.检查服务端是否启动 consul members 服务端启动正常。 2.检查防火墙是否关闭systemctl status firewalld 确认已关闭,没头脑了。。。。 解决方案: 1.重启服务consul 2.打开防火墙,重新关闭。 1.重启服务consul,重试启动consul客户端,仍无...
consul 服务健康检查
08-22 4746
简介 服务注册 - 服务进程在注册中心注册自己的位置。它通常注册自己的主机和端口号,有时还有身份验证信息,协议,版本号,以及运行环境的详细资料。 服务发现 - 客户端应用进程向注册中心发起查询,来获取服务的位置。服务发现的一个重要作用就是提供一个可用的服务列表。 服务定义的格式类似如下: / # cat /consul/config/prometheus.json { "service":{ "id": "promtheus", "name": "prometheus",
consul服务注册中心-本地启动
consul agent dev,线上写到那里,使用的docker容器
consul服务注册及与spingboot的整合
1.本地安装consul 安装包可在官网下载 2.本地启动consul 进入本地的consul目录下,新建cfg目录作为config目录,data目录作为数据目录,然后输入 //这里根据自己的实际路径来写,我这里写的是我的路径 nohup /Users/cherunyu/IdeaProjects/consul/consul agent -config-dir=/Users/cherunyu/IdeaProjects/consul/cfg -data-dir=/Users/cherunyu/I
consul使用watches机制,healthcheck不通过时发送预警
参考文档:https://www.consul.io/docs/dynamic-app-config/watches#checks watches是一个被动触发的动作,预定义有多个类型: Key – 监视指定K/V键值对 Keyprefix – Watch a prefix in the KV store Services – 监视服务列表 nodes – 监控节点列表 service – 监视服务实例 checks- 监视健康检查的值 event – 监视用户事件 我这里有个..
Consul提示Service Check心跳健康监测有问题解决方案
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
Consul注册中心注册的服务总是红叉 (All service checks failing)
最新发布
06-12 900
Consul注册中心注册的服务总是红叉 (All service checks failing)
服务专题:服务注册与发现之三Consul健康检测
简介 在微服务架构中,微服务会存在多个实例,部署在多台主机中。因为网络、主机状态等诸多因素,单台主机上的服务出现问题的几率大大增加。这就要求我们能够监控每台主机、每个微服务实例的健康状态。Consul作为注册中心,提供了强大、灵活的健康监测。 快速上手 定义check的位置为/etc/consul.d/,格式跟定义服务一样,也是JSON。下边我们定义两个check,分别为pingBaidu.jso...
docker里安装consul,以及遇到的坑
docker pull consul:1.6.4 版本随意 启动命令 docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect 1 -ui -bind=0.0.0.0 -client=0 .0.0.0 这里有个坑,注意这个数字1,代表的是单机的意思。2是集群 一开始写成2,导致web界面.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
 
186
积分
8
粉丝
29
获赞
11
评论
57
收藏
关注

分类专栏

最新评论

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交
 

分类专栏

 
 
 
评论
还能输入1000个字符
 
 

打赏作者

向往鸟

你的鼓励将是我创作的最大动力

 
¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
点击重新获取
扫码支付
 
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值
 
 

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
 
 
 
 
评论 笔记
posted @ 2022-12-05 18:45  春光牛牛  阅读(754)  评论(0编辑  收藏  举报