Proxmox VE 6.0管理指南——6.集群管理器

6.集群管理器

Proxmox VE集群管理器pvecm是用于创建一组物理服务器的工具。这样的组称为集群。我们使用 Corosync群集引擎进行可靠的组通信,并且此类群集最多可以包含32个物理节点(可能更多,具体取决于网络延迟)。

pvecm可用于创建新集群,将节点加入集群,离开集群,获取状态信息以及执行其他各种与集群相关的任务。的P ROX  ø X Ç光泽˚F ILE 小号 ystem“pmxcfs”)被用于透明群集配置分发到所有群集节点。

将节点分组到集群中具有以下优点:

  • 基于Web的集中式管理
  • 多主集群:每个节点可以完成所有管理任务
  • pmxcfs:数据库驱动的文件系统,用于存储配置文件,使用corosync在所有节点上实时复制。
  • 轻松在物理主机之间迁移虚拟机和容器
  • 快速部署
  • 群集范围的服务,例如防火墙和HA

6.1。要求

  • 所有节点必须能够通过UDP端口5404和5405相互连接,才能使corosync正常工作。
  • 日期和时间必须同步。
  • 使用节点之间的TCP端口22上的SSH隧道。
  • 如果您对高可用性感兴趣,则至少需要三个节点才能实现可靠的仲裁。所有节点应具有相同的版本。
  • 我们建议使用专用的NIC来处理群集流量,尤其是在使用共享存储时。
  • 添加节点需要集群节点的root用户密码。
 

无法将Proxmox VE 3.x和更早版本与Proxmox VE 4.X群集节点混合使用。

 

 

虽然Proxmox VE 4.4和Proxmox VE 5.0都有可能,但它不支持作为生产配置,而应仅在将整个群集从一个主要版本升级到另一个主要版本时临时使用。

 

 

无法运行具有较早版本的Proxmox VE 6.x群集。Proxmox VE 6.x和早期版本之间的群集协议(corosync)发生了根本性的变化。Proxmox VE 5.4的corosync 3软件包仅用于升级到Proxmox VE 6.0的过程。

6.2。准备节点

首先,在所有节点上安装Proxmox VE。确保每个节点都安装了最终的主机名和IP配置。创建集群后,无法更改主机名和IP

当前,集群创建可以在控制台上(通过 ssh登录)或API进行,我们已经为其提供了GUI实现(DatacenterCluster)。

虽然通常会在/ etc / hosts引用所有节点名称及其IP (或通过其他方式使其名称可解析),但这对于集群正常工作不是必需的。但是,这可能会很有用,因为您可以随后通过易于记忆的节点名称通过SSH从一个节点连接到另一个节点(另请参见“ 链接地址类型)。请注意,我们始终建议在群集配置中通过节点的IP地址对其进行引用。

6.3。创建集群

通过ssh登录到第一个Proxmox VE节点。为集群使用唯一的名称。此名称以后不能更改。集群名称遵循与节点名称相同的规则。

 hp1pvecm创建CLUSTERNAME

 

可以在同一物理或逻辑网络中创建多个群集。如果这样做,请使用唯一的群集名称。为避免人为混乱,即使群集不共享群集网络,也建议选择其他名称。

要检查集群的状态,请使用:

 hp1pvecm状态

6.3.1。同一网络中的多个集群

可以在同一物理或逻辑网络中创建多个群集。每个此类群集必须具有唯一的名称,这不仅有助于管理员区分他们当前在哪个群集上运行,还需要避免群集通信堆栈中可能发生的冲突。

虽然corosync群集的带宽要求相对较低,但程序包的延迟和每秒的程序包(PPS)速率是限制因素。同一网络中的不同群集可以相互竞争这些资源,因此对于较大的群集使用单独的物理网络基础结构可能仍然有意义。

6.4。将节点添加到群集

通过ssh登录到要添加的节点。

 hp2pvecm添加IP-地址-群集

对于IP-ADDRESS-CLUSTER,请使用现有群集节点的IP或主机名。建议使用IP地址(请参阅“ 链接地址类型)。

 

