如何在 2 节点集群上创建虚拟 IP

如何在 2 节点集群上创建虚拟 IP

我有一个具体的问题,这是我的情况:

1- 2 个带有 drbd - pacemaker - corosync - NFs 的 vms - 这是我的 crm 配置:

node san1
node san2
primitive drbd_res1 ocf:linbit:drbd \
    params drbd_resource="res1" \
    op monitor interval="20s"
primitive fs_res1 ocf:heartbeat:Filesystem \
    params device="/dev/drbd0" directory="/mnt/res1" fstype="ext3"
primitive nfs-common lsb:nfs-common
primitive nfs-kernel-server lsb:nfs-kernel-server
group services fs_res1 nfs-kernel-server nfs-common
ms ms_drbd_res1 drbd_res1 \
    meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
location location_on_san1 ms_drbd_res1 100: san1
colocation services_on_drbd inf: services ms_drbd_res1:Master
order services_after_drbd inf: ms_drbd_res1:promote services:start
property $id="cib-bootstrap-options" \
    dc-version="1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b" \
    cluster-infrastructure="openais" \
    expected-quorum-votes="2" \
    no-quorum-policy="ignore" \
    stonith-enabled="false"

我的问题是:我应该在 NFS 客户端上挂载导出的 NFS,但我不知道我给出的 IP 是什么,我正在考虑使用 2 台机器(使用 eth0:x)创建一个相同的虚拟 IP,这样如果服务器确实出现故障,我就不必在客户端虚拟机中执行任何操作,

这样做有用吗?或者我完全疯了,如果不行你能给我一些建议吗?

我在网上搜索了大约一个小时,什么也没找到,

万分感谢

答案1

是的,这确实有效。多年来,我一直在生产设置中使用这种技术,不是与结合使用NFS,而是与不同的服务结合使用。这是可行的方法。

  • 看看IP地址2资源代理。

  • 利用这一点,你可以得到类似这样的结果:

    primitive p_nfs_vip ocf:heartbeat:IPaddr2 \
            params ip="<your_ip>" nic="<your_interface>" cidr_netmask="<your_netmask>" \
            op start interval="0s" timeout="60s" \
            op monitor interval="5s" timeout="20s" \
            op stop interval="0s" timeout="60s"
    

    (将<...>指令与您的数据交换,以便它们与您的设置相匹配。调整intervaltimeout指令。)

  • 把这个primitive放进你的services group

  • 您必须确保在NFS服务器启动之前 IP 已启动。使用order指令执行此操作,就像您已为servicesvs执行的操作一样drbd

  • 将您的服务器绑定NFS到该IP。

  • 使用此 IP 将客户端连接到NFS服务器。

最后但并非最不重要的:

  • 设置stonith/ fencing。这真的真的真的很重要!阅读. 金钱引言:

隔离是计算机集群中实现 HA(高可用性)的一个非常重要的概念。不幸的是,由于隔离无法为用户提供可见的服务,因此它经常被忽视。[...]

  • 这在具有共享存储的设置中尤其重要,就像您的设置一样。如果没有这个,运行集群,您的数据就会面临风险。

相关内容