【发布时间】:2019-01-29 08:56:09
【问题描述】:
我的 IT 基础架构部门为我提供了以下设置:3 个虚拟机(vm01、vm02、vm03)前面的 netscaler 负载平衡器 (lb)。每个虚拟机都安装了 IIS。
我已在所有三个虚拟机上安装了 Docker Engine,并在所有 3 个虚拟机上复制了相同的 3 个容器(appcontainer1、appcontainer2、appcontainer3)。每个容器都包含一个 .NET Core Web API 应用程序(api1、api2、api3)。
每个容器都配置为公开其端口 80 以访问 api,并映射到运行它的虚拟机上的端口。换句话说,appcontainer1 使用docker run -p 8091:80 . 运行,appcontainer2 使用docker run -p 8092:80 . 运行,appcontainer3 使用docker run -p 8093:80 . 运行。
我遇到的问题是如何从客户端机器调用我的 Web 应用程序。比如我想直接在vm01上调用ap1,我会调用vm01.domain.com:8091,但是怎么弄调用 lb.domain.com:8091 并在其中一台虚拟机上正确解析?
- 我是否将 netscaler 负载平衡器配置为反向代理并将端口转发到虚拟机?
- 我是否为每个应用程序配置单独的 DNS 条目(ap1.domain.com、ap2.domain.com、api3.domain.com)并在每个虚拟机上配置 IIS(或 nginx 或 Apache)以解析到适当的端口?
- 有没有办法配置 Docker 来做到这一点?
- 我是不是做错了事,并且想了整件事?
- 我应该改用某种容器编排方式吗?
- 有没有一种明智的方法可以做到这一点,而无需打扰基础架构团队重新配置所有内容?
【问题讨论】:
标签: docker load-balancing httpserver