Submitted by micmic on
先解釋點解用ovs-vsctl打任何command,一reboot就乜Q都無嗮。事因係openvswitch呢家嘢係被虐待狂,好喜歡比人控制。而XCP就係幕後黑手,當XCP啟動時,就會清空任何XCP嘅setting,任何用自己個database去setup嘅network。
好啦!問題好明顯,就係點樣喺XCP設定network。咁小弟就講幾招,夠你呃餐飯食架啦。
若貴server有兩個LAN(依家一般都有),又有個有翻咁上下嘅switch(無去淘寶或eBay買啦)想用盡佢點解決?行bonding + trunk 是也。唔好研究安全問題,通都唔通咁安全同唔安全係無分別嘅,呢個哲學問題,唔係技術問題。
刪除舊config
盤古初開,安裝好Xen同XCP之後,個局應該係有xenbr0, xenbr1,... 視乎有幾個LAN PORT。要delete佢都要費幾大氣力。先睇睇有幾多LAN PORT:
xe pif-list
你要做嘅就係產咗所有萬惡嘅xenbr?,可能要重複執行下面幾個command,參數不離上面pif list嘅結果,可能會有啲warning或error,唔好理啦,盡做:
xe pif-unplug uuid=...
xe network-destroy uuid=...
xe pif-forget uuid=...
xe pif-introduce device=eth? # 呢個係delete過龍後再搵翻啲LAN PORT出嚟嘅方法
可以嘗試以下script,唔包生仔!
netdev=eth
ip -o link | gawk -F ': +' '{print $2}' | grep ^${netdev} > /var/tmp/ethlist
for dev in `cat /var/tmp/ethlist`
do
nid=$(xe pif-list device=$dev --minimal)
nwid=$(xe pif-list device=eth0 | grep network-uuid | gawk -F ': ' '{print $2}')
echo try to remove $dev configuration nic=$nid, network=$nwid
xe pif-unplug uuid=$nid
xe pif-forget uuid=$nid
xe network-destroy uuid=$nwid
done
建立Bonding
喺建立一個Bonding前,先要建立一個Network,XCP乜Q嘢都要有個Network嚟承托,所以先做network後做bonding。而bonding最緊要就係pif-uuids,將所有真LAN PORT入嗮去(估你都唔多,得嗰兩個)。
SWID=$(xe network-create name-label=vswitch name-description="Master Switch on $HOSTNAME")
eth0=$(xe pif-list device=eth0 --minimal)
eth1=$(xe pif-list device=eth1 --minimal)
# more...
bond=$(xe bond-create network-uuid=$SWID mode=balance-slb pif-uuids=$eth0,$eth1)
其中balance-slb係好一般嘅用法,兩條cable可以接兩個switch行redundant都得。而另一個可以考慮嘅mode係lacp,呢家嘢要個switch支持lacp(802.3ad)先得。有要識得set,用port-channel group 1 mode passive比較好。
當搞掂條大水喉,就要分身家,建立vlan,喺vlan上面辦實事。假設public network用vlan2,private network用vlan3:
bondid=$(xe pif-list device=bond0 network-uuid=$SWID --minimal) publicnet=$(xe network-create name-label=publicnet) xe vlan-create network-uuid=$publicnet vlan=2 pif-uuid=$bondid privnet=$(xe network-create name-label=privnet) xe vlan-create network-uuid=$privnet vlan=3 pif-uuid=$bondid
Set IP
咁樣搞咗三個network出嚟,vswitch, publicnet, privnet。通過 xe pif-list device=bond0 就可以見到你咋vlan。好啦!要set ip啦,ip係set喺pif度嘅,所以教大家點搵。
# management network NETWORK=vswitch nwid=$(xe network-list name-label=$NETWORK --minimal) nic=$(xe pif-list network-uuid=$nwid --minimal) xe pif-reconfigure-ip uuid=$nic IP=192.168.1.201 netmask=255.255.255.0 gateway=192.168.1.1 DNS=8.8.8.8,8.8.4.4 mode=static
# private network NETWORK=privnet nwid=$(xe network-list name-label=$NETWORK --minimal) nic=$(xe pif-list network-uuid=$nwid --minimal) xe pif-reconfigure-ip uuid=$nic IP=10.5.5.201 netmask=255.255.192.0 mode=static
set完至講,要記住只要個 network set 好咗就得,唔一定要IP嘅,要唔要呢個係哲學問題。理論上只要搞翻通個 management network 可以被管理得倒就OK。
可以自己寫個 script 去處理呢四句偈。
清洗 O/S network configuration
呢個好重要,打開/etc/network/interfaces,將已經歸到XCP管嘅nic全部註釋。跟著reboot一次,必須經歷一下考驗。假如網絡能正常操作,咁你就發達啦,至於點樣至係正常操作,就要自己諗諗。
- 4425 reads