TLDR:
1、修改/etc/pve/corosync.conf中ring_addr地址。
2、修改网卡配置。
3、重启各节点pve-cluster服务。
有趣的事
正常的话上面这几步就可以完成集群节点IP修改,如果你的环境有涉及DNS名称的话记得修改相关记录。但是我的环境有点特殊,导致过程异常惊险,事情发生在PVE节点管理地址从缺省vlan改到vlan200时发生的,所以顺便提一下配置vlan接口的管理地址的事情。
修改corosync.conf
关于集群相关功能,是由pve-cluster服务管理,而集群信息,又是由corosync服务同步的。proxmox某个wiki里写着,集群创建之后,将无法修改集群网络、主机名等配置,事实上是可以的,正常的话按照上述步骤操作就行。
不过要注意一些特殊情况,我们都知道共识算法下,2个节点是无法选举出新master的,为了防止数据不一致,各自都会进入只读状态。
因此,如果你没有修改corosync.conf中的节点ring_addr地址就去改了网卡地址,而正好又是2节点集群的话,就会陷入两边都只读无法修改corosync.conf的情况。
我的做法是再给节点加回原来的ip,集群状态恢复正常,修改ring_addr后,集群会自动同步新的配置。
使新配置生效
这个时候,pvecm status里membership info下节点的name还是没有更新,按照论坛里pve管理员的说法,需要重启各个集群节点。
但是我的环境下,集群的工作节点是PXE启动的,PXE服务的虚机也在PVE平台内,意味着我的无盘节点一旦重启,就无法再次引导启动。而集群状态异常,只读状态下的集群无法启动PXE服务虚机,陷入循环依赖。虽然我相信就算无盘节点起不来了,肯定有办法解决,毕竟虚机的磁盘存在ceph rbd里,不过恐怕会很麻烦。
然而其实只要重启pve-cluster服务即可。
所以,不要运行双节点集群。
Proxmox配置管理平面使用vlan接口
之前管理平面是放在vlan1下的,这次决定给他迁移到服务器网段去,聊聊pve网络的事情。
7.0的时候pve开始支持sdn功能,不过没有去尝试,还是用的linux bridge。
bridge和esxi的vswitch的逻辑差不多,bridge的bridge port是上行接口连接到物理网卡接口。vlan接口的raw device可以接网卡接口也可以接bridge。如果是接bridge,要启用bridge的 vlan aware,它翻译成vlan感知。
pve的页面表单逻辑比较奇怪,如果你创建linux vlan,vlantag这栏是无法修改的,只能通过修改name为vlan100才能将vlanid设置成100.同样,raw device可以通过设置name值为vmbrname.vlanid的格式,这些都是直接把debian的接口配置文件的语法拿过来用了,就是缺少提示,有点反人类。当然你也可以直接修改配置文件然后ifreload -a。
后续
之后会把基础设施类的服务单独放在一个故障域,不然有点all in boom的意思了。