首页 > 解决方案 > 源客户端无法连接到 Cloud Run 上的无服务器 Icecast 服务器

问题描述

是否可以制作无服务器的 Icecast 服务器?

我正在尝试在 Google 的无服务器 Cloud Run 平台上使用 Icecast 制作网络收音机。我已将此 docker 映像放入 Container Registry,然后使用默认 Icecast 端口 8000 创建了 Cloud Run 服务。访问 Cloud Run 提供的 URL 时,这一切似乎都有效。使用它我可以进入默认的 Icecast 和管理页面。

问题是尝试使用源客户端连接到服务器(尝试使用 mixxx 和对接)。我认为问题出在端口上,因为在 mixxx 上将端口设置为 8000 会给出:Socket is busy错误,而 butt 只是没有连接。在 mixxx 上将端口设置为 443 会给出:对接时出现套接字错误:连接:服务器以 411 回答!

尝试使用 Compute Engine 做同样的事情,但只安装 Icecast 而不是 docker 映像,一切都按预期工作。据我了解,Cloud Run 在设置时为具有给定端口的容器 ( https://example.app ) 提供了一个 URL(对于 Icecast 8000),但源客户端尝试使用其提供的端口( http://example.app )连接到该 URL 。应用程序:SOURCE_CLIENT_PORT)。所以不确定HTTPS是否有问题,或者只是需要以不同的方式配置端口。

标签: dockergoogle-cloud-platformserverlessgoogle-cloud-runicecast

解决方案


使用 Cloud Run,您只能在外部公开 1 个端口。默认情况下它是 8080 端口,但您可以在部署修订版时覆盖它。

此端口封装在 Google Cloud 基础架构的前端层(名为 Google Front End)的后面,并通过端口 443 (HTTPS) 上的 DNS (*.run.app) 公开。

因此,您只能通过端口 443 包装在暴露的端口上访问您的服务。任何其他端口都会失败。

使用 Compute Engine,您没有此限制,这就是您没有问题的原因。只需使用防火墙规则打开正确的端口即可享受。


推荐阅读