在码头群中运行LINSTOR [英] Running LINSTOR in Docker Swarm
问题描述
我目前正在实验室试用linstor
。我正在尝试设置compute
和storage
节点的分隔。运行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卷(我想说是裸分区)内的磁盘空间,根据官方文档:
所以我认为可以,您确实需要在要使用该驱动程序的每个节点上安装该驱动程序(我确实看到Docker的存储插件尝试在本地挂载DRBD卷)
但是,您不一定需要在计算节点上拥有存储空间本身,因为您可以从在不同节点上复制的卷挂载无盘DRBD资源,所以我认为您的想法应该可行,除非驱动程序本身有一些我还没有发现的错误:您的计算节点需要注册为所有所需池的无盘节点(我没有尝试过,但请记住,阅读它不仅是可能的,而且建议用于某些类型的数据迁移)。
当然,如果您没有超过1个存储节点,使用LINSTOR/drbd(节点或磁盘故障将使您没有磁盘)不会获得太多好处。我的使用案例是跨不同数据中心的不同服务器复制存储,以便下次刻录到清晰的😅时,我可以在几分钟后运行我的数据和容器,而不是几天...这篇关于在码头群中运行LINSTOR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!