如何在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权限
我们将要做什么?
- 配置主机
- 安装Docker-ce
- Docker Swarm初始化
- 将第一个服务部署到群集
第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,如下所示。
第3步 - 创建Swarm集群
在这一步中,我们将创建节点的Swarm集群。 为了创建swarm集群节点,我们需要在'manager'节点上初始化swarm模式,然后将'worker01'节点加入集群。
通过在'manager'节点上运行下面的docker命令来初始化Docker Swarm模式。
docker swarm init --advertise-addr 132.92.41.4
您将得到如下所示的结果。
您将看到'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
现在您将获得如下所示的结果。
'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集群。