【问题标题】:External F5 load balancer integration with Docker swarm service discovery外部 F5 负载均衡器与 Docker 群服务发现集成
【发布时间】:2017-12-15 19:20:03
【问题描述】:
我打算使用 docker swarm 模式来托管我的应用程序。目前正在寻找一种将 F5 负载均衡器与 docker swarm 模式服务发现集成的方法。是否有实现此目的的用例?我知道我们可以发布带有主机的端口并将流量从 F5 路由到主机 ip,但这将限制我只运行每个主机的任务。
我可以使用 Consul 作为服务发现并拥有服务的主机名,这样我就可以设置绑定 dns 来将 dns 请求转发给 consul?
非常感谢您的建议/想法。
提前致谢。
【问题讨论】:
标签:
docker
load-balancing
service-discovery
f5
docker-swarm-mode
【解决方案1】:
在不了解您的预期应用程序的情况下,如果我使用的是服务发现 VIP 而不是 DNSRR,我会将每个广告 VIP 视为 BIG-IP VIP 后面的节点。这样,您可以使用 BIG-IP 的 iControlREST 在 Swarm 的服务发现中添加/修改/删除节点。
卷曲示例:curl -sk -u 'admin:admin' -H "Content-Type: application/json" -X POST https://x.x.x.x/mgmt/tm/ltm/pool -d '{"name":"test-pool","members":[{"name":"Server-Bob:443","address":"10.0.0.1"}]}'
使用上述想法,您将拥有一个通过 BIG-IP 发布的应用程序,并且您将通过 Ansible/Python/Whatever 添加/删除 docker 服务发现的 VIP。
您可以使用 Consul 进行服务发现,但我认为您会创建冗余功能,因为 Swarm 可以完成类似的发现任务。添加绑定 DNS 要求不会使管理变得容易得多。从技术上讲,有很多方法可以做到这一点,但如果你已经建立了 BIG-IP 基础设施,那么这种方法对我来说最有意义。如果我在您的申请要求中遗漏了某些内容,请告诉我,我可以修改答案。