概括
当我们开始使用 Docker 时,典型的配置是在我们的桌面上创建一个独立的应用程序。
在大多数情况下,在一台机器上运行所有应用程序通常是不切实际的,如果不是,您将需要一种将应用程序分布在多台机器上的方法。这就是 Docker Swarm 的用武之地。
Docker Swarm 提供了集群、可扩展性、发现和安全等功能。在本文中,我们将创建一个基本的 Swarm 配置并执行一些实验来说明发现和连接性。
在这个演示中,我们将创建一个由 Swarm 管理器和工作器组成的 Swarm 覆盖集群。为方便起见,它将在 AWS 中运行。
架构
我们的目标架构将包含几个在不同 EC2 主机上的 AWS AMI 映像中运行的 Docker 容器。这些示例的目的是演示如何使用 Docker 群来发现运行在不同主机上的服务并相互通信的概念。
在我们上面的假设网络中,我们描述了一个 Docker 集群管理器和几个集群工作者的互连。在接下来的示例中,我们将使用单个经理和单个工作人员来保持较低的复杂性和成本。请记住,您的真实配置可能包含许多 swarm worker。
下面是一个潜在用例的示例。一个 AWS 负载均衡器,配置为将负载分配到在 2 个或更多 EC2 实例上运行的 Docker 群。
配置
首先创建两 (2) 个 EC2 实例,然后在每个 EC2 实例上安装 Docker。有关您的实例的 Docker 安装指南和说明,请参阅Docker 支持的平台部分。
以下是为支持 Docker Swarm 和我们的端口连接测试而开放的 AWS 端口:
对于我们的示例,我们将使用以下 IP 地址来表示节点 1 和节点 2:
节点 1:10.193.142.248
节点 2:10.193.142.246
在开始之前,让我们看一下现有的 Docker 网络。
码头工人网络
如果您从未在此 Docker 守护程序上添加网络或初始化 swarm,则网络列表的输出至少应如下所示。也可以显示其他网络。
Docker 网络列表结果:
从节点 1 开始,让我们从初始化 swarm 开始。
创建 Swarm 主节点
您应该得到如下所示的响应。我们将使用提供的令牌将我们的其他节点加入 swarm。
swarm init 的结果
“ Swarm initialized: current node (v9c2un5lqf7iapnv96uobag00) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.”
根 CA 证书需要一两分钟才能通过 swarm 同步,因此如果出现错误,请等待几分钟,然后重试。
如果您碰巧放错了令牌,您可以使用该 join-token参数列出经理和工人的令牌。例如,在节点 1 上,运行以下命令:
节点 1 的管理器令牌
接下来,让我们从节点 2 加入 swarm。
节点 2 加入 Swarm
“dockerswarmjoin--tokenSWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377
This node joined a swarm as a worker.”
从节点 1,swarm master,我们现在可以查看连接的节点
在 Master 上,列出所有节点
列出节点的结果
另外,请注意已经创建了一个 Ingress 网络,这为我们的 swarm 网络提供了一个入口点。
Docker 网络列表结果
让我们继续为独立容器创建我们的 Overlay 网络。
在节点 1 上创建覆盖网络
Docker 网络列表结果
请注意将我们的新覆盖网络添加到 swarm 中。现在我们从节点 1 加入覆盖网络。
运行我们的容器,加入 Overlay 网络
从节点 2 加入覆盖网络,我们将打开端口 _8083_ 以测试与我们正在运行的容器的连接性。
运行我们的容器,加入 Overlay 网络
验证我们的覆盖网络连接
随着我们的容器运行,我们可以测试我们是否可以使用由 swarm 配置的 DNS 来发现我们的主机。让我们从节点 2 ping 节点 1 容器。
节点 2 Ping 节点 1,监听端口 8083
从节点 1 ping 节点 2 容器并连接到它在端口8083上的 Open Listener
节点 1 Ping 节点 2,连接到端口 8083 上的节点 2 侦听器
有了它,您创建了从节点 1 到节点 2 的 tcp 连接并发送了一条消息。同样,您的服务在 Docker 覆盖集群中运行时可以连接并交换数据。
有了这些基本构建块,您就可以将这些原则应用于实际设计。
清理
随着我们的测试完成,我们可以拆除 swarm 配置。
移除节点 2 Swarm
移除节点 1 Swarm
这结束了我们创建 Docker 覆盖网络的简短示例。有了这些基本构建块,您现在就拥有了构建更大、更复杂的 Docker 容器交互所必需的基本部分。
更多相关大咖视频课程请在苹果App Store 或各安卓市场下载“技福小咖”App学习。
网友评论