一、背景
家办公,公司项目是微服务的,一个人负责一个小服务,而且每个人都不在同一个局域网内,公司有一个云服务器(部署nacos),大家都把自己负责的服务都注册到nacos上(作为服务注册和服务发现已经配置中心)如何实现nacos微服务云开发,远程联调部部署
解决方法:我们把注册网关的本地服务做一个内网穿透
二、frp内网穿透
Releases · fatedier/frp · GitHub
公司云服务是linux,我本地是Windows
不管是linux还是Windows都需要注意系统的位数
linux查看系统内核版本:getconf LONG_BIT
可以先下载到自己电脑,然后上传到linux系统上解压,或者使用linux命令直接在linux上下载:
可以通过右击复制连接加上命令 wget 下载
wget https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gz
解压:tar -xvf frp_0.43.0_linux_amd64.tar.gz
重命名为frp,然后cd 进frp目录
你会看见有frps 和frpc 两种文件,frps就是服务端文件,frpc 就是客户端的文件,因为我们这里是部署服务端,所以为了不混淆你可以把frpc相关的文件删了。下面是我删了之后剩余的服务端相关的文件。
可以进入frps.ini 文件看一下,新版本里面配置很简单,就两行代码。
7000 就是frp服务端的端口,客户端来连接时就是连接这个端口,可以任意改,这里我们就默认不改了。
启动frp服务端: nohup ./frps -c ./frps.ini &
nohup 是日志文件,frps是服务端的启动文件,frps.ini 是服务端的配置文件,& 代表后台运行
如上图说明启动成功,这里我已经配置几个客户端的监听端口
至此,linux服务端安装frp已经启动完成。
下载好之后直接解压,解压后的目录如下
其实文件和linux的一样,但是这里我们只是安装客户端,也就是frpc相关的文件,我们可以把服务端相关的文件删了,最后是这样的。
我们可以用记事本打开frpc.ini文件看一下
一开始是这样的,下面解读一下各个配置的含义
[common]
server_addr: 这个就是我们公网ip的地址,默认是127.0.0.1,我们需要换成我们公网ip一致,
server_port:这个是我们公网监听的端口,也就是我们linux上面启动frps时监听的端口,这里默认是7000,如果我们启动frp服务端时没有修改这里也就不用改了。
[ssh]
type:连接类型有tcp,http,https,udp等。
local_ip:本地ip
local_port:监听的本地端口
remote_port: 服务器的端口,ssh连接时的端口,例如:这里是6000,我们访问公网ip+6000,就会访问到我们本地的local_port端口上。
默认配置:
- [common]
- server_addr = 127.0.0.1
- server_port = 7000
-
- [ssh]
- type = tcp
- local_ip = 127.0.0.1
- local_port = 22
- remote_port = 6000
启动frp 客户端
这里启动不能直接双击frpc.exe启动,而是通过cmd控制台进到这个目录下面
这样我们Windows安装frp客户端和启动就好了。
这样我们访问公网ip+6000端口是不是就可以访问我们本地的22端口了呢?
答案是还不能,因为你服务器还没有放开相关的端口,我们只要进到服务器的控制台,放开相关的端口即可。
7000端口是一定要放开的,也就是你的frps启动监听的端口,如果你改了就放开对应的端口即可,同时还要放开你客户端监听的转发端口,也就是上面我们说的remote_port 配置的端口,默认是6000。
我这里放开我们本地服务所有的端口。
如果你服务器内有开防火墙的记得也放开相应的端口。
到这里,整个frp内网穿透就可以了。接下来我们就要配置我们nacos微服务的各个服务ip和地址了。
三、nacos通过frp配置不同局域网互通相互调用
7800 是我的网关端口,我在服务器上面也放开了7800端口,
这样当前端的同事访问服务器的7800端口时,服务器就会转发到我们本地的7800端口,这样就可以进我的网关服务了,那么项目里面的网关服务注册配置怎么配置呢?
port配置的是frp的remote_port端口。
这样我们启动项目注册到nacos上面之后,服务的ip和端口就变成我们这是的公网ip和端口了,当其他服务或者前端同事访问这个公网ip和端口时就会访问到我们本地的服务了