OpenStack安裝部署管理中常見問題解決方法

1、網絡問題-networkhtml

更多網絡原理機制能夠參考《OpenStack雲平臺的網絡模式及其工做機制》。
node

1.一、控制節點與網絡控制器區別web

OpenStack平臺中有兩種類型的物理節點,控制節點和計算節點。控制節點包括網絡控制、調度管理、api服務、存儲卷管理、數據庫管理、身份管理和鏡像管理等,計算節點主要提供nova-compute服務。數據庫

控制節點的服務能夠分開在多個節點,咱們把提供nova-network服務的節點稱爲網絡控制器。ubuntu

 

1.二、OpenStack中nova-network的做用swift

 

OpenStack的網絡由nova-network(網絡控制器)管理,它會建立虛擬網絡,使主機之間以及與外部網絡互相訪問。windows

OpenStack的API服務器經過消息隊列分發nova-network提供的命令,這些命令以後會被nova-network處理,主要的操做有:分配ip地址、配置虛擬網絡和通訊。centos

1.三、OpenStack中Flat與FlatDHCP區別api

Flat(扁平): 全部實例橋接到同一個虛擬網絡,須要手動設置網橋。瀏覽器

FlatDHCP: 與Flat(扁平)管理模式相似,這種網絡全部實例橋接到同一個虛擬網絡,扁平拓撲。不一樣的是,正如名字的區別,實例的ip提供dhcp獲取(nova-network節點提供dhcp服務),並且能夠自動幫助創建網橋。

1.四、OpenStack中Flat與vLAN區別

 

在兩種Flat模式裏,網絡控制器扮演默認網關的角色,實例都被分配了公共的IP地址(扁平式結構,都在一個橋接網絡裏)。

vLAN模式功能豐富,很適合提供給企業內部部署使用。可是,須要支持vLAN的switches來鏈接,並且相對比較複雜,在小範圍實驗中常採用FlatDHCP模式。

1.五、OpenStack中網絡流向是怎樣的,都通過網絡控制器嗎

多節點時,網絡控制器與計算節點分別在不一樣主機,普通部署方式下(不是multi_host),只有nova-network控制網絡,而它僅僅在控制節點運行。所以,全部計算節點的實例都須要經過控制節點來與外網通訊。

能夠經過multi_host等高可用性部署方式改變這個單點故障問題。


1.六、OpenStack單網卡怎麼配置?

配置好服務器的網絡(混雜模式);

/etc/nova/nova.conf那一塊,public_interface和flat_interface都改爲這個單網卡的名稱便可,好比在腳本oneStack.sh 改動2處:
/etc/network/interfaces設置那一塊,去掉第2個網卡的設置(eth1);
/etc/nova/nova.conf那一塊,eth1修改成eht0(flat的網卡)。

這樣,在這個網卡上,既有外網的網絡,又有flat網絡。詳見《OpenStack雲平臺的網絡模式及其工做機制》。


 

 

1.七、OpenStack中網絡流向是怎樣的,都通過網絡控制器嗎

 

多節點時,網絡控制器與計算節點分別在不一樣主機,普通部署方式下(不是multi_host),只有nova-network控制網絡,而它僅僅在控制節點運行。所以,全部計算節點的實例都須要經過控制節點來與外網通訊。

能夠經過multi_host等高可用性部署方式改變這個單點故障問題。

 

1.八、OpenStack中網絡注意問題

1)openstack 中,nova-manage create用來建立虛擬機運行時所需的內網,而且將相關的IP地址記錄到fixed_ips數據表中。可是,當調用nova-manage delete 時,並不會自動的刪除fixed_ips中的內容,需手動進行刪除。

2)採用FlatDHCP方式部署openstack,在開放了icmp和ssh22端口的狀況下,仍然沒法經過控制節點鏈接到虛擬機實例。此時應該檢查控制節點的ip配置信息ip addr。

3)FlatDHCP模式下,network_size是整個fixed_ip range中的全部ip數。例如在一個A類/12的網絡中,有2^20個IP地址,全部的這些IP地址都要寫入數據庫fixed_ips表中,這將會花費很長時間,致使出現假死。


4)若是採用FlatManager的網絡模式,則必須手動創建相關的網橋,以便虛擬機實例之間以及和主機之間通訊。

