巧用代理实现本地调用测试容器微服务

微服务构架中,一个项目产品会涉及很多个服务,而且维护人员也很多。在开发过程中,本地调试能够极大地提升开发效率,但在微服务构架中,本地调试经常会遇到很大的问题。

当一个服务依赖多个服务时,如果需要在本地环境对这个服务进行调试,此时,测试环境如果部署在其他机器上或者云服务上,本地与测试服务网络必然会不通,在本地把所有服务都运行起来也不现实。

所以,如何才能解决本地与测试服务之间的网络问题呢?

一、概述

假设测试环境的服务是在测试云服务器上基于 Docker 容器部署的,注册中心和所有的服务都处于容器环境内。

巧用代理实现本地调用测试容器微服务

测试服务器 IP 为:192.168.1.132

测试服务器 Docker 内部微服务 IP 为:192.100.1.100

如果在测试服务器请求 Docker 服务时,相当于宿主机访问容器网络,没有任何问题。

$ curl http://192.100.1.100:8080/actuator/health
{"status":"UP"}

在本地环境使用以上命令则会报网络异常。

二、本地调试

本地环境可以使用代理来解决这个问题,最简单的方式就是使用 ssh 命令创建 socks 代理,然后本地通过代理来访问测试环境的容器服务。

前提是本地环境必须与测试环境网络是通的,并且能通过 ssh 访问测试服务器。

1. 启动代理服务器

本地电脑上使用 ssh 命令来启动代理服务器:

$ ssh -qfnN -D 127.0.0.1:18888 username@192.168.1.132

命令中 127.0.0.1:18888 指定本地电脑的 18888 端口为代理服务器。

username@192.168.1.132 和使用 ssh 连接测试服务器命令一样。

执行成功后本地代理服务器就起来了。

2. 使用代理客户端

本地电脑上使用代理客户端来连接测试服务器的容器服务。

可以使用 Proxifier 全局代理软件来配置代理访问,指定 192.100.*.* 的请求才走代理,配置如下:

巧用代理实现本地调用测试容器微服务

配置成功后,可以在本地访问测试环境的容器服务了。

$ curl http://192.100.1.100:8080/actuator/health
{"status":"UP"}

也可以在本地服务启动时,使用 JVM 参数来指定代理服务器,例如:

$ Java -jar -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=18888 App.jar

通过 JVM 配置只能在 Java 应用中进行访问,本地电脑其他软件不能访问。


原文始发于微信公众号(CodeArtist):巧用代理实现本地调用测试容器微服务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/126703.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!