一个新节点不能容纳任何VM,因为您将在相同的VM ID上遇到冲突。此外,当您将新节点加入集群时,/ etc / pve中的所有现有配置都将 被覆盖。要解决此问题,请在将节点添加到群集后,使用vzdump备份并还原到其他VMID。

要检查集群的状态,请使用:

 pvecm状态

添加4个节点后的集群状态

hp2pvecm状态

法定信息

~~~~~~~~~~~~~~~~~~

日期:2015420日星期一12:30:13

仲裁提供者:corosync_votequorum

节点数:4

节点ID0x00000001

ID1/8

Quorate:是的

 

投票信息

~~~~~~~~~~~~~~~~~~~~~~

预期票数:4

最高期望值:4

总票数:4

法定人数:3

标志:Quorate

 

会员信息

~~~~~~~~~~~~~~~~~~~~~~

    Nodeid投票名称

0x00000001 1 192.168.15.91

0x00000002 1 192.168.15.92(本地)

0x00000003 1 192.168.15.93

0x00000004 1 192.168.15.94

如果只希望使用所有节点的列表,请使用:

 #个pvecm节点

列出集群中的节点

hp2pvecm节点

 

会员信息

~~~~~~~~~~~~~~~~~~~~~~

    Nodeid投票名称

         1 1马力1

         2 1 hp2(本地)

         3 1 hp3

         4 1 hp4

6.4.1。使用分离的群集网络添加节点

将节点添加到具有独立群集网络的群集中时,需要使用link0参数设置该网络上的节点地址:

pvecm添加IP-ADDRESS-CLUSTER -link 0 LOCAL-IP-ADDRESS-LINK 0

如果要使用kronosnet传输层的内置冗余,请也使用link1参数。

6.5。删除集群节点

 

在继续操作之前,请仔细阅读该程序,因为它可能不是您想要或不需要的。

从节点移动所有虚拟机。确保没有要保留的本地数据或备份,或相应地保存它们。在以下示例中,我们将从集群中删除节点hp4

登录到其他群集节点(不是hp4),然后发出pvecm nodes 命令来标识要删除的节点ID

hp1pvecm节点

 

会员信息

~~~~~~~~~~~~~~~~~~~~~~

    Nodeid投票名称

         1 1 hp1(本地)

         2 1 hp2

         3 1 hp3

         4 1 hp4

此时,您必须关闭hp4的电源,并确保它不会再次打开(在网络中)原样。

 

如上所述,至关重要的是移除节点之前先关闭其电源 ,并确保它永远不会再按原样(在现有群集网络中)开机。如果按原样打开节点电源,则群集将被破坏,可能很难恢复干净的群集状态。

关闭节点hp4的电源后,我们可以安全地将其从集群中删除。

 hp1pvecm delnode hp4

如果操作成功,则不返回任何输出,只需使用pvecm nodespvecm status再次检查节点列表。您应该看到类似以下内容:

hp1pvecm状态

 

法定信息

~~~~~~~~~~~~~~~~~~

日期:2015420日星期一12:44:28

仲裁提供者:corosync_votequorum

节点数:3

节点ID0x00000001

ID1/8

Quorate:是的

 

投票信息

~~~~~~~~~~~~~~~~~~~~~~

预期投票数:3

最高期望值:3

总票数:3

法定人数:2

标志:Quorate

 

会员信息

~~~~~~~~~~~~~~~~~~~~~~

    Nodeid投票名称

0x00000001 1 192.168.15.90(本地)

0x00000002 1 192.168.15.91

0x00000003 1 192.168.15.92

如果出于某种原因希望该服务器再次加入同一群集,则必须

  • 从头开始在上面重新安装Proxmox VE
  • 然后加入它,如上一节所述。
 

删除节点后,其SSH指纹仍将驻留在其他节点的 known_hosts中。如果在重新加入具有相同IP或主机名的节点后收到SSH错误,请在重新添加的节点上运行一次pvecm updatecerts以更新其整个指纹群集。

