cisco Nexus 1000v 4.2(1)SV1(4a) 於 vSphere 5.0 安裝筆記

概念:

這張圖是官方附的網路圖,每一台 vSphere 5 上面都要裝 1000 VEM 的套件,而 1000v 的管理伺服器 VSM 跟 vCenter 則是獨立在這些跑 1000 VEM 的 host 外,要注意透過這樣設置會比較安全,最好這些設備是直接接在同一個實體 switch 上,否則跨 switch 的 VLAN 又要額外設置。

VSM 有分成三個網路卡,Management、Control、Packet,Management 是讓你可以透過 telnet or web 登入 Management 的網卡,相對其他兩個是比較不重要,可以透過實體網路連的到就好。而 Control 跟 Packet 則相對比較重要,這是 VSM 跟 VEM 溝通的橋樑,要確保他們之間的網路可以在運作 Cisco Discovery Protocol 時是順利的,否則後續的操作都會有問題。

因此 VSM 才要獨立在 Host 之外獨立跑在受管理的 VEM 之外,這樣才不會受制於網卡數量,而讓 VSM 連接到 VEM 的連線沒辦法額外透過 vSwitch 建立,否則 Control 連線應該是沒辦法跑在 1000v 的 vSwitch 上,有點雞生蛋,蛋生雞的問題。

安裝步驟:

  1. 替需要跑 dvs 的 vSphere host 安裝 cisco 1000v update (VEM),如果安裝成功應該可以在 host 用 vem status 檢查狀態。
  2. 用 ovf 佈署一台 1000v VM(VSM)
  3. 透過 1000v VEM web-java 介面初始化設定,包含連接 vCenter
  4. 登入(telnet or ssh) 1000v 用指令管理 distributed vSwitch
    1. show modules (檢查連接上的 vem 如果成功應該會自動加入 VEM)
    2. install license (安裝授權)
    3. port-profile type ethernet my-uplink ( 設定 uplink portgroup )..
    4. port-profile type vethernet my-portgroup ( 設定 port group )..

安裝 VEM

$ esxcli software vib install -d /vmfs/volumes/4f9bd234-8fe1e3a2-2f1d-e41f131cf84a/VEM500-201204133102-BG-release.zip

實際在安裝的時候比較需要注意的是當 1000v 開起來以後,可以進去 show module 查看有多少 VEM 自動連上了,他好像是透過 cisco discovery protocol 去自動尋找同個 switch 上的主機,只要 control 連線有辦法連到 VEM 應該就可以在 show module 裡面看到東西了,否則在 VEM 上面怎麼設 port-group 都不會通才對。
而且在初始化的時候會要求你選擇三種連線對應的 port-group 與 vlan 這邊要非常小心~我初始化了很多次才把設定弄對~我的 VSM 裝在與要管理的 VEM 不同主機上,我 VSM 的網路要接到有設定特定 vlan 的 port-group 上,然後再把 1000v uplink 的 port-profile 設成相同的 vlan,這個設定完成以後才會抓到。

例如 control vlan 設定 100 的範例:

 # 用來連接 control 的 uplink 網卡接上去以後才可以從 show module 看到 VEM
 $ port-profile type ethernet uplink
 (config-port-profile) $ vmware port-group
 (config-port-profile) $ switchport mode trunk
 (config-port-profile) $ switchport trunk allowed vlan all
 (config-port-profile) $ no shutdown
 (config-port-profile) $ system vlan 100
 (config-port-profile) $ state enabled
 (config-port-profile) $ exit
 # 無 vlan 的 port-group 要設 vlan 應該是加上 system vlan x
 $ port-profile type vethernet portgroup
 (config-port-profile) $ vmware port-group
 (config-port-profile) $ switchport mode access
 (config-port-profile) $ switchport trunk allowed vlan all
 (config-port-profile) $ no shutdown
 (config-port-profile) $ state enabled
 (config-port-profile) $ exit

1000v 的設定都在 VEM 上做,在 vCenter 上面只能檢視一些相關的資料與設定 VM 與 port-group 的對應, 1000v 比較強項的地方應該是可以透過 cisco 的作業系統來管理虛擬網路,而且能對相同 host 內 vm 之間做網路管制,而且能讓管理網路跟管理系統的人分工不互相影響。

瀏覽與刪除 dVS 的範例

 # 檢視跟 vCenter 的連線資訊
 $ show svs connection
connection vcenter:
  ip address : 1.2.3.4
  remote port : 80
  protocol : vmware-vim https
  ...
 $ config
 VSM (config)# svs connection vcenter
 # 刪除 dvs
 VSM (config-svs-conn)# no vmware dvs
 # 中斷 svs 連線
 VSM (config-svs-conn)# no connect
 VSM (config-svs-conn)# exit
 # 移除跟 vCenter 的連線,可以重跑 web 的初始化精靈
 VSM (config)# no svs connection vcenter

 隔了許久在設一次
這次把 vlan 都設成 1,設定都如上,本來是設 100 怎麼樣都不通,不知道是有哪裡弄錯,後來把 port-profile uplink 的 system vlan 設成 1 以後突然就可以了…真囧,只是代表那 system vlan 很重要。

