背景:云上的服务太贵了,1C1G 最小配置,1M 带宽的 ECS 主机一年近 700¥ 勉强能接受,一套最小配置的 kafka,一套最小配置的 elasticsearch 集群一个月就要近 2000¥,实在不是作为业余爱好能消费的起的。所以想这些服务就用家里的主机搭建,外部能访问即可。
解决方案:
- 购买云主机和公网 IP,部署 nginx 等不怎么消耗资源的接入服务。
- 在云主机上启动 frps 服务。
- 在家里的台式机上部署 kafka、elasticsearch、kibana、微服务等消耗资源的服务。
- 在家里的台式机上启动 frpc 服务,连接云主机上的 frps,对外提供台式机上部署的服务。
- 只要家里主机开启,即可通过第一步中购买的公网 IP(或者 DNS)来访问了。
具体步骤如下:
1、下载 frp
frp 在 github 官网上直接 下载 即可:
1 | wget https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz |
注意:
1、最新的 frp 0.47.0 的 release 列表中没有 windows 下的版本了。
2、但是实际路径依然存在,可以通过如下地址直接下载:https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_windows_amd64.zip
2、在云主机上启动 frps 服务
我的云主机是 centOS 系统,下载对应 OS 的 frp 后解压缩,编辑配置文件,然后启动服务端:
1 | tar xf frp_0.47.0_linux_amd64.tar.gz |
配置文件内容如下:
1 | [common] |
正常启动后,可以在日志文件中看到如下信息:
1 | 2023/02/12 13:52:10 [I] [root.go:206] frps uses config file: frps.ini |
在浏览器中输入 http://你的公网IP或者域名:7500 ,可以看到 frp 的管理面 dashboard:
注意:
1、如果访问不通,请确定你的云主机上开启了正确的安全组策略。
2、可参考如下的教程: 阿里、华为、腾讯 云服务器端口配置教程汇总 。
3、在本地主机上启动 frpc 服务
我本地主机是 win10 系统,按第一步下载对应 OS 的 frp 包后解压缩,编辑配置文件,然后启动客户端:
- 解压缩下载的 zip 包:frp_0.47.0_windows_amd64.zip
- 进入解压缩目录,编辑 frpc.ini 文件,内容如下:
- 启动 frpc 服务:frpc -c frpc.ini
1 | [common] |
可能的问题:
- 本地安装的防火墙、杀毒软件捣乱:我的 win10 系统上的 360 杀毒总是把下载的 frp 包当病毒给自动删除了
- 即使找回了删除的文件,运行时也被 360 阻断,执行 frpc 时总是提示:“拒绝访问。”,所以要么加入到白名单,要么执行时关掉杀毒软件
- 代理的服务如 elastic 或者 kibana 访问时都是 http 协议的,但是如果在配置时 type 配置成 http,启动时会报错,提示如下:failed to parse proxy elastic, err: custom_domains and subdomain should set at least one of them
4、在本地主机上启动服务,验证外网访问
将刚才配置在客户端配置中的服务启动,在 frps 的 dashboard -> proxies -> TCP 菜单上可以看到我们当前已经建立的 ssh、elasticsearch、kibana 这三个 端口、流量、状态等信息:
用手机访问如下地址验证了,确实可以从外部访问我本地搭建的这些服务了
- 访问 elasticsearch:http://我的域名:10001
- 访问 kibana:http://我的域名:10002
感觉一下省了大几千……