歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> OpenStack安裝部署管理中常見問題解決方法

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

日期:2017/2/27 16:02:23   编辑:Linux教程
一、網絡問題-network
更多網絡原理機制可以參考《OpenStack雲平台的網絡模式及其工作機制》。

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

控制節點的服務可以分開在多個節點,我們把提供nova-network服務的節點稱為網絡控制器。

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

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

1.3、OpenStack中Flat與FlatDHCP區別
Flat(扁平): 所有實例橋接到同一個虛擬網絡,需要手動設置網橋。

FlatDHCP: 與Flat(扁平)管理模式類似,這種網絡所有實例橋接到同一個虛擬網絡,扁平拓撲。不同的是,正如名字的區別,實例的ip提供dhcp獲取(nova-network節點提供dhcp服務),而且可以自動幫助建立網橋。

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

vLAN模式功能豐富,很適合提供給企業內部部署使用。但是,需要支持vLAN的switches來連接,而且相對比較復雜,在小范圍實驗中常采用FlatDHCP模式。

1.5、OpenStack中網絡流向是怎樣的,都經過網絡控制器嗎
多節點時,網絡控制器與計算節點分別在不同主機,普通部署方式下(不是multi_host),只有nova-network控制網絡,而它僅僅在控制節點運行。因此,所有計算節點的實例都需要通過控制節點來與外網通信。

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

1.6、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.7、OpenStack中網絡流向是怎樣的,都經過網絡控制器嗎
多節點時,網絡控制器與計算節點分別在不同主機,普通部署方式下(不是multi_host),只有nova-network控制網絡,而它僅僅在控制節點運行。因此,所有計算節點的實例都需要通過控制節點來與外網通信。

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

1.8、OpenStack中網絡nova.conf與nova-manage network create分別做什麼
設定floating ip和fixed ip在配置文件nova.conf裡面有提到,可是為什麼還要nova manager create呢,系統最終調用的是哪個呢?
fixed_ip=10.0.0.1/27
nova-manage network create 是創建項目的網絡,每個項目有自己的ip范圍,它必須在nova.conf范圍內。
這個create過程是填充數據庫的過程,後面會根據數據庫的狀態分配ip。

1.9、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。

二、虛擬化問題-virtual
2.1、OpenStack中控制節點和計算節點配置nova.conf一樣嗎
多節點時,網絡控制器與計算節點分別在不同主機,普通部署方式下(不是multi_host),只有nova-network控制網絡,而它僅僅在控制節點運行。因此,所有計算節點的實例都需要通過控制節點來與外網通信。

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

計算節點的nova.conf並不是與控制節點完全一樣,主要是
--vncserver_proxyclient_address=
--vncserver_listen=

應該是計算節點的ip。

2.2、OpenStack執行 virsh -c qemu:///system list,一直掛起在那裡(hang),怎麼解決
killall -9 dmidecode

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

2.3、OpenStack中虛擬化技術在哪裡配置
主要兩個文件:nova.conf nova-compute.conf。

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

2.4、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.5、noVNC不能連接到實例,提示“Connection Refuesd”,什麼原因
可能是控制節點在收到vnc請求的時候,無法解析計算節點的主機名,從而無法和計算節點上的實例建立連接。
另外可能是,當前浏覽器不支持或者不能訪問,將計算節點的ip和主機名的對應關系加入到控制節點的/etc/hosts文件中。

三、存儲、卷問題-volume、lvm
3.1、OpenStack中創建volume一直在creating,什麼原因
主要因為nova-volume沒有正常啟動,可以
nova-manage service list

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

3.2、OpenStack中nova-volume服務不能啟動,什麼原因
主要因為沒有nova-volumes卷組,或者iscsitarget服務沒有啟動(或者沒有安裝)。

1、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

2、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.3、OpenStack中創建volume一直在creating,怎麼停掉(stop)
主要因為nova-volume沒有正常啟動,可以
nova-manage service list
看看後面的狀態,不是笑臉:-)而是xx。如果沒有啟動,請看下一條。

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

3.5、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.6、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

四、OneStack安裝問題
4.1、OpenStack能在普通的PC機上跑嗎?
普通pc沒有試過,這也不是它需要支持的對象。但是普通pc一樣可以工作的。
官網的配置,只是對於稍有一定規模的部署(配置並不算高,甚至是服務器最基本的要求)
現在服務器基本都64位,但是它也指出了,32位的可以工作的,只是不能運行64位的操作系統實例,自己改一下鏡像就可以。還有不支持vt技術的,我沒有試過。
雙網卡也不是必須的,一個對內,一個對外。可以更改配置。詳見1.6單網卡安裝。
其它的基本就是自由的。

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