並且,必須手動的將虛擬機實例的內部IP加入到nova數據庫的fixed_ips表中。
此外,fiexed_ips表保着全部可供虛擬機實例使用的內部IP,每次發起一個新的虛擬機實例,openstack的網絡服務部分,根據 fixed_ips表中的內容分配給該實例IP。若是用戶但願保留特定的IP地址,須要將數據庫中該IP對應的reserved字段設置爲1。

 

2、虛擬化問題-virtual

 

2.一、OpenStack中控制節點和計算節點配置nova.conf同樣嗎

 

多節點時,網絡控制器與計算節點分別在不一樣主機,普通部署方式下(不是multi_host),只有nova-network控制網絡,而它僅僅在控制節點運行。所以,全部計算節點的實例都須要經過控制節點來與外網通訊。

 

能夠經過multi_host等高可用性部署方式改變這個單點故障問題。

計算節點的nova.conf並非與控制節點徹底同樣,主要是
--vncserver_proxyclient_address=
--vncserver_listen=

應該是計算節點的ip。

 

2.二、OpenStack執行 virsh -c qemu:///system list,一直掛起在那裏(hang),怎麼解決

 

killall -9 dmidecode

dmidecode是一個管理工具,在虛擬機裝OpenStack中須要用到,用在libvirt中,但在有的機器中會出現hang up的狀況,這時候須要kill掉它。

 

2.三、OpenStack中虛擬化技術在哪裏配置

 

主要兩個文件:nova.conf nova-compute.conf。

其中的虛擬技術應該一致,好比都爲kvm,或者都爲qemu。

2.四、OpenStack中虛擬機中nova-compute常常啓動失敗,virsh list顯示空白,怎麼解決

1. 在vmware workstation上的虛擬機須要修改 *.vmx文件

vcpu.hotadd = "TRUE"

變動爲

vcpu.hotadd = "FALSE"

從新啓動機器,若是執行命令: 

virsh

進入控制檯就沒有問題了。

2. 修改nova配置文件/etc/nova/nova.conf

#--libvirt_type=kvm

更改成qemu

--libvirt_type=qemu

3. 修改/etc/nova/nova-compute.conf

--libvirt_type=qemu

4. 從新啓動nova-compute,若是libvirt報錯

/var/log/libvirt/libvirtd.log

Cannot find 'pm-is-supported' in path: No such file or directory

報錯後須要安裝

apt-get install pm-utils

 

2.五、noVNC不能鏈接到實例,提示「Connection Refuesd」,什麼緣由
多是控制節點在收到vnc請求的時候,沒法解析計算節點的主機名,從而沒法和計算節點上的實例創建鏈接。
另外多是,當前瀏覽器不支持或者不能訪問將計算節點的ip和主機名的對應關係加入到控制節點的/etc/hosts文件中。


3、存儲、卷問題-volume、lvm

 

 

3.一、OpenStack中建立volume一直在creating,什麼緣由

 

主要由於nova-volume沒有正常啓動,能夠

nova-manage service list

看看後面的狀態,不是笑臉:-)而是xx。若是沒有啓動,請看下一條。

 

3.二、OpenStack中nova-volume服務不能啓動,什麼緣由

 

主要由於沒有nova-volumes卷組,或者iscsitarget服務沒有啓動(或者沒有安裝)。

一、vgdisplay

沒有nova-volumes卷組,能夠建立卷組和磁盤

$ dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
$ losetup -f /opt/nova-volumes.img
$ losetup -a
$ vgcreate nova-volumes /dev/loop0


記着啓動nova-volume而後建立volume,不然下面仍然不能建立

$ service nova-volume restart

$ nova volume-create --display_name "volume1" 10


二、service iscsitarget status

1)沒有安裝iscsitarget,能夠apt安裝;

而後執行如下命令安裝和設置爲能夠啓動

apt-get install -y iscsitarget iscsitarget-dkms lvm2
sed -i -e 's/false/true/' /etc/default/iscsitarget
service iscsitarget start
service nova-volume start

 

2)狀態爲stop,能夠start

service iscsitarget start


3)若是既沒有nova-volumes卷組,也沒有安裝iscsitarget,切忌保證這二者都存在,而後重啓nova-volume,再建立volume

有人安裝iscsitarget並啓動後就create,結果nova-volume並無啓動,因此問題依然存在;

有人建立nova-volumes,也沒有重啓nova-volume,也不能正常工做。


3.三、OpenStack中建立volume一直在creating,怎麼停掉(stop)
主要由於nova-volume沒有正常啓動,能夠
nova-manage service list
看看後面的狀態,不是笑臉:-)而是xx。若是沒有啓動,請看下一條。


