PVE 疑難雜症…

  • PVE 2.0
  • 叢集設定
  • 叢集的服務基於:cman(corosync)
  • 叢集的檔案系統:pmxcfs
  • 每台叢集的設定檔:/etc/cluster/cluster.conf
  • PVE qemu/kvm 管理工具:qm

管理與確認指令:

$ pvecm status
$ pvecm nodes or cman_tool nodes

$ corosync-quorumtool -l
$ corosync-quorumtool -s

$ cat /var/log/syslog
$ cat /var/log/cluster/corosync.log

$ service cman restart
$ service pve-cluster restart
$ service node-manager restart

問題:

  • Corosync 因為 Quorum 開不起來,訊息是  Unable to load new config in corosync,代表 該台主機的 /etc/cluster/cluster.conf 內容可能出問題了,可以比較一下節點間該檔案的差異,如果不一樣可以手動同步。
  • 叢集運作是基於 multicast ,因此需要在同一個 layer 2 network,而且 switch 要支援與設定啟用群播功能(預設可能已經開了)。

Glab tomato install

Glab tomato Project : https://github.com/dswd/ToMaTo

ubuntu

$ apt-get install python-setuptools apache2-utils
# install south 0.7.3
$ wget http://www.aeracode.org/releases/south/south-0.7.3.tar.gz
$ tar zxvf south-0.7.3.tar.gz
$ cd south
$ ./setup.py install
# install django 1.3 https://www.djangoproject.com/download/
$ wget https://www.djangoproject.com/download/1.3.1/tarball/
$ tar zxvf Django-1.3.1.tar.gz  -O Django-1.3.1.tar.gz
$ cd Django-1.3.1
$ ./setup.py install

# install ToMaTo
$ git clone https://github.com/dswd/ToMaTo.git
$ mkdir /etc/tomato /var/lib/tomato
$ cp ToMaTo/web/web.conf.example /etc/tomato/web.conf
$ cp ToMaTo/backend/backend.conf.example /etc/tomato/backend.conf
# login account and passwd
$ htpasswd -d -c /etc/tomato/users admin
# run backend
$ cd ToMaTo/backend/
$ ./server
# run web 
$ cd ToMaTo/web/
$ ./manage runserver $IP:$PORT

Open vSwitch 架構概觀

看了 open vswitch 也有一陣子了,斷斷續續也在自己的 wiki 上亂寫了一些東西,但是一直覺得自己不夠熟,也不知道從哪裡開始整理,先在這寫一些概念性的解釋…

官方資料內有一個關於 porting 的文件,裡面畫了實作上的一些抽象元件,幫助你決定要移植 ovs 時,要改寫哪個部份,如下圖。一開始看這張圖應該會有點霧煞煞,對 ovs 的很多概念還不熟悉,不知道從哪裡開始瞭解,看完文件的解釋還是不太懂。

                            |   +-------------------+
                            |   |    ovs-vswitchd   |<-->ovsdb-server
                            |   +-------------------+
                            |   |      ofproto      |<-->OpenFlow controllers
                            |   +--------+-+--------+  _
                            |   | netdev | |ofproto-|   |
                  userspace |   +--------+ |  dpif  |   |
                            |   | netdev | +--------+   |
                            |   |provider| |  dpif  |   |
                            |   +---||---+ +--------+   |
                            |       ||     |  dpif  |   | implementation of
                            |       ||     |provider|   | ofproto provider
                            |_      ||     +---||---+   |
                                    ||         ||       |
                             _  +---||-----+---||---+   |
                            |   |          |datapath|   |
                     kernel |   |          +--------+  _|
                            |   |                   |
                            |_  +--------||---------+
                                         ||
                                      physical
                                        NIC

我自己則是從他安裝完所提供的各種工具與重要背景服務的角度開始,由此開始熟悉 ovs 的概念,感覺這是一個比較好的入門點。我畫了一張類似的圖。

            +---------+  +----------+  +---------+   +---------+
            |ovs-ofctl|  |ovs-appctl|  |ovs-vsctl|   |ovs-dpctl|
            +---------+  +----------+  +---------+   +---------+
                   ^       ^ USER SPACE TOOLS ^           ^
           +-------|-------|------------------|-- --------|----+
                   v       v                  v           |
                +--------------+       +----------------+ |
                |              |       |                | |
                | ovs-vswitchd | <---> |  ovsdb-server  | |
                |              |       |                | |
                +--------------+       +----------------+ |
                      ^     USER SPACE DAEMONS            |
           +----------|-----------------------------------|----+
                      v        KERNEL SPACE               v
                +------------------------------------------+
                |                                          |
                |                  datapath                |
                |                                          |
                +------------------------------------------+

