由于 CoreOS 是为运行 Docker 容器而设计的,我想知道是否有办法将 HTTP 负载均衡器上的后端服务直接映射到在单个 CoreOS 实例上运行的 Docker 映像。
这是我想要的结构:
www.example.com/marketing -> docker:marketing-app
www.example.com/accounts -> docker:accounts-app
www.example.com/ -> docker:www-app
...
我知道这可以用Kubernetes 使用 Ingress- HTTP 负载均衡器将把每个 Docker 容器视为后端服务,这最终是我在生产中使用的;对于我的测试/qa/演示设置,我正在寻找更简单的东西,一个大型的 CoreOS 实例,运行多个 Docker 容器,并让完全相同的 HTTP 负载均衡器(稍后将在生产中使用)指向 CoreOS 实例上的 Docker 容器。
CoreOS 有这样的功能吗?
如果没有,除了启动 NGINX 容器将所有流量从 HTTP 负载均衡器路由到不同的容器之外,我还有什么其他选择?
答案1
在 GCP L7 LB 中,您可以:
LB 前端 >> LB 后端 >> 实例组 >> 实例 >> 端口
因此,所有艰苦的工作都发生在负载均衡器上。
获得你想要的东西的步骤如下:
确保每个容器在主机(CoreOS)上都有自己的公开端口,并且可以通过这些端口访问您想要公开的服务。
创建一个防火墙规则,允许来自 130.211.0.0/22 和 35.191.0.0/16 的流量到达您的 CoreOS 主机。- 这是为了允许从负载均衡器到您的容器的流量。
确保 CoreOS 主机属于实例组。
继续配置您的 LB 后端(编辑 LB 配置)。为在 CoreOS 实例上运行的每个容器添加一个新的后端服务,并指定其端口。(在这里您可以将每个容器与不同的后端关联起来)
继续配置主机和路径规则,以根据需要将流量发送到后端。
配置您的前端(以及 IP 和可选的 SSL 证书)
用 5 分钟时间构建并测试您的内容。您已完成!
一旦你理解了它的工作原理,管理起来就很容易了。