如何在Ubuntu上设置和配置Docker Swarm集群

Docker Swarm是一个允许您部署Docker主机群集的工具。它是Docker提供的本机集群工具,提供高效...

如何在Ubuntu上设置和配置Docker Swarm集群

Docker Swarm是一个允许您部署Docker主机群集的工具。 它是Docker提供的本机群集工具,通过将其分发到群集群集内的所有节点,为您的应用程序提供高可用性和高性能。

在本教程中,我们将逐步介绍如何使用Ubuntu 16.04创建Swarm集群。 我们将使用2个ubuntu服务器机器创建一个swarm集群,1个服务器节点作为管理器,另一个作为worker。 然后我们将尝试将简单的Nginx服务部署到群集群集。

先决条件

  • 2个或更多 - Ubuntu 16.04服务器
    • 经理132.92.41.4
    • worker01 132.92.41.5
  • Root权限

我们将要做什么?

  1. 配置主机
  2. 安装Docker-ce
  3. Docker Swarm初始化
  4. 将第一个服务部署到群集

第1步 - 配置主机

在为群集群集安装任何软件包之前,我们将在两台服务器上配置hosts文件。

在所有服务器上运行以下命令,'manager'和'worker01'。

使用vim编辑器编辑'/ etc / hosts'文件。

vim /etc/hosts

将以下配置添加到行尾。

132.92.41.4    manager
132.92.41.5    worker01

保存并退出。

现在使用'hostname'代替使用IP地址ping所有节点。

ping -c 3 manager
ping -c 3 worker01

并确保它在所有主机上工作。

配置主机

第2步 - 安装Docker-ce

要创建群集群集,我们需要在所有服务器节点上安装docker。 在此步骤中,我们将在服务器管理器和worker01上安装Docker-ce Community Edition。

使用下面的apt命令安装Docker-ce依赖项。

sudo apt install apt-transport-https software-properties-common ca-certificates -y

现在将Docker密钥和Docker-ce存储库添加到我们的服务器。

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list

使用下面的apt install命令更新存储库并安装Docker-ce软件包。

sudo apt update
sudo apt install docker-ce -y

安装完成后,启动docker服务并使其在每次系统引导时启动。

systemctl start docker
systemctl enable docker

Docker-ce现在安装在我们的服务器节点上。

接下来,我们将docker配置为以普通用户或非root用户身份运行。

创建一个名为“mohammad”的新用户,并将其添加到“docker”组。

useradd -m -s /bin/bash mohammad
sudo usermod -aG docker mohammad

现在登录'mohammad'用户并运行docker hello-world命令,如下所示。

su - mohammad
docker run hello-world

你将从docker获得hello world,如下所示。

安装Docker-ce

第3步 - 创建Swarm集群

在这一步中,我们将创建节点的Swarm集群。 为了创建swarm集群节点,我们需要在'manager'节点上初始化swarm模式,然后将'worker01'节点加入集群。

通过在'manager'节点上运行下面的docker命令来初始化Docker Swarm模式。

docker swarm init --advertise-addr 132.92.41.4

您将得到如下所示的结果。

创建Swarm集群

您将看到'manager-node'已由'manager'节点生成。

接下来,我们需要将'worker01'节点添加到集群'manager'。 为此,我们需要集群“manager”节点中的“join-token”,因此请务必将其写在笔记上。

在'worker01'节点上运行docker swarm join命令。

docker swarm join --token SWMTKN-1-5p5ujrr67rl2rlmyvrj56fksblbcrtaeirf7fj5r4snid2vn6y-918gbqr02m64xct43i2ssi4qs 132.92.41.4:2377

现在您将获得如下所示的结果。

docker swarm join

'worker01'节点已加入群集。

通过在“manager”节点上运行以下命令来检查它。

docker node ls

现在您看到'worker01'节点已加入群集群集。

节点已加入群集群集

Swarm集群已经创建。

第4步 - 将第一个服务部署到群集

在此步骤中,我们将创建第一个服务并将其部署到群集群集。 我们想要创建新的服务Nginx Web服务器,它将在默认的http端口80上运行,然后将其暴露给主机服务器上的端口8080,然后尝试在swarm集群内复制nginx服务。

创建服务

创建名为“my-web”的新Nginx服务,并将容器的HTTP端口公开给主机上的端口8080。

docker service create --name my-web --publish 8080:80 nginx:1.13-alpine

创建它时,请使用下面的docker service命令进行检查。

docker service ls

您将得到如下所示的结果。

创建服务

已经创建了Nginx服务并将其作为名为“my-web”的服务部署到swarm集群,它基于Nginx Alpine Linux,将容器服务的HTTP端口暴露给主机上的端口“8080”,并且只有1个副本。

副本和扩展服务

现在我们将为'my-web'服务制作复制品。 我们将制作“my-web”服务的2个副本,因此可以在“manager”和“worker01”节点上访问该服务。

要复制“my-web”服务,请运行以下命令。

docker service scale my-web=2

完成后,使用docker service命令再次检查。

docker service ls

现在服务器有2个重复。

副本和扩展服务

打开Web浏览器,然后使用端口8080键入管理器节点IP地址。

HTTP://经理:8080 /

您将获得Nginx默认页面。

管理节点

以下是'worker01'节点的结果。

HTTP:// worker01:8080 /

工人节点

Swarm集群已经创建,Nginx服务已经完成部署到我们的Swarm集群。

参考