集群
在第3部分中,您使用了在第2部分中编写的应用程序,并通过将其转换为服务来定义它应该如何在生产环境中运行,并在此过程中将其扩展5倍。
在第4部分中,您将该应用程序部署到集群中,并在多台机器上运行它。多容器、多机器的应用程序可以通过将多台机器连接到一个称为群的“Dockerized”集群中来实现。
理解集群
集群是一组运行Docker并加入到集群中的机器。在此之后,您将继续运行您习惯的Docker命令,但是现在它们由群集管理器在集群上执行。集群中的机器可以是物理的,也可以是虚拟的。加入一个群之后,它们被称为节点。
群管理器可以使用几种策略来运行容器,比如“清空节点”——用容器填充利用率最低的机器。或“全局”,它确保每台机器只获得指定容器的一个实例。您指示集群管理器在撰写文件中使用这些策略,就像您已经使用的策略一样。
群管理器是群中唯一能够执行您的命令的机器,或者授权其他机器作为工人加入群。工人只是在那里提供生产能力,没有权力告诉其他机器它能做什么和不能做什么。
到目前为止,您一直在本地机器上以单主机模式使用Docker。但是Docker也可以切换到群集模式,这就是启用群集的原因。启用群集模式将立即使当前机器成为群集管理器。从那时起,Docker将运行您在正在管理的集群上执行的命令,而不仅仅是在当前机器上。
建立你的集群
集群由多个节点组成,可以是物理节点,也可以是虚拟节点。其基本概念非常简单:运行 docker swarm init
以启用群集模式,并使您当前的机器成为一个群集管理器,然后在其他机器上运行docker swarm join
,让它们作为worker加入到群集中。选择下面的选项卡,查看在各种上下文中这是如何进行的。我们使用vm快速创建一个双机集群,并将其变为一个集群。
创建一个集群
MAC, LINUX, WINDOWS 7 AND 8
您需要一个可以创建虚拟机(vm)的管理程序,因此请为您的机器的操作系统安装Oracle VirtualBox。
注意:如果您使用的是安装了Hyper-V的Windows系统,比如Windows 10,则不需要安装VirtualBox,而应该使用Hyper-V。通过单击上面的Hyper-V选项卡查看Hyper-V系统的说明。如果您正在使用Docker工具箱,那么您应该已经安装了VirtualBox作为它的一部分,所以可以开始了。
现在,使用docker-machine,使用VirtualBox驱动程序创建几个vm:
docker-machine create --driver virtualbox myvm1
docker-machine create --driver virtualbox myvm2
WINDOWS 10
首先,快速创建虚拟机(vm)共享的虚拟交换机,以便它们能够彼此连接。
- 启动hyper - v 管理器
- 单击右侧菜单中的Virtual Switch Manager
- 单击创建外部类型的虚拟交换机
- 将其命名为
myswitch
,并选中“共享主机的活动网络适配器”复选框
现在,使用我们的节点管理工具docker-machine创建几个vm:
注意:您需要以管理员身份运行以下命令,否则您没有创建hyperv vm的权限!
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2