6.5.1。无需重新安装即可分离节点

 

不是推荐的方法,请谨慎操作。如果不确定,请使用上述方法。

您也可以从群集中分离节点,而无需从头开始重新安装。但是,从群集中删除节点后,它仍然可以访问共享存储!在开始从群集中删除节点之前,必须先解决此问题。Proxmox VE群集无法与另一个群集共享完全相同的存储,因为存储锁定无法在群集边界上进行。此外,它还可能导致VMID冲突。

建议您创建一个新存储,只有要分离的节点才能访问。仅举几个例子,这可以是NFS上的新导出或新的Ceph池。重要的是,多个群集不能访问完全相同的存储。设置此存储后,将所有数据从节点及其虚拟机移至该节点。然后,您就可以将节点与集群分离了。

 

确保干净共享所有共享资源!否则,您将遇到冲突和问题。

首先在该节点上停止corosyncpve-cluster服务:

systemctl停止pve集群

systemctl停止corosync

在本地模式下再次启动集群文件系统:

pmxcfs -l

删除corosync配置文件:

rm / etc / pve / corosync conf

rm / etc / corosync / *

现在,您可以再次以正常服务方式启动文件系统:

杀死所有pmxcfs

systemctl启动pve集群

现在,该节点已从群集中分离出来。您可以使用以下方法将其从群集的其余节点中删除:

pvecm delnode oldnode

如果该命令失败,则由于退出当前分离的节点时群集中的其余节点失去了仲裁,您可以将期望的票数设置为1作为解决方法:

预期的pvecm 1

然后重复pvecm delnode命令。

现在切换回单独的节点,这里删除旧集群中剩下的所有剩余文件。这样可以确保将节点再次添加到另一个群集中而不会出现问题。

rm / var / lib / corosync / *

由于其他节点的配置文件仍位于群集文件系统中,因此您可能也要清理这些文件。从/ etc / pve / nodes / NODENAME仅仅删除整个目录递归,但是在删除它之前,请检查三遍您使用的目录是否正确。

 

节点SSH密钥仍位于authorized_key文件中,这意味着节点仍可以通过公共密钥身份验证相互连接。应该通过从/ etc / pve / priv / authorized_keys文件中删除相应的密钥来解决此问题 。

6.6。法定人数

Proxmox VE使用基于仲裁的技术在所有群集节点之间提供一致的状态。

法定人数是为了允许在分布式系统中执行操作而必须获得的分布式事务的最小投票数。

仲裁(分布式计算)
来自Wikipedia

在进行网络分区的情况下,状态更改要求大多数节点都处于联机状态。如果群集失去仲裁,它将切换到只读模式。

 

默认情况下,Proxmox VE为每个节点分配一次投票。

6.7。集群网络

群集网络是群集的核心。通过它发送的所有消息都必须按照其各自的顺序可靠地传递到所有节点。在Proxmox VE中,此部分由corosync完成,corosync是高性能,低开销,高可用性开发工具包的实现。它为我们的分散式配置文件系统(pmxcfs)服务。

6.7.1。网络要求

这需要一个时延小于2毫秒(LAN性能)的可靠网络才能正常工作。该网络不应被其他成员大量使用,理想情况下corosync运行在其自己的网络上。请勿将共享网络用于corosync和存储(除非在冗余配置中作为潜在的低优先级回退之用 )。

在设置群集之前,最好检查一下网络是否适合该目的。为了确保节点可以在群集网络上相互连接,可以使用ping 工具测试节点之间的连接性。

如果启用了Proxmox VE防火墙,则将自动生成用于corosyncACCEPT规则-无需手动操作。

 

Corosync在3.0版(在Proxmox VE 6.0中引入)之前使用了多播。现代版本依靠Kronosnet进行集群通信,而集群通信目前仅支持常规的UDP单播。

 

 

您仍然可以通过在corosync.conf 中将传输设置为udpudpu来启用多播或传统单播,但是请记住,这将禁用所有加密和冗余支持。因此不建议这样做。

6.7.2。单独的集群网络

