服务器consul与本地服务健康检查不通问题解决
服务器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
- 1
- 2
- 3
验证安装,正常情况下返回版本信息
consul -v
- 1
启动consul,示例(开发模式启动)
consul agent -dev
- 1
-
本地微服务启动文件配置,并启动服务
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
-
启动consul客户端 观察健康检查结果
健康检查失败。
原因分析
相比使用eureka作为服务注册中心时,服务注册如下:
- 服务提供者启动后,发送自己的信息到注册中心进行注册
- 服务提供者每隔一段时间会想注册中心发送心跳,证明自己还活着,没有挂掉!(默认90s)
- 服务调用者第一次调用服务提供者时,会向注册中心拉取一份服务提供者的地址,并缓存在本地(下次用可以直接从本地取)
- 当服务提供者不可用时,注册中心会将这个服务提供者信息同步到订阅过这个服务的服务消费者。
而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客户端管理页面:
服务健康检查正常。
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
热门文章
分类专栏
- 个人学习笔记 1篇
最新评论
您愿意向朋友推荐“博客详情页”吗?
-
强烈不推荐
-
不推荐
-
一般般
-
推荐
-
强烈推荐
打赏作者
向往鸟
你的鼓励将是我创作的最大动力
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
举报
- 内容涉黄
- 政治相关
- 内容抄袭
- 涉嫌广告
- 内容侵权
- 侮辱谩骂
- 样式问题
- 其他
本文来自博客园,作者:{春光牛牛,yak},转载请注明原文链接:https://www.cnblogs.com/yakniu/p/16953169.html
欢迎各位大佬们评论指正
QQ讨论群:610129902
s_f_t_n: “Operating system not found.”这种现象最多,看了你的帖子,完美解决:就是从高级那里选了一下就行了
别闹,写BUG呢: 确实有道理
钗凤无落枝呀: 你说的好有道理。。。。。。。。。。
m0_51334022: 博主你好 可以分享一下镜像吗
小号来也: 但是一般你镜像系统是有问题的,比如你检测不到。 这个问题你算问到家了,我刚解决了,且是个普遍情况。 截图就不截图了,就是你下载的系统无论下载几十个什么版本,虚拟机都检测不到,也安装不了,且还会提示什么虚拟机找不到操作系统。英文是:虚拟机Operating system not found. 好了直接说方法:打开网页http://heigou.ysepan.com/login.aspx?d=heigou, http://heigou.ysepan.com/ 进入里面-环境架设-虚拟机+注册+XPios系统 这里面你打开,里面有虚拟机使用说明,且详细告诉你为什么检测不到IOS系统。 因为你下载的IOS系统都不是带引导的。所以肯定检测不到撒。 感谢我吧。 99%新手都是这个问题.