如何在異構環境下(兩個伺服器的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