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

场景

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

场景还原

  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
    

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

    consul -v
    

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

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

    server:
      port: 8000
    
    spring:
      application:
        name: business
      cloud:
        consul:
          host: 218.0.55.16
          port: 8500
          discovery:
            service-name: ${spring.application.name}
    
  3. 启动consul客户端 观察健康检查结果
    在这里插入图片描述
    健康检查失败。

原因分析

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

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

而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客户端管理页面:
在这里插入图片描述
服务健康检查正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值