在码头群中运行LINSTOR [英] Running LINSTOR in Docker Swarm

查看:22
本文介绍了在码头群中运行LINSTOR的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在实验室试用linstor。我正在尝试设置computestorage节点的分隔。运行linstor的存储节点,而运行Docker Sarm或K8S的Compute节点。在此测试中,我设置了1个链接器节点和1个坞站群节点。已成功配置Linstor节点。

Linstor节点

DRBD9.1.2

╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ StoragePool          ┊ Node       ┊ Driver   ┊ PoolName       ┊ FreeCapacity ┊ TotalCapacity ┊ CanSnapshots ┊ State ┊ SharedName ┊
╞══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ DfltDisklessStorPool ┊ instance-2 ┊ DISKLESS ┊                ┊              ┊               ┊ False        ┊ Ok    ┊            ┊
┊ pd-std-pool          ┊ instance-2 ┊ LVM_THIN ┊ vg/lvmthinpool ┊   199.80 GiB ┊    199.80 GiB ┊ True         ┊ Ok    ┊            ┊
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
# linstor node list
╭─────────────────────────────────────────────────────────────╮
┊ Node       ┊ NodeType ┊ Addresses                ┊ State    ┊
╞═════════════════════════════════════════════════════════════╡
┊ instance-2 ┊ COMBINED ┊ 10.100.0.29:3366 (PLAIN) ┊ Online   ┊
╰─────────────────────────────────────────────────────────────╯

Docker节点

在另一个节点中,我运行了Docker Sarm。该节点没有安装任何工具,如drbd、drbdtop、drbdsetup...等。从技术上讲,运行的是最小的安装,足以只运行Docker来保持它的轻量级。Docker版本为20.10.3。我还安装了用Golang编写的linstor扩展坞卷。

下面是我的/etc/linstor/docker-volume.conf和扩展坞卷插件安装在我的Docker Sarm节点中

$ docker plugin ls
ID             NAME                                  DESCRIPTION                        ENABLED
6300029b3178   linbit/linstor-docker-volume:latest   Linstor volume plugin for Docker   true

$ cat /etc/linstor/docker-volume.conf
[global]
controllers = linstor://instance-2
fs = xfs

尝试使用linstor创建的卷时出错。我已确认可以ping通instance-2的链路控制器,并打开防火墙中的所有端口。以下是错误和重新生成的步骤

$ docker volume create -d linbit/linstor-docker-volume:latest  --name=first --opt size=20 --opt replicas=1 --opt storage-pool=pd-std-pool
$ docker volume ls
DRIVER                                VOLUME NAME
local                                 64f864db31990baa6b790dde34513a7f6fc466ca0c5e72ffab7024365a9f45da
linbit/linstor-docker-volume:latest   first
$ docker volume inspect first
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "linbit/linstor-docker-volume:latest",
        "Labels": {},
        "Mountpoint": "",
        "Name": "first",
        "Options": {
            "replicas": "1",
            "size": "20",
            "storage-pool": "pd-std-pool"
        },
        "Scope": "global"
    }
]
$ docker run --rm -it -v first:/data alpine sh
docker: Error response from daemon: error while mounting volume '': VolumeDriver.Mount: 404 Not Found.
ERRO[0000] error waiting for container: context canceled 

问题

  • 我需要在我的Docker Sarm中安装drbd-utils才能工作吗?
  • 错误VolumeDriver.Mount 404 Not Found是什么意思?

推荐答案

LINSTOR管理节点群集中的存储,通过使用分布式复制数据块设备(分布式复制数据块设备)跨节点复制数据,复制逻辑卷或ZFS卷(我想说是裸分区)内的磁盘空间,根据官方文档:

"LINSTOR is a configuration management system for storage on Linux systems. It manages LVM logical volumes and/or ZFS ZVOLs on a cluster of nodes. It leverages DRBD for replication between different nodes and to provide block storage devices to users and applications. It manages snapshots, encryption and caching of HDD backed data in SSDs via bcache."

所以我认为可以,您确实需要在要使用该驱动程序的每个节点上安装该驱动程序(我确实看到Docker的存储插件尝试在本地挂载DRBD卷)

但是,您不一定需要在计算节点上拥有存储空间本身,因为您可以从在不同节点上复制的卷挂载无盘DRBD资源,所以我认为您的想法应该可行,除非驱动程序本身有一些我还没有发现的错误:您的计算节点需要注册为所有所需池的无盘节点(我没有尝试过,但请记住,阅读它不仅是可能的,而且建议用于某些类型的数据迁移)。

当然,如果您没有超过1个存储节点,使用LINSTOR/drbd(节点或磁盘故障将使您没有磁盘)不会获得太多好处。我的使用案例是跨不同数据中心的不同服务器复制存储,以便下次刻录到清晰的😅时,我可以在几分钟后运行我的数据和容器,而不是几天...

这篇关于在码头群中运行LINSTOR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