DRBD9和LINSTOR用户指南——Proxmox VE中的LINSTOR卷

7. Proxmox VE中的LINSTOR

本章通过LINSTOR Proxmox插件介绍了Proxmox VE中的DRBD 

7.1Proxmox VE概述

Proxmox VE是具有KVMLinux容器和HA的易于使用的完整服务器虚拟化环境。

“ linstor-proxmox”ProxmoxPerl插件,与LINSTOR结合使用,可以在多个Proxmox VE节点上复制VM磁盘。由于数据已经复制到多个节点,因此可以在几秒钟内实时迁移活动的VM,而无需停机也无需中央SAN

7.2Proxmox插件安装

LINBITProxmox VE用户提供了专用的公共存储库。该存储库不仅包含Proxmox插件,而且还包含整个DRBD SDS堆栈,包括DRBD SDS内核模块和用户空间实用程序。

DRBD9内核模块是作为dkms软件包安装的(即drbd-dkms),因此pve-headers在从LINBIT的存储库中设置/安装软件包之前,您必须先安装 软件包。按照该顺序,确保内核模块将为您的内核正确构建。如果您不打算安装最新的Proxmox内核,则必须安装与当前运行的内核(例如pve-headers-$(uname -r))匹配的内核头文件 。如果您错过了此步骤,那么仍然可以通过发出apt install --reinstall drbd-dkms命令针对当前内核重建dkms软件包(必须预先安装内核头文件)。

可以按以下方式启用LINBIT的存储库,其中应将“ $ PVERS”设置为Proxmox VE 主版本 (例如,“ 5”,而不是“ 5.2”):

wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt键添加-

PVERS = 5 && echo“ deb http://packages.linbit.com/proxmox/ proxmox- $ PVERS drbd-9.0”> \

         /etc/apt/sources.list.d/linbit.list

apt更新&& apt安装linstor-proxmox

7.3LINSTOR配置

在本指南的其余部分中,我们假定您已按照初始化群集中所述配置LINSTOR 群集。还要确保将每个节点设置为组合节点。在一个节点上启动“ linstor-controller”,并在所有节点上启动“ linstor-satellite”。从4.1.0版开始,使用插件的首选方法是通过LINSTOR资源组和每个资源组中的单个卷组。在资源组中描述了LINSTOR资源。必须在资源组上设置所有必需的LINSTOR配置(例如,冗余计数)。

7.4Proxmox插件配置

最后一步是为Proxmox本身提供配置。这可以通过在/etc/pve/storage.cfg文件中添加一个条目来完成 ,其内容类似于以下内容。

drbddrbd存储

   内容映像,rootdir

   控制器10.11.12.13

   资源组默认池

“ drbd”条目是固定的,不允许您对其进行修改,因为它告诉Proxmox使用DRBD作为存储后端。可以修改“ drbdstorage”条目并将其用作友好名称,该名称将显示在PVE Web GUI中以查找DRBD存储。内容条目也是固定的,因此请勿更改。冗余(在资源组中指定)指定群集中将存储多少个数据副本。建议根据您的设置将其设置为23。可以从所有节点访问数据,即使其中一些节点没有本地数据副本也是如此。例如,在一个5节点的群集中,所有节点都可以访问3个数据副本,无论它们存储在何处。控制器” 参数必须设置为运行LINSTOR控制器服务的节点的IP。只能将一个节点设置为同时作为LINSTOR控制器运行。如果该节点发生故障,请在另一个节点上启动LINSTOR控制器,然后将该值更改为其IP地址。有更优雅的方法来解决此问题。有关更多信息,请参阅本章后面的内容,如何在Proxmox中设置高可用的LINSTOR控制器VM

该插件的最新版本允许定义多个不同的存储池。这样的配置如下所示:

drbddrbd存储

   内容映像,rootdir

   控制器10.11.12.13

   资源组默认池

 

drbdfastdrbd

   内容映像,rootdir

   控制器10.11.12.13

   资源组

 

drbdslowdrbd

   内容映像,rootdir

   控制器10.11.12.13

   资源组备份

现在,您应该能够通过ProxmoxWeb GUI通过选择“ drbdstorage ”或任何其他定义的池作为存储位置来创建VM 

注意:DRBD目前仅支持原始磁盘格式。

