栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

场景

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

场景还原

    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
    

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

    consul -v
    

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

    consul agent -dev
    

    本地微服务启动文件配置,并启动服务

    server:
      port: 8000
    
    spring:
      application:
        name: business
      cloud:
        consul:
          host: 218.0.55.16
          port: 8500
          discovery:
            service-name: ${spring.application.name}
    

    启动consul客户端 观察健康检查结果

    健康检查失败。

原因分析

相比使用eureka作为服务注册中心时,服务注册如下:

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

而consul得注册过程如下:

区别在于:eureka是服务提供者定时往注册中心发送心跳,保证存活,而consul是注册中心访问服务提供者健康检查url。

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

解决

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

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

frp 官网地址如下:

https://gofrp.org/

下载地址:

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

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

解压:

tar -zxvf frp_0.38.0_linux_386.tar.gz

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

[common]
bind_port = 7000

启动frp服务端:

./frps -c ./frps.ini

下载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

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

frpc.exe -c ./frpc.ini

再次查看服务注册情况,进入consul客户端管理页面:

服务健康检查正常。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号