创建不带任何参数的群集时,通常与Web UIVM及其流量共享corosync群集网络。根据您的设置,甚至存储流量也可能通过同一网络发送。建议更改此内容,因为corosync是时间紧迫的实时应用程序。

设置新网络

首先,您必须设置一个新的网络接口。它应该在物理上独立的网络上。确保您的网络满足 群集网络要求

单独创建集群

这可以通过 用于创建新集群的pvecm create命令的linkX参数来实现。

如果您设置了一个附加静态地址为10.10.10.1/25NIC,并且希望通过此接口发送和接收所有群集通信,则可以执行以下操作:

pvecm创建测试 --link 0  10.10 10.1

要检查是否一切正常,请执行:

系统状态同步

之后,按照上述步骤进行操作,以 添加具有单独群集网络的节点

集群创建后分开

如果您已经创建了一个集群并希望将其通信切换到另一个网络,而无需重建整个集群,则可以执行此操作。这种变化可能导致群集中仲裁丢失的持续时间很短,因为节点必须重新启动同步并在新网络上一个接一个地启动。

首先检查如何编辑corosync.conf文件。然后,打开它,您应该看到类似于以下文件:

记录{

  调试:关闭

  to_syslog:是

}

 

节点列表{

 

  节点{

    名称:到期

    nodeid2

    法定投票数:1

    ring0_addr:到期

  }

 

  节点{

    名称:tre

    节点ID3

    法定投票数:1

    ring0_addrtre

  }

 

  节点{

    名称:Uno

    nodeid1

    法定投票数:1

    ring0_addrUno

  }

 

}

 

法定人数{

  提供者:corosync_votequorum

}

 

图腾{

  cluster_nametestcluster

  config_version3

  ip_versionipv4-6

  secauth:开启

  版本:2

  界面{

    链接数:0

  }

 

}

 

ringX_addr实际上指定了corosync 链接地址,名称“ ring”是较旧的corosync版本的残余,保留该版本是为了向后兼容。

您要做的第一件事是在节点条目中添加名称属性(如果您尚未看到它们的话)。这些必须与节点名称匹配。