datapath – openvswitch_mod.so 當 ovs 以 kernel 模組運作時在核心中的單元,主要處理在核心交換封包到各介面的工作。datapath 應該也能當作 vswitch 在 kernel 中的 instance,可以有好幾個 datapath 。

USER SPACE DAEMONS – 開啟 ovs 需要啟動的兩個背景程式

  • ovsdb-server:用來儲存所有 ovs 設定資料的簡易資料庫,設定完會看情況通知 datapath(kernel)同步狀態,統計資料也會存在這 。所有能設定的欄位跟解釋都在這份文件內。
  • ovs-vswitchd:用來跟 openflow 控制器溝通與 ovsdb 溝通。可以讓你設定你的 vswitch 要跑在什麼模式。

USER SPACE TOOLS:

  • ovs-vsctl : 對 ovsdb 操作,操作指令比較具有語意,會幫你轉化成 ovsdb 看的懂的語法,例如建立 bridge、指定 bridge port 的對應、設定 Bridge Port Interface etc
  • ovs-dpctl : 管理 datapath 的工具,大部分資訊都是透過 netlink 反應出 datapath 目前的狀態,也可以直接操作 datapath 中目前的 flow。
  • ovs-ofctl : openflow switch 管理工具,可以操作與 openflow 相關的設定,是設定 ovs-vswitchd 的不是 datapath 的。在這裡設定一些靜態的 flow 之後會被轉化更實體的 flow 同步到 datapath 中。例如預設的 flow 是 rule=*,action=normal,就是把 ovs-vswitchd 當成一個 learning switch。設了 controller 以後就是讓 flow 再間接去問控制器,再從控制器產生 flow 存放到 ovs-vswitchd 內,ovs-dpctl 跟 ovs-ofctl 都可以用 dump-flows 印 flows 出來看 。
  • ovs-appctl : ovs-vswithd 的管理工具,可以跟 ovs-vswitchd 程序溝通,所以要指定的是 ovs-vswitchd 的 pid。例如可以用來印出 forwarding table。

找到畫這圖的有趣的軟體:http://www.asciiflow.com/

vmware nested ESXi

ESXi 5 開始支援在 vm 裡面跑 vm 只是在新增 vm 的時候 OS 沒有辦法選 ESXi,只能在修改的時候才改 OS type,這個選項會影響到 vm 內 cpu 的支援,一定要改成 ESXi 才能在裡面跑 vm。

1.
先要把 vSphere host 的此檔案增加一行
/etc/vmware/config
vhv.allow = “TRUE”
2.
CLUSTER 的 EVC 好像會有影響,不太確定為了避免先關閉
disable EVC
3.
HOST 重開機
4.
建立 VM,建立完以後再從設定把 OS 改成 ESXi,如下圖

5.
在 vm 內輸入 kvm-ok 說你現在是在正確的狀態,否則就是上述幾點有地方需要再確認,在 vm 內安裝作業系統例如 ubuntu,裝 qemu、kvm、libvirt-bin、virt-manager

6.
用 virt-manger 安裝 nested-vm ,這邊要注意的是放入光碟後可能不會很順利的進入安裝畫面,cpu 會滿載而且畫面一直黑掉沒反應,要一直持續亂按 enter 就會進去安裝畫面了…。會讓人以為壞掉的慘況如下~

7.
用 bridge 把 KVM 網路設好以後網路還是有問題,nested-vm 會沒辦法上網。現象是當 nested-vm 發出廣播,目標主機回應的封包沒辦法透過 vmware 進到 nested-vm 裡面,應該是 vmware vswitch 設計上沒有考量到這種現象,可能他不是單純的 learning swtich。所以把 vmware 的 vm 網卡所在的 port group 改成 promisc~就可以運作了~只是 host 的封包就會流竄到 vswitch 內了。

參考
http://www.vpsee.com/2012/02/how-to-run-kvm-nested-vms-on-vmware-esxi/ – how-to-run-kvm-nested-vms-on-vmware-esxi
http://communities.vmware.com/message/2021380 – ESXi 5 and nested VM’s
http://communities.vmware.com/community/vmtn/bestpractices/nested – 官方討論