3.四、OpenStack中nova-volume執行出現問題,檢查什麼地方
主要由於nova-volume沒有正常啓動或者計算節點沒有能找到target,能夠檢查如下這些問題。
nova-volume是否正常;控制點,詳見問題3.2
iscsitarget是否開啓;服務端
open-iscsi是否安裝和開啓;客戶端
客戶端(計算節點)iscsiadm discovery看看能不能找到存儲服務;
分析nova-volume.log。


3.五、OpenStack中nova-volume管理target
控制節點查看target
tgtadm --lld iscsi --op show --mode target
創建target
sudo tgtadm --op new --lld=iscsi --mode=target --tid=1 --targetname=iqn.2010-10.org.openstack:volume-00000001

3.六、OpenStack中計算節點管理volume
查看session
sudo iscsiadm -m session
手動發現target
sudo iscsiadm -m discovery -t sendtargets -p IP:port
登入登出
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --login
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --logout
sudo iscsiadm -m node -o [delete|new|update] -T targetname


 

4、OneStack安裝問題

 

 

4.一、OpenStack能在普通的PC機上跑嗎?

 

普通pc沒有試過,這也不是它須要支持的對象。可是普通pc同樣能夠工做的。
官網的配置,只是對於稍有必定規模的部署(配置並不算高,甚至是服務器最基本的要求)
如今服務器基本都64位,可是它也指出了,32位的能夠工做的,只是不能運行64位的操做系統實例,本身改一下鏡像就能夠。還有不支持vt技術的,我沒有試過。
雙網卡也不是必須的,一個對內,一個對外。能夠更改配置。詳見1.6單網卡安裝。
其它的基本就是自由的。


4.二、OneStack簡單安裝須要改哪些地方

一、切換到root,oneStack.sh刪除設置root密碼、設置locale、設置apt這3段(爲了方便剛安裝新系統的用戶加入的可選的步驟,setup_base.sh沒有這3段)
二、設置ip等參數 OUT_IP 外網ip(注意這是相對於OpenStack?內部網絡的) OUT_IP_PRE 外網ip前綴(腳本後面出現ip不用管,會被這個參數替換) FLOAT_IP 浮動ip
三、裸機的話qemu改爲kvm (對於xen之類的未加入支持) VIRT_YPE
四、網絡設置,會替換掉你原來的,不想替換就刪掉這一段 設置cat寫入interfaces文件(注意,那裏面pre-up手動設置了網卡mac,不須要的自行去掉;單網卡去掉eth1的設置便可)
五、執行oneStack.sh 或者setup_base.sh(基本系統,沒有添加鏡像和實例,能夠setup_test.sh)
其它沒有須要更改的(數據庫密碼等自行更改無影響)。 裏面有個image是從ubuntu官網下載,可能須要一些時間 (svn checkout,裏面還有一些刪除之類的工具)


4.三、OneStack單網卡安裝須要改哪些地方

 

除了4.2所述部分外

1)在配置interfaces時,去掉eth1部分;

2)後面nova.conf設置裏面,eth1改成eth0(public_interface)。


4.四、OneStack多節點安裝須要改哪些地方

 

控制節點使用oneStack.sh,若是不須要安裝nova-compute去掉便可;

計算節點執行addComputeNode.sh

注意nova.conf配置其他同樣,只是
--vncserver_proxyclient_address=
--vncserver_listen=
應該是計算節點的ip。

4.五、OneStack安裝後怎麼清空nova數據,包括實例和volume等

 

 

控制節點執行resetStack.sh clear,清空數據庫;

再執行resetStack.sh從新初始化數據庫。

 

 

5、鏡像問題-image

 

 

5.一、OpenStack中可使用windows嗎

 

虛擬出來的實例基本與普通的主機同樣,因此基本上全部系統均可以使用,製做相應的鏡像便可。

 

5.三、OpenStack怎麼製做Windows鏡像

 

創建鏡像文件
kvm-img create -f raw windowsxp.img 10G
wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-22.iso
啓動安裝到鏡像
kvm -m 1024 -cdrom winxp.iso -drive file=windowsxp.img,if=virtio,boot=on -drive file=virtio-win-0.1-22.iso,media=cdrom -boot d -nographic -vnc :0

能夠vnc查看以及操做安裝過程

vncviewer 192.168.139.50:5900

