別以爲真懂Openstack: 虛擬機創建的50個步驟和100個知識點(5)

八、KVM

image

這一步,像virsh start命令一樣,將虛擬機啓動起來了。虛擬機啓動之後,還有很多的步驟需要完成。

步驟38:從DHCP Server獲取IP

有時候往往數據庫裏面,VM已經有了IP,很多人就認爲虛擬機就得到了IP,可是總是連不進去,不知從何入手,其實界面上能看到VM的IP和VM真正從DHCP獲得IP是兩回事情。

步驟39:cloud-init連接Metadata Server,並注入Key

Metadata Server有很複雜的架構,cloud-init連接Metadata Server,很容易就會不成功,如果不成功,Key無法注入,所有常出現IP能夠ping通,但是就是ssh不上去的情況。

../../_images/metadata_workflow.png

http://niusmallnan.github.io/_build/html/_templates/openstack/metadata_server.html

另外推薦孔令賢的blog

 

【OpenStack】metadata在OpenStack中的使用(一)

【OpenStack】metadata在OpenStack中的使用(二)

步驟40:通過VNC可以看到啓動過程

VNC是一個很好的東西,尤其是在VM沒有得到IP的時候,你可以通過VNC連進去,用用戶名密碼登陸,然後調試爲什麼DHCP失敗。

VNC也是比較複雜的東西,推薦文章

nova vnc proxy基本原理 

nova vnc proxy

步驟41:添加一個FLoating IP,可以通過Floating IP SSH進去。

要想Floating IP成功,除了IPTables NAT要正確,br-ex也需要正確配置。

步驟42:在VM裏面可以訪問外網

要做到這一點,除了gateway要配置正確,dns server也需要正確配置。

如果虛擬機網絡有問題,那是很頭疼的時候,建議通過下面的流程進行調試:

  1. Security Group全部打開,這是最基本的,但是很多人容易忘記,結果tcpdump了半天,發現security group沒打開,真的很冤

  2. 通過界面查看虛擬機的log,也可以在compute節點上查看console.log文件,看看裏面是否有DHCP獲取IP成功的日誌,如果有,還不錯,如果沒有就慘了

  3. 如果虛擬機連不上DHCP Server,則需要準備一個不使用metadata server,而是用用戶名密碼可以登錄的image,通過VNC登錄進去,如果VNC也不通,就需要先調試VNC,這是訪問虛擬機最後的方法了。

  4. 通過VNC登錄進去後,就可以通過命令行運行dhclient,來重啓連接DHCP Server

  5. 在運行dhclient之前,需要通過ovs-vsctl show和brctl來查看,各個網卡和bridge之間關係是否正確,tunnel之間是否能夠通,網卡是否都處於up的狀態

  6. 如果從虛擬機的虛擬網卡到DHCP Server的網卡一路都是正確的,則需要查看br-tun上ovs-ofctl dumpflows查看flows規則,是否對包的改寫正確,是否有正確的規則

  7. 可以再dhclient運行的時候,從compute節點上的網卡和bridge,一個個進行tcpdump,看到底哪個網卡或者bridge沒有收到包,收到的包裏面的VLAN ID等是否正確,問題往往就是這裏

  8. 如果VM能從DHCP Server獲得IP,則好事成了一半,接下來換一個有cloud-init的image,看metadata server能夠連接成功,能夠注入key,也是通過console.log來看

  9. 如果metadata server不能連接成功,就需要順着metadata server的整個流程,一個一個模塊看,看每個模塊的log,端口是否正確,是否收到請求,也可以在VM裏面用curl來模擬metadata server的請求

  10. 如果metadata server能夠連接成功,key成功注入,下一步需要從namespace裏面看是否能夠ping通,能夠ssh

  11. 如果namespace裏面能夠成功,則在network節點上,ping floating ip和ssh,是否能夠成功,如果不成功,看br-ex的網卡是否添加正確,是否配置了ip,路由表是否正確,namespace裏面floating ip的iptables規則是否添加正確

  12. 在network節點上能夠ssh到floating ip,則需要從其他節點上ssh,如果不成功,可能br-ex的網址配置有問題,很可能是br-ex添加的物理網卡不是混合狀態,也可能是路由配置有問題,對於floating ip所在的網段,不指向network節點

  13. 如果floating ip能夠成功,則需要進去VM裏面運行apt-get update,如果不可以,看能否ping通openstack裏面的gateway,然後看能否ping通物理網絡環境的gateway

  14. 最後要看DNS Server是否配置正確,是否能夠ping通,如果能,apt-get update運行成功,則虛擬機才叫基本可用。

所謂基本可用,就是能運行簡單的命令沒有問題,但是,如果想裏面運行程序,則需要保證kvm的性能

推薦文章http://www-01.ibm.com/support/knowledgecenter/linuxonibm/liaat/liaatkvm.htm

而且虛擬機之間是共享物理機的資源的,我們必須對虛擬機的QoS進行控制,可用通過cgroup來進行控制

推薦文章

[轉] Quality Of Service In OpenStack 

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/

虛擬機在一個物理機上運行,當資源緊張的時候,可能需要live migration到另外的機器上

QEMU KVM Libvirt(12): Live Migration 

九、Cinder

image

 

 

 

虛擬機創建完畢,我們常會attach一個volume,當然也可以boot from volume,這樣volume裏面的數據不會隨着VM的消失而消失。

步驟44:Cinder API請求創建一個Volume

步驟45: Cinder Scheduler在多個Cinder Volume裏面選擇一個,也是先Filter再weighting的過程,可以根據總空間的大小,也可以根據分配的情況

步驟46:Cinder Volume創建一個iscsi target

步驟47:Cinder Volume創建一個LVM volume,加入iscsi target

步驟48:compute節點連接iscsi target,從而volume出現在compute節點上

步驟49:將compute節點上的volume attach到虛擬機上

對於Cinder

 

手動模擬attach cinder volume的過程

nova boot from volume

Cinder架構

image

對於LVM,推薦文章

 

LVM學習筆記

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/

[轉] Linux 內核中的 Device Mapper 機制

http://www.ibm.com/developerworks/cn/linux/l-devmapper/

 

image

image

對於ISCSI

推薦

Using iSCSI On Ubuntu 10.04 (Initiator And Target)

Linux tgtadm: Setup iSCSI Target ( SAN )

image

image

Cinder跟其他的存儲

image

image


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章