鉴于 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
...
我知道这可以通过使用 Ingress 的 Kubernetes来完成- 每个 docker 容器都将被 HTTP 负载均衡器视为后端服务,这最终将用于生产;对于我的 test/qa/demo 设置,我正在寻找更简单的东西,一个大型 CoreOS 实例,运行多个 docker 容器并具有完全相同的 HTTP 负载均衡器(稍后将在 prod 中使用)指向 docker 容器CoreOS 实例。
CoreOS 有这样的功能吗?
如果没有,除了启动 NGINX 容器以将所有流量从 HTTP 负载均衡器路由到不同容器之外,我还有什么其他选择?
在 GCP L7 LB 中,您已经:
LB 前端 >> LB 后端 >> 实例组 >> 实例 >> 端口
因此,所有艰苦的工作都发生在负载均衡器上。
得到你想要的东西的步骤是:
确保每个容器都在主机(CoreOS)上公开了自己的端口,并且您想要公开的服务可以通过这些端口访问。
创建一个防火墙规则,允许来自 130.211.0.0/22 和 35.191.0.0/16 的流量到达您的 CoreOS 主机。- 这是为了允许从负载均衡器到您的容器的流量。
确保 CoreOS 主机属于实例组。
继续并配置您的 LB 后端(编辑 LB 配置)。为每个运行在 CoreOS 实例上的容器添加一个新的后端服务,并指定其端口。(在这里您将每个容器与不同的后端相关联)
继续配置主机和路径规则以根据需要将流量发送到后端。
配置您的前端(以及 IP 和可选的 SSL 证书)
给它 5 分钟的时间来建立和测试你的东西。你完成了!
一旦你了解它是如何工作的,它就很容易管理。
请参阅https://cloud.google.com/compute/docs/load-balancing/http