我正在做一个研究项目,其中我必须创建一个包含多个工作节点和一个主节点的体系结构。
我想编写负载平衡算法并在这些节点上进行测试(它们上有运行的应用程序)。我已经开始研究Docker,我想用它来创建架构。
我无法决定要使用哪种网络类型,因为docker网络结构非常庞大。他们在Linux网络驱动程序上创建了许多抽象。
我应该使用网桥还是覆盖网络?
我希望所有工作节点将其CPU和内存使用情况发送到主节点。基本上工人可以和主人说话。然后,我将在主容器节点上编写负载平衡算法。
需要Docker网络专家的指导。提前致谢。
答案 0 :(得分:0)
如果您具有单主机设置,则通常应使用“桥”。 (在这种情况下,您应该声明 some 网络以利用容器间DNS。)
如果您有多主机设置,则可以使用许多设置;有效选项包括Docker Swarm,Hashicorp的Nomad,Kubernetes,围绕Consul之类的服务发现中介建立的手动设置,或者每个直接服务都知道其他节点的主机名并忽略Docker层的手动设置。 / p>
如果您正在使用Docker Swarm,则需要使用“覆盖”。但是,我上面描述的每个选项都使用了不同的网络设置(例如,Kubernetes使用了一个名为CNI的组件,并且在其中有十二种不同的实现选择),这个问题对于其中许多而言并没有直接的意义。>
在描述项目时,听起来像是要在特定节点上显式放置应用程序,并手动管理它们之间的路由。为此,我可能只使用“桥接”网络:使用-p
(或Docker Compose ports:
)选项启动Docker容器以在主机IP地址上发布端口,并仅使用那些主机在容器之间进行通信IP地址。这将为您的研究项目提供有用的手动控制水平。