此时,您可以尝试实时迁移VM-因为所有节点(甚至是无盘节点)上的所有数据都可以访问-只需几秒钟。如果VM处于负载状态,并且始终有大量RAM被弄脏,则整个过程可能会花费更长的时间。但是无论如何,停机时间应该是最少的,并且您将不会看到任何中断。

7.5。使控制器高度可用

对于本指南的其余部分,我们假定您已按照LINSTOR配置中的说明安装了LINSTORProxmox插件 

基本思想是在由Proxmox及其HA功能控制的VM内执行LINSTOR控制器,该存储位于由LINSTOR本身管理的DRBD上。

第一步是为VM分配存储:照常创建VM,然后在“ OS”部分中选择“ Do not use any media”。硬盘当然应该驻留在DRBD上(例如,“ drbdstorage”)。2GB磁盘空间就足够了,对于RAM,我们选择了1GB。这些是LINBIT向其客户提供的设备的最低要求(请参阅下文)。如果希望设置自己的控制器VM,并且有足够的可用硬件资源,则可以增加这些最小值。在以下用例中,我们假定控制器VM是使用ID 100创建的,但是如果此VM是在以后的时间创建的并且具有不同的ID,那就很好。

LINBIT为客户提供了一种可用于填充创建的存储的设备。为了使设备正常工作,我们首先创建一个串行端口。首先单击硬件,然后单击添加,最后单击串行端口

5.添加一个串行端口

如果一切正常,VM定义应如下所示:

6.具有串行端口的VM

下一步是将VM设备复制到VM磁盘存储中。可以使用来完成qemu-img

 

确保将VM ID替换为正确的ID。

qemu-img dd -O raw if = / tmp / linbit-linstor-controller-amd64.img \

  = / dev / drbd / by-res / vm-100-disk-1 / 0

