我正在尝试创建一个用于测试目的的本地环境,该环境由以下部分组成:
- Vagrant CoreOS 集群(3 个节点)
- 在一个节点上启动并加载了 Nginx 映像的 Docker 容器
我已经成功安装了 Vagrant 和 CoreOS。Etcd 已启动并运行,并且我已经多次使用 Fleet。我还通过 Fleet 服务启动了一个 Nginx 容器。我真正不明白的是:
- 如何在特定容器上路由流量?我希望将本地浏览器指向本地地址(即 example.dev),集群会使用正确的 Nginx 容器(放置在集群的某个位置)进行响应。
- 代理是合适的解决方案吗?如果不是,是否有为此目的而创建的东西?
提前致谢,如需了解更多我可能忘记的详细信息,请随时询问!
答案1
简单的答案就是编辑你的本地 hosts 文件,例如/etc/hosts
在 Linux 或 OS X 上,或者C:\Windows\System32\drivers\etc\hosts
在典型的 Windows 机器上。
如果您想要一些更适合生产级别的东西而不是用于开发的快速修复,那么您需要一个像 nginx 或 haproxy 这样的反向代理,并根据后端 nginx 容器的可用性自动配置它。
- 每个后端 nginx 容器都需要一个“sidekick”服务来向 etcd 宣布其可用性
- 然后运行confd监听 etcd 的变化并更新反向代理的配置
这使得您可以将反向代理上的单个端口路由到只需在私有网络上监听的任意数量的后端 nginx 服务。
我写过此处有此方法的更详细说明。