額外學到一點是 trouble 手冊裡面 VSM and VEM Modules 的章節有超多指令可以慢慢測試是什麼問題,從 vsm vem 的角度一步一步檢查,之前是連 uplink 都不通,這次是 uplink 偵測到了。

最重要的是在 vsm 上 show module 會看到 vem。或者是檢查 portgroup 裡面的 uplink 跟 vmkernl 的 port 是否有綠色,這次一開始是 uplink 綠色了,但是 vmkernel 不會通,vem 跟 vsm 接起來以後才會通,大概就是 control 跟 packet 這兩條路的問題。

port 的驚嘆號裡面也有一些資訊能看,如果是一般的 portgroup 通常就是 port 被 blocked 住(或許代表 packet 還沒通?),或是 uplink port 沒有 cisco discovery protocol 資訊的問題(control 沒通?)。

列出一些 vem 能看的指令正確的狀態


$ vem status

VEM modules are loaded

Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch0 128 4 128 1500 vmnic0
vSwitch1 128 1 128 1500
DVS Name Num Ports Used Ports Configured Ports MTU Uplinks
nexus 256 13 256 1500 vmnic1
VEM Agent (vemdpa) is running

$ vemcmd show port
 LTL VSM Port Admin Link State PC-LTL SGID Vem Port
 18 Eth3/2 UP UP FWD 0 vmnic1
49 Veth1 UP UP FWD 0 vmk1

$ vemcmd show card
Card UUID type 2: 22f0c278-f963-11df-a639-e41f131cd438
Card name: 1-2-3-4
Switch name: nexus
Switch alias: DvsPortset-0
Switch uuid: d7 b5 10 50 bc 8e 97 8a-0a f6 cd b9 7f 3b 87 16
Card domain: 1
Card slot: 3
VEM Tunnel Mode: L2 Mode
VEM Control (AIPC) MAC: 00:02:3d:10:01:02
VEM Packet (Inband) MAC: 00:02:3d:20:01:02
VEM Control Agent (DPA) MAC: 00:02:3d:40:01:02
VEM SPAN MAC: 00:02:3d:30:01:02
Primary VSM MAC : 00:50:56:90:29:4e
Primary VSM PKT MAC : 00:50:56:90:29:50
Primary VSM MGMT MAC : 00:50:56:90:29:4f
Standby VSM CTRL MAC : ff:ff:ff:ff:ff:ff
Management IPv4 address: 1.2.3.4
Management IPv6 address: 0000:0000:0000:0000:0000:0000:0000:0000
Secondary VSM MAC : 00:00:00:00:00:00
Secondary L3 Control IPv4 address: 0.0.0.0
Upgrade : Default
Max physical ports: 32
Max virtual ports: 216
Card control VLAN: 1
Card packet VLAN: 1
Card Headless Mode : No
 Processors: 16
 Processor Cores: 8
Processor Sockets: 2
 Kernel Memory: 20959704
Port link-up delay: 5s
Global UUFB: DISABLED
Heartbeat Set: True
PC LB Algo: source-mac
Datapath portset event in progress : no

# 可以檢查 control mac, packet mac ,這個通了不代表可以了,那如果不通就..
$ vem-health  check  00:02:3d:10:01:02
VSM Control MAC address: 00:02:3d:10:01:02
Control VLAN: 1
DPA MAC: 00:02:3d:40:01:02
The VEM-VSM connectivity seems to be fine.

刪除幽靈 dvs :

 如果沒有按照上述的刪除 dvs 步驟來 no vmware dvs,就把 VSM 砍掉就會產生一個無法修改的幽靈 dvs,超礙眼的,只是剛開始不懂的時候一定會不小心犯這個錯誤,目前已經累積兩名受害者。

後來找到這個 removing-orphaned-nexus-dvs 才知道關鍵字是 orphaned dvs,按照他的步驟我就順利的移除了這個失去控制的 dvs 囉!

小紀錄一下文章內的步驟

  1. 建立一個新的 VSM (借屍還魂用)
  2. 初始化他去建立一個新的 dvs 
  3. 用 no vmware dvs 刪除此 VSM 建立的 dvs,但是不去除連線
  4. 透過 web mob 找到舊的 extension-key,跟新的 extension-key
  5. 透過網頁把新的 extension-key  unregister
  6. 設定好 VSM 的 datacenter-name 跟 hostname 變成幽靈 dvs name 
  7. 去 VSM 暫時中斷與 vCenter 的連線把 extension-key 改成舊的
  8. 去 VSM 網頁抓有替代過後 extension-key 的 extension.xml 抓下來到 vCenter plugin 註冊
  9. VSM 重新連線(svs connection;connect;)
  10. 成功借屍還魂
  11. 不爽就把幽靈 dvs 刪除吧!(svs connection;no vmware dvs)
參考資源:
sysadmintutorials step by step 教學

part-1 part-2 part-3

官方影片教學 vimeo
官方文件
Cisco Nexus 1000V Release 4.2(1)SV1(4a)