欢迎光临
我们一直在努力

内网穿透(FRP)部署小结,服务器上xxl-job 调度本机任务

一、内网穿透是什么?

“内网穿透”是一种让外网设备可以访问内网服务的技术。


一句话解释:

内网穿透 = 让“家里/公司里的电脑”被“外面的网络”访问到。


举个例子:

你在家里的电脑上搭了一个网站(比如运行在 http://192.168.1.100:8080),但这个地址是内网IP,外面的人根本访问不到。

这时候你可以用内网穿透工具(如 frp、Ngrok、花生壳、ZeroTier 等),把内网端口“映射”到一个公网(云服务器)地址,比如:

https://abc123.ngrok.io → 你家里的电脑:8080

云服务器地址 —> 你家里的电脑:8080

别人访问这个公网地址,就能看到你家里的网站了


技术原理(简化版):
  • 内网客户端主动连接一个公网服务器(云服务端)。
  • 公网服务器建立一个“隧道”。
  • 外网用户访问公网服务器的某个端口 → 数据通过隧道 → 转发到你内网的服务。
  • 二、怎么部署内网穿透 frp ?

    云服务器和客户端都需要部署

    1、云服务器部署(frps)

    • 准备好docker-compose.yml文件

    // 可以从这里拉取
    https://gitcode.com/weixin_47555380/fpr.git

    在这里插入图片描述

    docker-compose.yml:

    # 命令执行 docker-compose -f docker-compose.yml up -d
    version: '3.9'
    services:
    frps:
    image: fatedier/frps:v0.60.0
    hostname: frps
    container_name: frps
    volumes:
    – "./config/frps.toml:/frps.toml"
    command:
    – "-c"
    – "/frps.toml"
    network_mode: "host"

    frps.toml:

    # https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml
    [common]
    # 监听端口
    # 与本行监听端口配置要一致
    bind_port = 7000
    # 面板端口
    dashboard_port = 7500
    # 登录面板的账号密码(修改成自己的)
    dashboard_user = admin
    dashboard_pwd = admin
    # token =

    • 启动docke docker-compose -f docker-compose.yml up -d

    2、windows本机部署(frpc)

    2.1、如果本机有安装docker,可以直接拉取,docker部署

    // frpc目录
    https://gitcode.com/weixin_47555380/fpr.git

    // 执行 docker-compose -f docker-compose.yml up -d 即可

    2.2、如果本机没有安装docker,则下载压缩包

    https://gitcode.com/weixin_47555380/fpr.git

    在这里插入图片描述

    解压后修改frpc.toml文件
    frpc.toml:

    serverAddr = "XXXXX" // 云服务器地址(公网ip)
    serverPort = 7000 // 与frps配置bind_port 一致

    [[proxies]]
    name = "xxl-job" // 服务名称
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 9999 // 需要访问的本机服务端口
    remotePort = 9999

    // 可以配置多个服务
    [[proxies]]
    name = "myApp"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 8080
    remotePort = 8080

    启动

    // exe文件 目录下 cmd执行
    .\\frpc.exe -c frpc.toml

    注意1:云服务器防火墙需要放行以下端口

    端口与角色对照

    端口方向机器作用必须
    7000 入站 云服务器 frps 与 frpc 握手
    7500 入站 云服务器 Web 面板(可选)
    9999 入站 云服务器 转发到本机执行器
    8080 入站 云服务器 转发到本机执行器

    注意2:本机安装frpc时,可能会被windows杀毒系统拦截,注意放行

    三、使用场景 :

    当我们云服务器部署了xxl-job,本地想要使用xxl-job 定时功能时,因为XXL-JOB 调度中心在“触发时机”到达时,自己作为 HTTP 客户端去 POST 请求我们本机 执行器 接口时,是公网 —> 内网,访问不通,执行器不会执行定时任务
    当我们配置frp 内网穿透后,本机执行器 run方法能被访问,能够执行:

    调度中心(Leader) ──HTTP POST──▶ 公网IP:9999 ──frp隧道──▶ 本机9999/run

    注意任务调度中心 –> 执行器管理界面需要手动录入 云服务器ip(公网ip):端口(9999)
    xxl-job配置文件:

    xxl:
    job:
    # 验证信息 官网Bug https://github.com/xuxueli/xxl-job/issues/1951
    accessToken: default_token
    # 注册地址
    admin:
    addresses: http://云服务器ip:9090/xxl-job-admin
    # 注册执行器
    executor:
    # 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
    address:
    appname: job
    # 执行器IP 配置为本机IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
    ip:
    # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
    port: 9999
    # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
    logpath: ./data/applogs/xxl-job/jobhandler
    # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
    logretentiondays: 30

    赞(0)
    未经允许不得转载:171主机测评 » 内网穿透(FRP)部署小结,服务器上xxl-job 调度本机任务
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址