前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker集群网络的配置和使用

Docker集群网络的配置和使用

作者头像
程序你好
发布2018-07-31 17:43:51
1.5K0
发布2018-07-31 17:43:51
举报
文章被收录于专栏:程序你好程序你好程序你好

总结

当我们开始使用Docker时,典型的配置是在某个机器上创建一个独立的应用程序。

在大多数情况下,在一台机器上运行所有的应用程序通常是不实际的,这种情况下,您将需要一种方法来跨许多机器分发应用程序。

这就是Docker集群所提供的功能。

Docker Swarm提供集群、可扩展性、发现和安全性等功能。在本文中,我们将创建一个基本的群集配置,并执行一些测试来说明docker的发现和连通性。

在这个演示中,我们将创建一个Docker集群,它将由一个集群管理器和一个Worker组成。为了方便起见,它将在AWS上运行。

体系架构

我们的目标架构将由运行在不同EC2主机上的AWS AMI映像中的几个Docker容器组成。这些示例的目的是演示如何使用Docker群集发现运行在不同主机上的服务并相互通信的概念。

在上面的Docker集群网络中,我们描述了Docker群管理器和几个Docker Worker之间的相互连接。在接下来的示例中,为了降低复杂性和成本,我们将使用一个管理器和一个Worker。请记住,您的实际配置可能由许多Docker Worder组成。

下面是一个潜在用例的示例。AWS负载均衡器,配置为将负载分配给运行在两个或多个EC2实例上的Docker群。

我们将在下面的示例中展示如何创建Docker群集网络,该网络将允许成员的DNS发现并允许成员之间进行通信。

先决条件

我们假设您对Docker有些熟悉,并且熟悉在AWS中设置EC2实例。

如果你对AWS不自信或想要稍微复习一下,请阅读以下文章:

Provision a free tier EC2 instance

Configure Docker on your EC2 instance

一些AWS服务将产生费用,所以请确保停止和/或终止您不使用的任何服务。此外,考虑设置账单警报,以警告您的收费太多。

配置

首先创建两个(2)EC2实例,然后在每个EC2实例上安装Docker。请参阅Docker支持的平台一节,了解Docker安装指南和实例说明。

以下是AWS开放端口以支持Docker Swarm和我们的端口连接测试:

在AWS Mule SG开放端口

对于我们的示例,我们将使用以下IP地址描述节点1和节点2:

Node 1: 10.193.142.248

Node 2: 10.193.142.246

在开始之前,让我们先看看现有的Docker网络。

Docker 网络

docker network ls

如果您从未在这个Docker守护进程上添加过网络或初始化过群集,那么网络列表的输出应该至少与下面的列表相似。

其他网络也可以显示。

Docker网络列表的结果:

从节点1,我们开始初始化群集。

创建 Swarm 主节点

docker swarm init --advertise-addr=10.193.142.248

您应该得到如下所示的响应。我们将使用提供的token将其他节点连接到群集。

swarm 初始化响应结果

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证书需要一到两分钟才能在群集中同步,因此,如果出现错误,请等几分钟后,然后再试一次。

如果您碰巧放错了令牌,您可以使用join-tokenargument为manager和worker列出令牌。

例如,在节点1上运行以下命令:

Manager Token for Node 1

docker swarm join-token manager

接下来,让我们把节点2加入群集。

Node 2 Joins Swarm

docker swarm join --token SWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377

This node joined a swarm as a worker.

从群集主节点1,我们现在可以看到连接的节点

在主节点, 列出所有节点

docker node ls

Results of Listing Nodes

另外,请注意,已经创建了一个Ingress网络,这为我们的群集网络提供了一个入口点。

Results of Docker Network Listing

让我们继续为单独容器创建集群网络。

Overlay Network Creation on Node 1

docker network create --driver=overlay --attachable my-overlay-net

docker network ls

Results of Docker Network Listing

运行我们的容器,加入 Overlay 网络

docker run -it --name alpine1 --network my-overlay-net alpine

Node 2加入 overlay网络, 我们使用打开端口 8083来测试我们在运行容器的连通性。

运行容器, 加入 Overlay 网络

docker run -it --name alpine2 -p 8083:8083 --network my-overlay-net alpine

验证我们的Overlay网络连通性

通过我们的容器运行,我们可以测试我们可以使用群集配置的DNS发现我们的主机。从节点2,让我们ping一下Nod 1容器。

Node 2 Pings Node 1, Listens on Port 8083

ip addr # show our ip address

ping -c 2 alpine1

# create listener on 8083

nc -l -p 8083

从节点1LetsPing节点2容器并连接到端口8083上它的open Listener

Node 1 Pings Node 2, Connect to Node 2 Listener on Port 8083

ip addr # show our ip address

ping -c 2 alpine2

# connect to alpine2 listener on 8083

nc alpine2 8083

Hello Alpine2

^C

在这里,您创建了从节点1到节点2的tcp连接,并发送了一条消息。类似地,在Docker overlay集群中运行时,您的服务可以连接和交换数据。

有了这些基本的构建块,您就可以将这些原则应用到实际的设计中了。

Cleanup

测试完成后,我们可以清理群配置。

Remove Node 2 Swarm

docker container stop alpine2

docker container rm alpine2

docker swarm leave

Remove Node 1 Swarm

docker container stop alpine1

docker container rm alpine1

docker swarm leave --force

这就是我们创建DockerOverlay网络的简单示例。通过简单的示例,可以创建更大、更复杂的Docker容器集群网络。

请确保删除在这些示例中可能使用的AWS资产,这样就不会产生任何持续的成本。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总结
  • 体系架构
  • 先决条件
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档