4.3、OneStack單網卡安裝需要改哪些地方?
除了4.2所述部分外
1)在配置interfaces時,去掉eth1部分;
2)後面nova.conf設置裡面,eth1改為eth0(public_interface)。

4.4、OneStack多節點安裝需要改哪些地方?
控制節點使用oneStack.sh,如果不需要安裝nova-compute去掉即可;
計算節點執行addComputeNode.sh
注意nova.conf配置其余一樣,只是
--vncserver_proxyclient_address=
--vncserver_listen=
應該是計算節點的ip。

4.5、OneStack安裝後怎麼清空nova數據,包括實例和volume等?
控制節點執行resetStack.sh clear,清空數據庫;
再執行resetStack.sh重新初始化數據庫。

五、鏡像問題-image
5.1、OpenStack中可以使用windows嗎
虛擬出來的實例基本與普通的主機一樣,所以基本上所有系統都可以使用,制作相應的鏡像即可。

5.2、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對應,如果端口占用可以改為1、2、3等,vncviewer 5901等)
上傳鏡像
glance add name="WindowsXP" is_public=true container_format=ovf disk_format=raw < windowsxp.img

5.3、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.4、OpenStack怎麼Linux登錄ubuntu
官方提供的鏡像需要使用密鑰登錄,也就是啟動實例的時候使用的那個key(不用key啟動ubuntu實例是沒法ssh登錄的)
ssh -i ~/.ssh/id_rsa [email protected]

在外網登錄使用floating ip;
要訪問外網注意設置節點上
sysctl -w net.ipv4.ip_forward=1

5.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.6、OpenStack怎麼Windows登錄ubuntu
下載啟動實例的時候使用的那個key(不用key啟動ubuntu實例是沒法ssh登錄的)
ssh登錄工具裡面選擇key認證方式,auth裡面上傳這個private key
然後ssh登錄,輸入用戶名ubuntu,直接登錄。

5.7、OpenStack可以密碼登錄ubuntu而不是密鑰嗎
默認的鏡像通過注入密鑰的方式,ssh是需要密鑰認證的方式登錄,不允許密碼登錄的;
設置別的用戶比如root密碼後,在vnc裡面可以通過密碼登錄;

可以自己制作鏡像,參考制作CentOS鏡像那樣,使用密碼登錄。

六、實例問題-instance
6.1、OpenStack中實例是什麼意思
簡單的說,一個實例就是一個跑著操作系統的虛擬機。

6.2、OpenStack中實例怎麼訪問
在OpenStack內部,可以使用內網ip(fixed ip)訪問。
外部,可以使用floating ip訪問。
注意設置相應的訪問規則,比如ssh端口,防火牆規則,ipv4_forward等。
可以vnc訪問,vnc浏覽器訪問。
Linux系統可以ssh登錄,桌面系統也可以安裝xrdp實現遠程桌面訪問;
Windows系統可以遠程桌面連接。

6.3、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
## 3、創建虛擬機
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

## 4、默認實例登錄
ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2
ssh -i ~/.ssh/id_rsa [email protected]

6.4、怎麼新建密鑰,怎麼使用密鑰
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 [email protected]
刪除keypair:nova keypair-delete

6.5、OpenStack中nova-compute啟動失敗什麼原因
分析/var/log/nova/nova-compute.log日志。
容易出現的問題是,volume問題或者virt問題。

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

6.7、OpenStack中compute和實例需要注意的問題
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.1、查看日志
OpenStack的nova相關日志都在/vr/log/nova下面,一般多數是nova出現問題,包括網絡、存儲、compute、虛擬化等。
volume相關問題查看nova-volume.log
compute和libvirt相關問題查看nova-compute.log
查看實例日志,web裡面有這樣一個菜單,api裡面使用nova console-log cloud01

7.2、怎麼實現高可用性的部署
請參考文章《構建OpenStack的高可用性(HA,High Availability)》,裡面給出了一些大概的方案。

7.3、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

高可用性
http://www.hastexo.com/blogs/florian/2012/03/21/high-availability-openstack
Existing High Availability Options for Networking
bringing-high-availability-openstack-keystone-and-glance
Quantum Setup
MySQL HA with Pacemaker
http://www.rabbitmq.com/ha.html
安裝部署問題多Google,很多會鏈接到https://launchpad.net/別人的問答。以後可以把問題和解決方法抽象出來在《OpenStack安裝部署管理中常見問題解決方法》分享,希望少把時間浪費在安裝和部署上。
Copyright © Linux教程網 All Rights Reserved