更新将导致 cloudflared 重新启动,这将影响当前正在提供服务的流量。您可以通过使用 Cloudflare 的负载均衡器(Load Balancer)产品或通过使用多个 cloudflared 实例来执行无停机升级。
请参阅以下命令以更新远程托管隧道或本地托管隧道的 cloudflared。对于本地管理的隧道,必须将其设置为 作为服务运行,以下命令才能成功执行。
运行以下命令:
cloudflared update在运行 cloudflared update 更新 cloudflared 后,您必须重启该服务才能使其生效。运行:
net start cloudflared- 更新
cloudflared包:
brew upgrade cloudflared- 重启服务:
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 安装:
- 更新
cloudflared包:
sudo apt-get update && sudo apt-get install --only-upgrade cloudflared- 重启服务:
sudo systemctl restart cloudflared.service如果通过 dpkg -i 安装:
如果您使用 dpkg 包管理器安装了 cloudflared,请使用以下命令。
您可以通过运行 ls -la /usr/local/etc/cloudflared/ 并检查输出中是否存在 .installedFromPackageManager,来确认 cloudflared 是否是通过包管理器安装的。
- 更新
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- 重启服务:
sudo systemctl restart cloudflared.service- 更新
cloudflared包:
sudo yum update cloudflared- 重启服务:
sudo systemctl restart cloudflared.service如果您是使用仪表板创建的远程托管隧道:
-
在 Cloudflare 仪表板中,转到 Networking(网络) > Tunnels(隧道)。
Go to Tunnels ↗ -
选择您的隧道以打开其详情页面。
-
在 Overview(概览) 选项卡上,复制 Docker 安装命令。复制的命令将包含您的令牌。
-
将此命令粘贴到终端窗口中。
此命令会根据最新的 cloudflared 镜像创建一个新容器。您现在可以删除旧容器了。
如果您是使用 API 创建的远程或本地托管隧道,请运行以下命令:
docker run --pull always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TOKEN>如果您是使用 CLI 创建的本地托管隧道:
-
使用卷(volume)将您的本地
.cloudflared目录挂载到 Docker 容器中。 -
运行以下命令来更新
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 Tunnel 时配合使用 Cloudflare 的负载均衡器(Load Balancer)产品,来实现无停机更新 cloudflared。
- 安装一个新的
cloudflared实例并创建一个新 Tunnel。 - 配置该实例,使其将流量指向与您当前活动的
cloudflared实例相同的本地可用服务。 - 将新
cloudflared实例的地址添加到您的负载均衡器池中,作为优先级 2。 - 交换优先级,使新实例现在成为优先级 1,并进行监控以确认流量正常提供。
- 确认后,您可以从负载均衡器池中移除旧版本。
如果您没有使用 Cloudflare 的负载均衡器,您可以使用多个 cloudflared 实例进行更新,而无需担心停机风险。
- 安装一个新的
cloudflared实例并创建一个新 Tunnel。 - 配置该实例,使其将流量指向与您当前活动的
cloudflared实例相同的本地可用服务。 - 在 Cloudflare DNS 仪表板中,用新实例的地址替换当前
cloudflared实例的地址。保存该记录。 - 移除现已不活动的
cloudflared实例。
Windows 系统要求服务具有唯一的名称和显示名称。您可以通过创建具有唯一名称的 cloudflared 服务来运行多个 cloudflared 实例。
- 安装并配置
cloudflared。 - 接下来,创建一个具有唯一名称的服务,并指向
cloudflared可执行文件和配置文件。
sc.exe create <unique-name> binPath='<path-to-exe>' --config '<path-to-config>' displayname="Unique Name"-
继续创建其他具有唯一名称的服务。
-
您现在可以启动每个唯一服务。
sc.exe start <unique-name>