(注意,5900最後一位與vnc :0對應,若是端口占用能夠改成一、二、3等,vncviewer 5901等)
上傳鏡像
glance add name="WindowsXP" is_public=true container_format=ovf disk_format=raw < windowsxp.img


5.三、OpenStack怎麼製做CentOS鏡像

建立鏡像

kvm-img create -f raw centos.img 5G

啓動安裝
kvm -m 2048 -cdrom CentOS-6.2-i386.iso -drive file=centos.img -boot d -net nic -nographic -vnc :1
操做安裝過程
vncviewer 192.168.139.50:5901
再次啓動安裝好的鏡像
kvm -m 2048 -drive file=centos.img -boot c -net nic -nographic -vnc :1

在虛擬機內部安裝ssh,以即可以遠程登陸實例

yum install openssh-server

service sshd start (虛擬機內部)

chkconfig sshd on (否則,重啓又不能ssh) 

上傳鏡像
glance add name="CentOS6.2" is_public=true container_format=ovf disk_format=raw < centos.img
要使虛擬機內部訪問外網,須要在節點上執行

sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1 (vi /proc/sys/net/ipv4/ip_forward)

5.四、OpenStack怎麼Linux登陸ubuntu

 

官方提供的鏡像須要使用密鑰登陸,也就是啓動實例的時候使用的那個key(不用key啓動ubuntu實例是無法ssh登陸的)

ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2

在外網登陸使用floating ip;

要訪問外網注意設置節點上

sysctl -w net.ipv4.ip_forward=1

 

 

5.五、OpenStack怎麼novnc瀏覽器訪問登陸ubuntu

 

在能使用vnc的地方,瀏覽器輸入地址能夠訪問系統。

控制節點上

nova get-vnc-console 4 novnc

獲得一個url,例如

+-------+-------------------------------------------------------------------------------------+
| Type | Url |
+-------+-------------------------------------------------------------------------------------+
| novnc | http://192.168.139.50:6080/vnc_auto.html?token=ca2455e8-fcc9-447f-92ee-853b92b37cdb |
+-------+-------------------------------------------------------------------------------------+

瀏覽器中使用這個url訪問。

 

 

 

5.六、OpenStack怎麼Windows登陸ubuntu

 

下載啓動實例的時候使用的那個key(不用key啓動ubuntu實例是無法ssh登陸的)

ssh登陸工具裏面選擇key認證方式,auth裏面上傳這個private key

而後ssh登陸,輸入用戶名ubuntu,直接登陸。

 

5.七、OpenStack能夠密碼登陸ubuntu而不是密鑰嗎

 

默認的鏡像經過注入密鑰的方式,ssh是須要密鑰認證的方式登陸,不容許密碼登陸的;

設置別的用戶好比root密碼後,在vnc裏面能夠經過密碼登陸;

能夠本身製做鏡像,參考製做CentOS鏡像那樣,使用密碼登陸。


 

6、實例問題-instance

 

 

6.一、OpenStack中實例是什麼意思

 

簡單的說,一個實例就是一個跑着操做系統的虛擬機。

 

6.二、OpenStack中實例怎麼訪問

 

在OpenStack內部,可使用內網ip(fixed ip)訪問。

外部,可使用floating ip訪問。

注意設置相應的訪問規則,好比ssh端口,防火牆規則,ipv4_forward等。

能夠vnc訪問,vnc瀏覽器訪問。

Linux系統能夠ssh登陸,桌面系統也能夠安裝xrdp實現遠程桌面訪問;

Windows系統能夠遠程桌面鏈接。

 

6.三、OpenStack中怎麼管理實例

 

能夠web端(dashboard)訪問,圖形化操做管理。也可使用api,以下:

## 1:上傳實例
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img

查看鏡像
nova image-list

## 2:建立flavor

nova flavor-list
nova-manage flavor create --name=m1.minitest --memory=384 --cpu=1 --root_gb=1 --flavor=6 --ephemeral_gb=1
## 三、建立虛擬機
nova boot --flavor 1 --image "Ubuntu12.04-amd64" --key_name key1 cloud01

查看實例
nova show cloud01

實例日誌
nova console-log cloud01

##綁定浮動ip
nova floating-ip-create
nova add-floating-ip cloud01 192.168.139.226
nova show cloud01

或者直接
nova add-floating-ip cloud01 `nova floating-ip-create | awk 'FNR==4{print $2}'`
nova list
nova show cloud01
### 查看vm
nova list
### 刪除vm,vm的ID或者名字
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343

