【问题标题】:Docker - How to write a custom load balancer?Docker - 如何编写自定义负载均衡器?
【发布时间】:2019-04-11 04:35:56
【问题描述】:

为了进一步了解 Docker,我想尝试编写一个自定义负载均衡器。我正在考虑使用默认网桥驱动程序创建一个 docker 网络,并将负载均衡器应用程序放在该网络的代理容器中。我将运行一个或多个具有多个副本的服务,并且代理将使用循环将流量路由到每个容器。

我认为代理应该知道存在于同一网络中的所有其他实例以及它们提供的服务以进行负载平衡。以下是我的想法:

  • 对于网络中运行的每个容器,向代理发送请求以告知其可用性状态。我发现这可行,但需要自定义所有容器(定期发送请求)。
  • 让代理查询主机的网络状态:我注意到命令docker network inspect 提供了有关网络配置以及网络内运行的容器的详细信息,所以我想我也可以将此信息发送给代理.

我的问题是:首选哪种方法?第二种方法是否可行?如果是,是否有任何指南或文档我应该查看?我对操作系统和网络有一点了解,因此非常感谢任何帮助将这些东西放在一起的帮助。

【问题讨论】:

    标签: linux docker networking load-balancing


    【解决方案1】:

    您还必须查看条款 Service Discovery / Service Registry 以及如何将它们与负载平衡器一起使用。

    发件人:Service Discovery and Load Balancing

    服务发现

    当我们处理微服务架构时,很可能我们有跨多个服务器甚至多个数据服务器的多个服务。虽然最终用户可能不太关心这些服务的位置,但我们的应用程序高度关注每个服务的连接细节。此问题已通过Service Discovery 解决。

    1.什么是服务发现?

    正如我们所提到的,当服务变得分散时,它们变得难以管理。很难跟踪每项服务的位置以及连接到每项服务所需的详细信息。服务发现正是它听起来的样子,发现我们所有公开的服务以及如何与它们连接的过程。

    使用Service Registry 解决了跟踪多个服务的过程。每个服务在创建时都会向 Service Registry 注册,Service Registry 负责处理和维护连接到每个服务所需的信息。

    ...

    由于微服务可能不时出现故障,因此考虑在 Service Registry 中如何处理这种情况非常重要。 通常,Service Registry 与负载平衡器层配对(在上一节中提到),当发现实例不再存在时,它将无缝地进行故障转移。因此,如果服务实例出现故障,服务注册表将无法返回所需的信息,负载均衡器将开始处理它,同时缓存服务注册表查找。

    【讨论】:

    • 感谢您的回答。我刚刚意识到,在我原来的问题中使用负载均衡器这个词是非常误导
    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 2018-06-04
    • 2021-12-07
    • 2016-03-08
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多