跳转到内容
搜索文档

更新 cloudflared

最后更新 查看 MarkdownAgent 设置

更新将导致 cloudflared 重新启动,这将影响当前正在提供服务的流量。您可以通过使用 Cloudflare 的负载均衡器(Load Balancer)产品或通过使用多个 cloudflared 实例来执行无停机升级。

更新 cloudflared 服务

请参阅以下命令以更新远程托管隧道本地托管隧道cloudflared。对于本地管理的隧道,必须将其设置为 作为服务运行,以下命令才能成功执行。

运行以下命令:

cloudflared update

在运行 cloudflared update 更新 cloudflared 后,您必须重启该服务才能使其生效。运行:

net start cloudflared
  1. 更新 cloudflared 包:
brew upgrade cloudflared
  1. 重启服务:
sudo launchctl stop com.cloudflare.cloudflared
sudo launchctl unload /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
sudo launchctl load /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
sudo launchctl start com.cloudflare.cloudflared

如果通过 apt 安装:

  1. 更新 cloudflared 包:
sudo apt-get update && sudo apt-get install --only-upgrade cloudflared
  1. 重启服务:
sudo systemctl restart cloudflared.service

如果通过 dpkg -i 安装:

如果您使用 dpkg 包管理器安装了 cloudflared,请使用以下命令。

您可以通过运行 ls -la /usr/local/etc/cloudflared/ 并检查输出中是否存在 .installedFromPackageManager,来确认 cloudflared 是否是通过包管理器安装的。

  1. 更新 cloudflared 包:
curl --location --output cloudflared.deb "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-$(dpkg --print-architecture).deb" && sudo dpkg -i cloudflared.deb
  1. 重启服务:
sudo systemctl restart cloudflared.service
  1. 更新 cloudflared 包:
sudo yum update cloudflared
  1. 重启服务:
sudo systemctl restart cloudflared.service

如果您是使用仪表板创建的远程托管隧道:

  1. 在 Cloudflare 仪表板中,转到 Networking(网络) > Tunnels(隧道)

    Go to Tunnels ↗
  2. 选择您的隧道以打开其详情页面。

  3. Overview(概览) 选项卡上,复制 Docker 安装命令。复制的命令将包含您的令牌。

  4. 将此命令粘贴到终端窗口中。

此命令会根据最新的 cloudflared 镜像创建一个新容器。您现在可以删除旧容器了。

如果您是使用 API 创建的远程或本地托管隧道,请运行以下命令:

docker run --pull always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TOKEN>

如果您是使用 CLI 创建的本地托管隧道:

  1. 使用卷(volume)将您的本地 .cloudflared 目录挂载到 Docker 容器中。

  2. 运行以下命令来更新 cloudflared

    docker run --pull always -v <PATH-TO-YOUR-LOCAL-CLOUDFLARED>:/home/nonroot/.cloudflared cloudflare/cloudflared:latest tunnel --no-autoupdate run <TUNNEL-ID>

如果您是从 GitHub 提供的二进制文件或源码安装的 cloudflared,请运行以下命令:

cloudflared update

如果您是使用包管理器安装的 cloudflared,您必须使用相同的包管理器来更新它。

您可以通过运行 ls -la /usr/local/etc/cloudflared/ 并检查输出中是否存在 .installedFromPackageManager,来确认 cloudflared 是否是通过包管理器安装的。

使用 Cloudflare 负载均衡器进行更新

您可以通过在部署 Cloudflare Tunnel 时配合使用 Cloudflare 的负载均衡器(Load Balancer)产品,来实现无停机更新 cloudflared

  1. 安装一个新的 cloudflared 实例并创建一个新 Tunnel。
  2. 配置该实例,使其将流量指向与您当前活动的 cloudflared 实例相同的本地可用服务。
  3. 将新 cloudflared 实例的地址添加到您的负载均衡器池中,作为优先级 2。
  4. 交换优先级,使新实例现在成为优先级 1,并进行监控以确认流量正常提供。
  5. 确认后,您可以从负载均衡器池中移除旧版本。

使用多个 cloudflared 实例进行更新

如果您没有使用 Cloudflare 的负载均衡器,您可以使用多个 cloudflared 实例进行更新,而无需担心停机风险。

  1. 安装一个新的 cloudflared 实例并创建一个新 Tunnel。
  2. 配置该实例,使其将流量指向与您当前活动的 cloudflared 实例相同的本地可用服务。
  3. 在 Cloudflare DNS 仪表板中,用新实例的地址替换当前 cloudflared 实例的地址。保存该记录。
  4. 移除现已不活动的 cloudflared 实例。

在 Windows 中运行多个实例

Windows 系统要求服务具有唯一的名称和显示名称。您可以通过创建具有唯一名称的 cloudflared 服务来运行多个 cloudflared 实例。

  1. 安装并配置 cloudflared
  2. 接下来,创建一个具有唯一名称的服务,并指向 cloudflared 可执行文件和配置文件。
sc.exe create <unique-name> binPath='<path-to-exe>' --config '<path-to-config>' displayname="Unique Name"
  1. 继续创建其他具有唯一名称的服务。

  2. 您现在可以启动每个唯一服务。

sc.exe start <unique-name>

这篇文档对您有帮助吗?