部署Docker Swarm

2020年12月30日11:27:55 发表评论 46 次浏览

介绍

了解如何部署Docker的本地集群工具Docker Swarm。 Swarm将一组Docker主机(包括远程服务器)转变为一个虚拟主机。然后, 你可以在整个分布式群集上运行应用程序。

要求

  • 一台或多台运行CentOS 7或Ubuntu 14.04的服务器。
  • Docker已安装并在你的机器上运行。
  • Docker使用和命令的基础知识。

防火墙规则

首先, 你需要允许Swarm使用的端口访问防火墙。转到你的云面板, 然后单击网络->防火墙策略在左侧菜单上。

码头工人

如果你以前创建了防火墙策略, 请单击以选择该策略, 然后向下滚动以对其进行编辑。否则, 请点击创造创建新的防火墙策略。

点击创建

为你的策略命名, 然后填写防火墙规则。

添加防火墙策略

添加每个规则后, 单击绿色+按钮添加它并获得新行。

点击绿色+

添加以下规则:

  • TCP / UDP, 从端口4000到端口4000, 全部
  • TCP / UDP, 从端口7946到端口7946, 全部
  • TCP / UDP, 从端口8500到端口8500, 全部
  • TCP, 从端口22到端口22, 全部
  • TCP, 从端口80到端口80, 全部
  • TCP, 从端口2375到端口2375, 全部
  • TCP, 从端口2376到端口2376, 全部
  • TCP, 从端口3375到端口3375, 全部
  • TCP, 从端口3376到端口3376, 全部
  • TCP, 从端口8300到端口8300, ​​全部
  • TCP, 从端口8301到端口8301, 全部
  • TCP, 从端口8302到端口8302, 全部
  • TCP, 从端口8400到端口8400, 全部
  • UDP, 从端口4789到端口4789, 全部

重要:如果这是新的防火墙策略, 则你还将希望添加适用于你现有服务的所有防火墙规则。

点击添加预定义值按钮, 然后单击以选择所有适用的服务。

添加预定义值

完成添加新防火墙规则后, 请单击创造按钮。

点击创建

接下来, 你需要将服务器分配给该防火墙规则。向下滚动并单击分配按钮。

点击分配

单击以选中要分配给此防火墙规则的服务器, 然后单击保存更改.

分配服务器

群概念

Swarm将一组Docker容器池分组到一个集群中, 以便它们充当一个大型容器。你可以在同一主机上运行带有容器池的Swarm集群。你还可以将容器池从外部主机连接到Swarm。

每个Swarm至少需要一个主机才能充当Swarm管理器。将多个主机设置为管理器可提供冗余, 这样, 即使管理器不可用, 你的Swarm集群也不会崩溃。

Swarm也将需要发现服务。发现服务允许容器查找并连接到其指定的Swarm。对于此示例, 我们将使用Consul。其他发现服务包括等和动物园管理员.

在此示例中, 我们将仅使用两台服务器:也将运行Consul的管理器和一个节点。

关于安装Docker Swarm的说明:Docker Swarm内置在Docker Engine中。无需单独安装。

一群人

要创建Docker Swarm集群, 我们将:

  • 在将用作管理器的主机上以-H模式启动Docker。

  • 在管理器上运行Consul容器。

  • 在管理器上运行Swarm容器。

  • 在将用作节点的第二台主机上, 以-H模式启动Docker。

  • 在节点上运行Swarm容器, 然后将其加入Swarm。

  • 测试Swarm并运行" Hello World"应用程序。

在Manager上以主机模式运行Docker

如果Docker已经在你要用作管理器的计算机上运行, ​​请使用以下命令将其停止:

CentOS 7:

systemctl stop docker

Ubuntu 14.04:

service docker stop

Docker停止后, 使用-H标志启动它以在主机模式下运行它:

sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock &

调整启动选项

默认情况下, 如果服务器重新启动, Docker将重新启动没有的-H旗。要将这个标志添加到Docker的启动规则中, 你将需要编辑启动选项。

CentOS的7

编辑/ etc / sysconfig / docker文件:

sudo nano /etc/sysconfig/docker

找出选项行并添加-H标志, 使其显示为:

OPTIONS='--selinux-enabled -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock'

保存并退出文件。

Ubuntu 14.04

编辑/ etc / default / docker文件:

sudo nano /etc/default/docker

找出DOCKER_OPTS行并添加-H标志, 使其显示为:

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"

保存并退出文件。

运行领事容器

在管理器上, 使用以下命令安装并运行Consul容器:

sudo docker run --restart=always -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap

注意:在大型生产集群中, 最好在单独的主机上运行Consul服务。对于此示例, 我们将加倍运行管理器主机上的Consul。

在Manager上运行Swarm容器

使用以下命令启动管理器上的Swarm容器, 替换相关的IP地址:

sudo docker run --restart=always -d -p [manager IP address]:4000:4000 swarm manage -H :4000 --replication --advertise [manager IP address]:4000 consul://[Consul IP address]:8500

对于此示例, 我们将在与管理器相同的服务器上运行Consul, IP地址192.168.0.1:

sudo docker run --restart=always -d -p 192.168.0.1:4000:4000 swarm manage -H :4000 --replication --advertise 192.168.0.1:4000 consul://192.168.0.1:8500

在节点上以主机模式启动Docker

如果Docker已经在服务器上运行, 你将用作节点, 请使用以下命令将其停止:

CentOS 7:

sudo systemctl stop docker

Ubuntu 14.04:

sudo service docker stop

Docker停止后, 使用-H标志启动它以在主机模式下运行它:

sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock &

在节点上运行Swarm容器

使用以下命令, 在要用作节点的每个主机上启动Swarm容器, 并替换相关的IP地址:

sudo docker run --restart=always -d swarm join --advertise=[Node IP address]:2375 consul://[Consul IP address]:8500

对于此示例, 我们将在IP地址为192.168.0.255的节点服务器上, 连接到IP地址为192.168.0.1的管理器服务器上的Consul服务:

sudo docker run --restart=always -d swarm join --advertise=192.168.0.255:2375 consul://192.168.0.1:8500

对要添加为Swarm节点的任何其他服务器重复步骤4和5。

测试群

你可以使用以下命令从与其连接的任何主机上获取有关Swarm的信息:

sudo docker -H [manager IP address]:4000 info

这将返回有关Swarm的运行状况的信息, 包括连接到它的容器的数量。

官方Docker Swarm映像包括一个测试" Hello World"应用程序, 你可以在Swarm上运行该应用程序。通过使用以下命令运行以下程序来测试你的Swarm:

sudo docker -H [manager IP address]:4000 run hello-world

你应该看到以以下内容开头的输出:

Hello from Docker.
This message shows that your installation appears to be working correctly.

最后, 检查哪个Swarm节点使用以下命令运行了该应用程序:

sudo docker -H [manager IP address]:4000 ps -a
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: