教程:使用GlusterFS创建具有持久性存储的Docker Swarm

释放Docker Swarm编排器是部署容器集群的一种好方法(相对简单)。是的,您可以使用Kubernetes获得更多管理功能,但是当您需要简单容器集群的基础知识时,Docker Swarm是一个不错的选择。

您可能会发现自己需要的一件事是群集的持久存储。什么是持久性存储?我很高兴你问。简而言之,永久性存储是任何类型的数据存储设备,即使在切断设备电源后,它仍可以保留数据。关于容器,即使容器未运行,持久性存储也是剩余的存储。换句话说,在托管服务器上可以找到持久性存储,因此,当容器被缩减时,仍然可以访问存储中的数据。或者,如果容器是群集的一部分,则可以在节点之间共享该持久性存储。

对于任何容器开发人员而言,持久性存储通常是必不可少的工具。使用某些容器技术,可以非常简单地完成持久性存储。尽管使用Docker可以使用卷,但是该功能的问题在于它是仅本地系统。因此,您需要使用NFSGlusterFS之类的第三方软件。NFS的最大缺点是未加密。因此,对于许多企业和开发人员而言,GlusterFS是必经之路。

我想向您介绍使用GlusterFS共享Docker Swarm中的持久性存储的过程。

您需要什么

我将在一个具有一个主节点和两个节点的小型集群上进行演示,每个集群将在Ubuntu Server 18.04上运行。因此,您需要:

  • Ubuntu Server 18.04的三个正在运行和已更新的实例。
  • 具有sudo特权的用户。

这就是完成此工作所需的全部。

更新/升级

开始之前,最好总是更新和升级服务器操作系统。要在Ubuntu(或任何基于Debian的平台)上执行此操作,请打开一个终端并发出以下命令:

sudo apt-get update

sudo apt-get upgrade -y

如果您的内核在此过程中升级,请确保重新引导服务器,以使更改生效。

添加您的主机

现在,我们需要在/ etc / hosts中映射我们的IP地址。在每台机器上执行此操作。发出命令:

sudo nano /etc/hosts

在该文件(在每台计算机上)中,您将在文件底部添加以下内容:

 
1
2
3
192.168.1.67 docker-master
192.168.1.107 docker-node1
192.168.1.117 docker-node2

确保编辑以上内容以匹配您的IP地址和主机名。

保存并关闭文件。

部署群

如果尚未这样做,则需要安装和部署Docker Swarm。在每台机器上,使用以下命令安装Docker:

sudo apt-get install docker.io -y

使用以下命令启动并启用Docker:

sudo systemctl start docker

sudo systemctl enable docker

使用以下命令将用户添加到docker组(在所有计算机上):

sudo usermod -aG docker $USER

发出以下命令(在所有计算机上),以使更改生效:

sudo newgrp docker

接下来,我们需要初始化群组。在主服务器上,发出命令:

docker swarm init --advertise-addr MASTER_IP

其中MASTER_IP是主机的IP地址。

一旦初始化了集群,它将显示您需要在每个节点上运行的命令。该命令如下所示:

docker swarm join --token SWMTKN-1-09c0p3304ookcnibhg3lp5ovkjnylmxwjac9j5puvsj2wjzhn1-2vw4t2474ww1mbq4xzqpg0cru 192.168.1.67:2377

复制该命令并将其粘贴到节点的终端窗口中,以将其加入主节点。

这就是部署群集的全部内容。

安装GlusterFS

现在,您需要在群集内的每台服务器上安装GlusterFS。首先,使用以下命令安装必要的依赖项:

sudo apt-get install software-properties-common -y

接下来,使用以下命令添加必要的存储库:

sudo add-apt-repository ppa:gluster/glusterfs-3.12

使用以下命令更新apt:

sudo apt-get update

使用以下命令安装GlusterFS服务器:

sudo apt install glusterfs-server -y

最后,使用以下命令启动并启用GlusterFS:

sudo systemctl start glusterd


sudo systemctl enable glusterd

生成SSH密钥

如果尚未这样做,则应为每台计算机生成一个SSH密钥。为此,发出命令:

ssh-keygen -t rsa

处理完这些之后,就该继续了。

探测节点

现在,我们将让Gluster探测所有节点。这将由主人完成。我将继续以两个节点为例,它们分别是docker-node1和docker-node2。在发出命令之前,您需要使用以下命令更改为超级用户:

sudo -s

如果您没有从根目录发出Gluster probe命令,则会收到一个错误,指出它无法写入日志。probe命令如下所示:

gluster peer probe docker-node1; gluster peer probe docker-node2;

确保编辑命令以适合您的配置(对于主机名)。

该命令完成后,您可以检查以确保您的节点已与该命令连接:

gluster pool list

您应该看到所有列出为已连接的节点(图1)。

图1:我们的节点已连接。

使用exit命令退出root用户。

创建Gluster卷

让我们创建一个用于Gluster卷的目录。相同的命令将在所有计算机上运行:

sudo mkdir -p /gluster/volume1

使用所需的任何名称代替volume1。

现在,我们将使用以下命令在整个集群上创建卷(仅在主服务器上运行):

sudo gluster volume create staging-gfs replica 3 docker-master:/gluster/volume1 docker-node1:/gluster/volume1 docker-node2:/gluster/volume1 force

使用以下命令启动卷:

sudo gluster volume start staging-gfs

该卷现在已启动并正在运行,但是我们需要确保该卷将在重新引导时挂载(或其他情况)。我们将卷挂载到/ mnt目录。为此,请在所有计算机上发出以下命令:

sudo -s

echo 'localhost:/staging-gfs /mnt glusterfs defaults,_netdev,backupvolfile-server=localhost 0 0' >> /etc/fstab

mount.glusterfs localhost:/staging-gfs /mnt

chown -R root:docker /mnt

exit

要确保已安装Gluster卷,请发出以下命令:

df -h

您应该看到它在底部列出(图2)。

图2:我们的Gluster卷已正确安装。

现在,您可以在/ mnt目录中创建新文件,它们会显示在每台计算机上的/ gluster / volume1目录中。

在Docker上使用新的Gluster卷

此时,您已经准备好将持久性存储卷与Docker集成。举例来说,您需要一个MySQL数据库的持久存储。在您的docker YAML文件中,您可以添加如下部分:

 
1
2
3
4
<i> volumes:
</i><i>   - type: bind
</i><i>     source: /mnt/staging_mysql
</i><i>     target: /opt/mysql/data</i>

由于我们已经将持久性存储安装在/ mnt中,因此保存在一个docker节点上的所有内容都将与所有其他节点同步。

这就是您创建持久性存储然后在Docker Swarm集群中使用它的方式。当然,这不是使持久性存储工作的唯一方法,但它是最简单(也是最便宜)的方法之一。尝试一下GlusterFS作为您的持久性存储选项,看看它是否不适合您。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值