然后,用新地址替换所有节点的ring0_addr属性中的所有地址。您可以在此处使用纯IP地址或主机名。如果使用主机名,请确保可以从所有节点解析它们。(另请参见 链接地址类型

在此示例中,我们希望将群集通信切换到10.10.10.1/25网络。因此,我们分别替换所有ring0_addr

 

尽管我们建议不要一次更改多个地址,以使发生问题时更容易恢复,但是也可以使用完全相同的过程来更改其他ringX_addr值。

增加config_version属性后,新的配置文件应如下所示:

记录{

  调试:关闭

  to_syslog:是

}

 

节点列表{

 

  节点{

    名称:到期

    nodeid2

    法定投票数:1

    ring0_addr10.10.10.2

  }

 

  节点{

    名称:tre

    节点ID3

    法定投票数:1

    ring0_addr10.10.10.3

  }

 

  节点{

    名称:Uno

    nodeid1

    法定投票数:1

    ring0_addr10.10.10.1

  }

 

}

 

法定人数{

  提供者:corosync_votequorum

}

 

图腾{

  cluster_nametestcluster

  config_version4

  ip_versionipv4-6

  secauth:开启

  版本:2

  界面{

    链接数:0

  }

 

}

然后,在最后检查所有更改的信息是否正确之后,我们将其保存并再次按照edit corosync.conf文件 部分将其生效。

所做的更改将实时应用,因此不必严格重新启动corosync。如果您还更改了其他设置,或者注意到corosync抱怨,则可以选择触发重新启动。

在单个节点上执行:

systemctl重新启动corosync

现在检查一切是否正常:

系统状态同步

如果corosync再次运行,请在所有其他节点上也正确重新启动corosync。然后,他们将在新网络上一个接一个地加入集群成员资格。

6.7.3Corosync地址

(用于通过表示向后兼容性甲corosync链路地址ringX_addr corosync.conf)可以用两种方式来指定:

  • IPv4 / v6地址将直接使用。推荐使用它们,因为它们是静态的,通常不会不慎更改。
  • 主机名将使用getaddrinfo解析,这意味着默认情况下将首先使用IPv6地址(如果可用)(另请参见 man gai.conf)。请记住这一点,尤其是在将现有群集升级到IPv6时。
 

主机名应谨慎使用,因为可以更改其解析的地址而不接触corosync或其上运行的节点-这可能会导致更改地址而未考虑corosync含义的情况。

如果首选主机名,则建议使用专门用于corosync的单独的静态主机名。另外,请确保群集中的每个节点都可以正确解析所有主机名。

由于Proxmox VE 5.1受支持,主机名将在输入时解析。然后,仅将解析的IP保存到配置中。

在较早版本上加入集群的节点可能仍在corosync.conf使用其未解析的主机名。如上所述,将它们替换为IP或单独的主机名可能是一个好主意。

6.8Corosync冗余

默认情况下,Corosync通过其集成的kronosnet层支持冗余网络连接(传统udp / udpu传输不支持此功能)。它可以通过指定一个以上的链接地址或者通过被启用,--linkX 的参数pvecm(而创建集群或添加新节点),或者通过指定多个ringX_addrcorosync.conf

 

为了提供有用的故障转移,每个链接应位于其自己的物理网络连接上。

根据优先级设置使用链接。您可以通过在corosync.conf的相应接口部分中 设置knet_link_priority来配置此优先级,或者在使用pvecm创建集群时最好使用priority参数:

 pvecm create CLUSTERNAME --link0 10.10.10.1priority = 20 --link1 10.20.20.1priority = 15

这将导致首先使用link1,因为它的优先级较低。

如果没有手动配置优先级(或两个链接具有相同的优先级),则将按链接数的顺序使用链接,而数字越小优先级越高。

即使所有链接都有效,只有优先级最高的链接才会看到corosync流量。链接优先级不能混合使用,即具有不同优先级的链接将无法相互通信。

由于除非所有较高优先级都失败,否则较低优先级的链接将看不到流量,因此将甚至用于其他任务(VM,存储等)的网络指定为低优先级链接也成为一种有用的策略。如果情况变得更糟,那么延迟更高或更拥塞的连接可能总比没有连接好。

6.8.1。向现有集群添加冗余链接

要将新链接添加到正在运行的配置,请首先检查如何 编辑corosync.conf文件

然后,将新的ringX_addr添加到nodelist部分中的每个节点。确保X对其添加到的每个节点都是相同的,并且对于每个节点都是唯一的。

最后,如下图所示,在图腾 部分中添加一个新接口,用上面选择的链接号替换X

假设您添加了一个数字为1的链接,那么新的配置文件可能如下所示:

记录{

  调试:关闭

  to_syslog:是

}

 

节点列表{

 

  节点{

    名称:到期

    nodeid2

    法定投票数:1

    ring0_addr10.10.10.2

    ring1_addr10.20.20.2

  }

 

  节点{

    名称:tre

    节点ID3

    法定投票数:1

    ring0_addr10.10.10.3

    ring1_addr10.20.20.3

  }

 

  节点{

    名称:Uno

    nodeid1

    法定投票数:1

    ring0_addr10.10.10.1

    ring1_addr10.20.20.1

  }

 

}

 

法定人数{

  提供者:corosync_votequorum

}

 

图腾{

  cluster_nametestcluster

  config_version4

  ip_versionipv4-6

  secauth:开启

  版本:2

  界面{

    链接数:0

  }

  界面{

    链接数:1

  }

}

按照最后的步骤编辑corosync.conf文件后,将立即启用新链接 。不需要重新启动。您可以使用以下方法检查corosync是否已加载新链接:

journalctl -b -u corosync

通过暂时断开一个节点上的旧链接并确保断开连接后其状态保持在线,测试新链接可能是一个好主意:

pvecm状态

如果看到正常的群集状态,则表示正在使用新链接。

6.9Corosync外部投票支持

本节介绍在Proxmox VE群集中部署外部投票器的方法。配置后,群集可以承受更多的节点故障,而不会违反群集通信的安全属性。

为此,涉及两项服务:

  • 在每个Proxmox VE节点上运行的所谓的qdevice守护程序
  • 在独立服务器上运行的外部表决守护程序。

结果,即使在较小的设置(例如2 + 1节点)中,也可以实现更高的可用性。

6.9.1QDevice技术概述

Corosync Quroum设备(QDevice)是在每个群集节点上运行的守护程序。它根据外部运行的第三方仲裁程序的决定为群集仲裁子系统提供配置的投票数。它的主要用途是允许群集承受比标准仲裁规则所允许的更多的节点故障。可以安全地完成此操作,因为外部设备可以看到所有节点,因此只能选择一组节点进行投票。仅当在接收到第三方投票时所述节点集可以具有(再次)法定人数的情况下,才可以这样做。

当前仅支持QDevice Net作为第三方仲裁程序。它是一个守护程序,如果它可以通过网络到达分区成员,则可以对该群集分区进行投票。在任何时候,它将仅对群集的一个分区投票。它旨在支持多个群集,并且几乎没有配置和状态。新集群是动态处理的,运行QDevice的主机上不需要配置文件。

外部主机具有唯一的要求,即它需要对群集的网络访问权限和可用的corosync-qnetd程序包。我们为基于Debian的主机提供了这样一个软件包,其他Linux发行版也应通过各自的软件包管理器提供一个软件包。

 

与corosync本身相反,QDevice通过TCP / IP连接到群集。该守护程序甚至可以在群集LAN外部运行,并且延迟时间可能超过2毫秒。

6.9.2。支持的设置

对于具有偶数个节点的群集,我们支持QDevices,如果它们应提供更高的可用性,则建议将其用于2个节点群集。对于节点数奇数的群集,我们目前不鼓励使用QDevice。原因是QDevice为每种群集类型提供的票数不同。即使编号的群集也获得了一次额外的投票,这只能增加可用性,即,如果QDevice本身发生故障,我们将处于完全没有QDevice的情况。

现在,使用奇数编号的群集大小,QDevice提供N-1其中N对应于群集节点数。这种区别是有道理的,如果我们只有一票之多,这个集群就会陷入分裂的大脑。该算法将允许除一个节点(当然还有QDevice本身)以外的所有节点都可能失败。这样做有两个缺点:

  • 如果QNet守护程序本身发生故障,则其他任何节点都不会发生故障,否则群集将立即失去仲裁。例如,在具有15个节点的集群中,7可能在集群成为独立之前失败。但是,如果在此处配置了QDevice并且该QDevice自身发生故障,则15个中的单个节点都不会发生故障。在这种情况下,QDevice几乎充当单点故障。
  • 起初,除了一个节点外,所有节点加上QDevice都可能失败,这一事实听起来很有希望,但这可能会导致HA服务的大量恢复,这会使剩下的单个节点过载。而且,仅((N-1/ 2)个节点联机后,ceph服务器将停止提供服务。

如果您了解缺点和影响,则可以自行决定是否应在奇数群集设置中使用此技术。

6.9.3QDevice-Net设置

我们建议运行任何以非特权用户身份向corosync-qdevice投票的后台驻留程序。Proxmox VEDebian提供了已经配置好的软件包。必须对守护程序和群集之间的流量进行加密,以确保Proxmox VE中安全可靠地集成QDevice

首先安装corosync-qnetd您的外部服务器和软件包corosync-qdevice所有群集节点上包。

之后,请确保群集上的所有节点均处于联机状态。

现在,您可以通过在Proxmox VE节点之一上运行以下命令来轻松设置QDevice

pvepvecm qdevice设置

群集中的SSH密钥将自动复制到QDevice。您可能需要在此步骤中输入SSH密码。

输入密码并成功完成所有步骤后,您将看到完成。您现在可以检查状态:

pvepvecm状态

 

...

 

投票信息

~~~~~~~~~~~~~~~~~~~~~

预期投票数:3

最高期望值:3

总票数:3

法定人数:2

标志:Quorate Qdevice

 

会员信息

~~~~~~~~~~~~~~~~~~~~~~

    Nodeid投票Qdevice名称

    0x00000001 1 AVNMW 192.168.22.180(本地)

    0x00000002 1 AVNMW 192.168.22.181

    0x00000000 1Qdevice

这意味着QDevice已设置。

6.9.4。经常问的问题

领带打破

如果是平局,则两个相同大小的群集分区只能看到QDevice,而彼此看不见,QDevice会随机选择其中一个分区并对其进行投票。

可能的负面影响

对于节点数为偶数的群集,在设置QDevice时不会产生负面影响。如果无法正常工作,则与没有QDevice一样好。

QDevice设置后添加/删除节点

如果要添加新节点或从具有QDevice设置的群集中删除现有节点,则需要先删除QDevice。之后,您可以正常添加或删除节点。一旦有了一个节点数再次为偶数的群集,就可以如上所述重新设置QDevice

卸下QDevice

如果使用官方的pvecm工具添加QDevice,则可以通过运行以下命令将其删除:

pvepvecm qdevice删除

6.10Corosync配置

/etc/pve/corosync.conf文件起着Proxmox核心作用VE集群。它控制集群成员及其网络。有关此信息的更多信息,请查看corosync.conf手册页:

男子同步conf

对于节点成员身份,应始终使用Proxmox VE提供的pvecm工具。您可能必须手动编辑配置文件才能进行其他更改。以下是一些最佳实践技巧。

6.10.1。编辑corosync.conf

编辑corosync.conf文件并不总是很简单。每个群集节点上有两个,一个在/etc/pve/corosync.conf,另一个在 /etc/corosync/corosync.conf。在我们的群集文件系统中编辑一个将把更改传播到本地,但反之亦然。

文件更改后,配置将自动更新。这意味着可以集成到正在运行的corosync中的更改将立即生效。因此,您应该始终进行复制和编辑,以免中间的保险箱触发一些不必要的更改。

cp / etc / pve / corosync conf / etc / pve / corosync conf

然后使用您喜欢的编辑器打开配置文件,例如,在任何Proxmox VE节点上预安装了nanovim.tiny

 

始终在配置更改时增加config_version编号,而忽略此配置可能会导致问题。

进行必要的更改后,请创建当前工作配置文件的另一个副本。如果新配置无法应用或以其他方式出现问题,则可以用作备份。

cp / etc / pve / corosync conf / etc / pve / corosync conf 巴克

然后将新的配置文件移到旧的文件上:

mv / etc / pve / corosync conf 新的/ etc / pve / corosync conf

您可以使用以下命令进行检查

系统状态同步

journalctl -b -u corosync

如果更改可以自动应用。如果不是,您可能必须通过以下方式重新启动corosync服务:

systemctl重新启动corosync

如果出现错误,请检查下面的故障排除部分。

6.10.2。故障排除

问题:必须配置quorum.expected_votes

corosync开始失败时,您会在系统日志中收到以下消息:

[...]

corosync [1647][QUORUM]仲裁提供程序:corosync_votequorum无法初始化。

corosync [1647][SERV]服务引擎“ corosync_quorum”由于原因未能加载

    “配置错误:必须配置nodelistquorum.expected_votes

[...]

这意味着无法解析您在配置中为corosync ringX_addr设置的主机名。

未配置时写入配置

如果您需要在没有仲裁的节点上更改/etc/pve/corosync.conf,并且知道您要做什么,请使用:

预期的pvecm 1

这会将预期的投票计数设置为1,并使群集达到法定数量。现在,您可以修复您的配置,或将其还原到上一个工作备份。

如果corosync无法再启动,这还不够。在这里最好在/etc/corosync/corosync.conf编辑corosync配置的本地副本,以便corosync可以重新启动。确保在所有节点上此配置具有相同的内容,以免造成头脑分裂。如果您不确定发生了什么问题,最好请Proxmox社区提供帮助。

6.10.3Corosync配置词汇表

ringX_addr

这为节点之间的kronosnet连接命名了不同的链接地址。

6.11。集群冷启动

显然,当所有节点都脱机时,群集不是定额的。这是电源故障后的常见情况。

 

最好使用不间断电源(“ UPS”,也称为“电池备用”)来避免这种状态,尤其是在您需要HA的情况下。

在节点启动时,将启动pve-guests服务并等待仲裁。一旦达到配额,它将启动所有 设置了onboot标志的客户机。

当您打开节点或电源故障后恢复供电时,某些节点的启动速度可能会比其他节点更快。请记住,来宾启动会延迟到达到法定人数。

6.12。来宾迁移

将虚拟来宾迁移到其他节点是群集中的一项有用功能。有一些设置可以控制此类迁移的行为。可以通过配置文件datacenter.cfg完成此操作,也可以 通过API或命令行参数进行特定迁移。

如果来宾处于联机或脱机状态,或者具有本地资源(例如本地磁盘),则将有所不同。

有关虚拟机迁移的详细信息,请参见 QEMU / KVM迁移章节

有关容器迁移的详细信息,请参见“ 容器迁移一章

6.12.1。迁移类型

迁移类型定义迁移数据是应通过加密(安全)通道还是应通过未加密(不安全)通道发送。将迁移类型设置为不安全意味着虚拟来宾的RAM内容也将未经加密地传输,这可能导致来宾内的关键数据(例如密码或加密密钥)的信息泄露。

因此,强烈建议您使用安全通道,如果您不能完全控制网络并且不能保证没有人正在窃听该通道。

 

存储迁移不遵循此设置。当前,它总是通过安全通道发送存储内容。

加密需要大量的计算能力,因此通常将此设置更改为不安全以实现更好的性能。对现代系统的影响较小,因为它们在硬件中实现AES加密。在可以传输10 Gbps或更高速率的快速网络中,性能影响尤其明显。

6.12.2。迁移网络

默认情况下,Proxmox VE使用发生群集通信的网络来发送迁移流量。这不是最佳选择,因为敏感群集流量可能会中断,并且该网络可能没有节点上可用的最佳带宽。

设置迁移网络参数允许将专用网络用于整个迁移流量。除了内存之外,这还影响脱机迁移的存储流量。

迁移网络被设置为CIDR表示法中的网络。这样的好处是您不必为每个节点设置单独的IP地址。Proxmox VE可以根据CIDR格式指定的网络确定目标节点上的实际地址。为此,必须指定网络,以便每个节点在各自的网络中只有一个IP,但只有一个IP

我们假设我们有一个包含三个独立网络的三节点设置。一种用于与Internet进行公共通信,一种用于集群通信,一种非常快速的通信,我们希望将其用作迁移的专用网络。

这种设置的网络配置可能如下所示:

iface eno1 inet手册

 

公共网络

自动vmbr0

iface vmbr0 inet静态

    地址192.XY57

    网络掩码255.255.250.0

    网关192.XY1

    bridge_ports eno1

    bridge_stp关闭

    bridge_fd 0

 

#集群网络

自动eno2

iface eno2 inet静态

    地址10.1.1.1

    网络掩码255.255.255.0

 

#快速网络

自动eno3

iface eno3 inet静态

    地址10.1.2.1

    网络掩码255.255.255.0

在这里,我们将使用网络10.1.2.0/24作为迁移网络。对于单个迁移,可以使用 命令行工具的migration_network参数执行此操作:

qm migration 106 tre-在线--migration_network 10.1.2.0/24

要将其配置为集群中所有迁移的默认网络,请设置/etc/pve/datacenter.cfg 文件的迁移属性:

#使用专用的迁移网络

迁移:安全,网络= 10.1.2.0 / 24

 

/etc/pve/datacenter.cfg设置迁移网络时,必须始终设置迁移类型

 

你可能感兴趣的:(Proxmox VE 6.0管理指南——6.集群管理器)