nova delete cloud01

## 四、默認實例登陸
ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2
ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2


 

 

6.四、怎麼新建密鑰,怎麼使用密鑰

 

mkdir /root/ssh_clients/

建立密鑰:ssh-keygen -t rsa -f /root/ssh_clients/key01

上傳密鑰:nova keypair-add --pub_key /root/ssh_clients/key01.pub key01

啓動實例時分配密鑰:nova keypair-add --pub_key /root/ssh_clients/key01.pub key01

使用密鑰登陸:ssh -i /root/ssh_clients/key01 ubuntu@192.168.139.225

刪除keypair: nova keypair-delete

 

6.五、OpenStack中nova-compute啓動失敗什麼緣由

 

分析/var/log/nova/nova-compute.log日誌。

容易出現的問題是,volume問題或者virt問題。

 

 

6.五、OpenStack中nova-compute啓動失敗什麼緣由

 

啓動失敗時,nova-manage service list下顯示爲「XX」;分析/var/log/nova/nova-compute.log日誌。

容易出現的問題是,volume問題或者virt問題。

6.六、OpenStack中沒法鏈接實例

沒法鏈接到虛擬機實例的時候,應該檢查以下的環節:
1) 公共IP是否已經綁定到了公共網卡接口上,ip addr
2) 查看iptable的設置,NAT規則是否設置正確,iptables-save
3) 檢查安全組設置,euca-describe-groups

 

6.六、OpenStack中實例注意問題

 

1)虛擬機在build階段時,不要進行重啓操做,不然會出現kernel panic現象。

nova-manage create用來建立虛擬機運行時所需的內網,而且將相關的IP地址記錄到fixed_ips數據表中。可是,當調用nova-manage delete 時,並不會自動的刪除fixed_ips中的內容,需手動進行刪除。


2)計算節點的操做系統爲32位,所以,kvm上啓動的虛擬機內存受到限制,好比沒法建立內存大於4G的虛擬機。

3)虛擬機實例已經綁定了浮動IP,而且控制節點的對外網絡接口上也發現了相關的浮動IP地址,可是經過ssh卻沒法進行鏈接。
解決:在dashboard中添加相關的安全規則。security group -> edit rules
添加:icmp -1 -1 0/0;tcp 22 22 0/0

在OneStack裏面,已經把端口所有啓動1~65535,能夠更改成只開放ssh、imcp等部分。

4)nova的配置文件默認存放在/etc/nova/nova.conf中,其中涉及到nova各個參數的配置。
nova全部的參數能夠經過nova-api --help進行查看。

 

7、系統及其它

 

7.一、查看日誌

 

OpenStack的nova相關日誌都在/vr/log/nova下面,通常多數是nova出現問題,包括網絡、存儲、compute、虛擬化等。

volume相關問題查看nova-volume.log

compute和libvirt相關問題查看nova-compute.log

查看實例日誌,web裏面有這樣一個菜單,api裏面使用nova console-log cloud01


 

7.二、怎麼實現高可用性的部署

 

請參考文章《構建OpenStack的高可用性(HA,High Availability)》,裏面給出了一些大概的方案。


7.三、OpenStack有哪些資料,新手去哪裏學習

 

動手實踐,閱讀wiki、文檔,參與社區,反饋問題,勤動腦。如下爲部分網址:

國內技術資料較少,多爲安裝管理相關問題,或者媒體資料。對於swift有一些技術分析的資料,其它較少。

 

官方OpenStack www.openstack.org
國內OpenStack社區 www.openstack.org.cn

Installing OpenStack Essex (2012.1) on Ubuntu 12.04 ("Precise Pangolin")(原文)  http://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin 
「OpenStack Documentation」team(文檔、bug報告)  https://launchpad.net/~openstack-doc
Quora上關於openstack的話題  http://www.quora.com/OpenStack
stackoverflow上關於openstack資源的討論  http://stackoverflow.com/questions/5882333/good-tutorials-and-resources-for-openstack

 

 

高可用性

安裝部署問題多Google,不少會連接到https://launchpad.net/別人的問答。之後能夠把問題和解決方法抽象出來在《OpenStack安裝部署管理中常見問題解決方法(OpenStack-Lite-FAQ)》分享,但願少把時間浪費在安裝和部署上。

一鍵部署:http://code.google.com/p/onestack/source/browse/trunk/

相關文章
相關標籤/搜索