1. 程式人生 > >如何在異構環境下(兩個伺服器的Network Interface名稱不一致)建立VCS NIC資源

如何在異構環境下(兩個伺服器的Network Interface名稱不一致)建立VCS NIC資源

VCS的NIC資源是一個非常常用的資源,若你使用VCS做浮動IP,則定會使用到NIC資源。
在一些環境下,VCS叢集節點是異構的,意思就是伺服器的配置不是完全一致的,通常存在的就是網絡卡名稱不一致,如一臺伺服器svr1的網絡卡為bge0並對應的作業系統上的Network Interface為eth0;另外一臺伺服器svr2的網絡卡為bge1並對應作業系統上的Network Interface為eth1。
這時候若你需要在這兩個網絡卡上做浮動IP地址,則要求NIC資源在svr1上的時候繫結在eth0上,倒換到svr2上的時候繫結在eth1上。

我們先看一下srv1上的VCS NIC資源的定義:

NIC mynic {
Device = eth0
NetworkHosts = {192.168.128.100}
}


NIC資源有兩個基本屬性:Network Interface 名稱和IP地址。

我們會發現,上面這麼定義是沒法倒換到svr2的,因為svr2上不存在eth0,即使存在也不是用來繫結浮動IP地址的。

我們再深入進去會發現,VCS的資源有Global和PerSystem兩種:Global是全域性通用的,整個叢集中所有節點都是同一個定義;PerSystem是每個節點可以有不一樣的定義。因此上面的問題需要定義PerSystem這種資源來解決。

PerSystem資源定義為:
svr1上:

NIC mynic {
Device @svr1 = eth0
NetworkHosts = {192.168.128.100}
}


svr2上:

NIC mynic {
Device @svr2 = eth1
NetworkHosts = {192.168.128.100}
}

通過上面的定義,我們就做成了srv1上面的NIC資源是使用eth0來繫結192.168.128.100 IP地址;svr2上面的NIC資源是使用eth1來繫結192.168.128.100 IP地址。也就是說:從svr1倒換到svr2後VCS會繫結192.168.128.100 IP地址到svr2上的eth1上,反之亦然。

通過VCS命令完成上面操作的程式碼:

#將VCS配置檔案設定為可寫
haconf -makerw

#建立資源組
hagrp -add mygrp

#在mygrp資源組中建立mynic的NIC資源
hares -add NIC manic mygrp

#將mynic資源中的Device屬性設定為local(PerSystem),否則下面的命令會執行失敗
hares -local mynic Device

#修改mynic資源中Device屬性在svr1上為eth0
hares -modify mynic Device eth0 -sys svr1

#修改mynic資源中Device屬性在svr2上為eth1
hares -modify mynic Device eth1 -sys svr2

#將修改生效並將VCS配置檔案設定為只讀
haconf -dump -makero