完成后,您可以启动VM并通过Proxmox VNC查看器连接到它。默认的用户名和密码均为“ linbit”。请注意,我们保留了ssh服务器的默认配置,因此您将无法通过ssh和用户名/密码登录虚拟机。如果要启用该功能(和/“ root”登录),请启用这些设置/etc/ssh/sshd_config并重新启动ssh服务。由于此虚拟机基于“ Ubuntu Bionic”,因此您应该在中更改网络设置(例如,静态IP/etc/netplan/config.yaml。之后,您应该可以SSHVM

7. LINBIT LINSTOR控制器设备

在下一步中,将控制器VM添加到现有集群中:

linstor节点创建--node-type控制器\

  linstor控制器10.43.7.254

 

由于Proxmox存储插件将以特殊方式处理Controller VM(与其余VM相比),因此 PVE HA启动VM 之前,我们必须确保所有主机都可以访问其后备存储,否则VM将失败开始。有关如何实现此功能的详细信息,请参见下文。

在我们的测试集群中,Controller VM磁盘是在DRBD存储中创建的,最初已分配给一个主机(用于linstor resource list检查分配)。然后,我们使用linstor resource create命令为该VM创建其他资源分配给群集的其他节点。在由四个节点组成的实验室中,我们将所有资源分配都创建为有盘的,但无盘分配也很好。根据经验,将冗余计数保持为“ 3”(通常没有意义),并将其余部分分配为无盘。

由于必须以某种方式使Controller VM的存储在所有PVE主机上都可用,因此,我们必须确保drbd.service在所有主机上启用该存储(假设在此阶段它不受LINSTOR的控制):

systemctl启用drbd

systemctl启动drbd

在启动时,该linstor-satellite服务将删除其所有资源文件(.res)并重新生成它们。这与drbd需要这些资源文件来启动控制器VM 的服务冲突。首先通过调出资源drbd.service,然后再启动就足够了linstor-satellite.service。要进行必要的更改,您需要linstor-satellite.service通过systemctl 创建一个插件(不要直接编辑文件)。

systemctl编辑linstor-satellite

[单元]

After = drbd.service

不要忘记重启linstor-satellite.service

之后,是时候进行最后的步骤了,即从现有的控制器(驻留在物理主机上)切换到VM中的新控制器。因此,让我们在物理主机上停止旧的控制器服务,然后将LINSTOR控制器数据库复制到VM主机:

systemctl停止linstor-controller

systemctl禁用linstor-controller

scp / var / lib / linstor / * root@10.43.7.254/ var / lib / linstor /

最后,我们可以在VM中启用控制器:

systemctl在虚拟机中启动linstor-controller

systemctlVM中启用linstor-controller

要检查一切是否按预期进行,可以通过询问VM中的控制器来查询物理PVE主机上的群集节点linstor --controllers=10.43.7.254 node list。控制器(它只是一个控制器,而不是组合主机)完全显示为“ OFFLINE”(脱机)是完全可以的。将来这可能会变为更合理的方式。

在最后但也是至关重要的步骤中,您需要将“ controlervm”选项添加到 /etc/pve/storage.cfg,并将控制器IP地址更改为Controller VMIP地址:

drbddrbd存储

   内容映像,rootdir

   资源组默认池

   控制器10.43.7.254

   controllervm 100

请注意附加设置“ controllervm”。此设置非常重要,因为它告诉PVE处理控制器VM的方式与存储在DRBD存储中的其余VM的方式不同。具体来说,它将指示PVE不要使用LINSTOR存储插件来处理Controller VM,而应使用其他方法。这样做的原因是,在此阶段,仅LINSTOR后端不可用。一旦Controller VM启动并运行(以及VM中关联的LINSTOR Controller服务),PVE主机将能够使用LINSTOR存储插件启动存储在DRBD存储中的其余虚拟机。请确保在“ controllervm”设置中设置正确的VM ID。在这种情况下,设置为“ 100”,代表分配给我们的Controller VMID

确保Controller VM一直处于运行状态,并且要定期备份(主要是在对LINSTOR集群进行修改时),这一点非常重要。一旦虚拟机消失,并且没有备份,就必须从头开始重新创建LINSTOR群集。

为防止意外删除VM,可以在PVE GUI中转到VM选项选项卡,然后启用保护选项。但是,如果您不小心删除了VM,则我们的存储插件将忽略此类请求,因此不会从LINSTOR群集中删除VM磁盘。因此,可以使用与以前相同的ID重新创建VM(只需在PVE中重新创建VM配置文件并分配旧VM使用的相同DRBD存储设备)。插件将仅返回“ OK”,具有旧数据的旧VM可以再次使用。通常,请小心不要删除控制器VM,并相应地对其进行保护

当前,我们已将控制器作为VM执行,但我们应确保始终启动VM的一个实例。为此,我们使用ProxmoxHA功能。单击VM,然后单击更多,然后单击管理HA”。我们为控制器VM设置以下参数:

8.控制器VMHA设置

只要您的Proxmox集群中有尚在运行的节点,一切都应该很好,并且如果托管Controller VM的节点关闭或丢失,Proxmox HA将确保控制器在另一台主机上启动。显然,控制器VMIP不应更改。作为管理员,您需要确保是这种情况(例如,设置静态IP或始终通过桥接接口上的dhcp提供相同的IP)。

重要的是,在这一点上要提到的是,如果您正在为LINSTOR群集使用专用网络,则必须确保为群集流量配置的网络接口被配置为网桥(例如vmb1vmbr2等) PVE主机。如果将它们设置为直接接口(例如eth0eth1等),则您将无法设置Controller VM vNIC与集群中的其余LINSTOR节点通信,因为您无法为VM分配直接网络接口,但仅桥接接口。

使用此设置无法完全解决的一个限制是,随着所有群集节点的重新启动,总群集中断(例如,通用电源故障)。不幸的是,Proxmox在这方面非常有限。您可以为VM启用“ HA功能,并且可以定义启动和关闭顺序约束。但是两者是完全分开的。因此,很难/不可能在启动所有其他VM之前确保Controller VM已启动并正在运行。

可以通过将Proxmox插件本身中的VM启动延迟到控制器VM启动之前来解决该问题(即,如果要求插件启动控制器VM,则执行该操作,否则等待并ping通该控制器)。尽管这是一个好主意,但在计划启动Controller VM之前应先启动某些VM(然后将其阻止)的序列化,非并行VM启动/插件调用事件流中,这将严重失败。这显然会导致僵局。

我们将与Proxmox讨论这些选项,但是我们认为当前的解决方案在大多数典型用例中仍然很有价值。特别是与起搏器设置的复杂性相比。涵盖了可以预期并非整个集群同时崩溃的用例。即使是这种情况,启动整个群集时,仅自动启动VM也不起作用。在这种情况下,管理员只需等待Proxmox HA服务启动控制器VM。之后,可以在命令行上手动/脚本启动所有VM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值