OpenStack雲第四天
本文翻譯自官方部署指南第六章。部署OpenStack Compute及Image服務。在雲環境中OpenStack Compute與Image service協同工作,實作通過REST APIs通路虛拟機及鏡像的功能。
目錄:
一、安裝與配置Image服務
二、配置Hypervisor
三、預設網絡
四、部署資料庫
五、安裝與配置雲控制器
一、安裝與配置Image Service
1.1 使用root身份,安裝Image service
$sudo yum install openstack-nova openstack-glance
安裝後,你需要删除sqlite資料庫檔案,然後修改配置指向MySQL資料庫。删除/var/lib/glance目錄下的glance.sqlite檔案。
# rm /var/lib/glance/glance.sqlite
1.2 配置後端鏡像(Image)服務資料庫
配置後端資料存儲。使用MySQL建立一個glance資料庫以及glance賬戶,賦予"glance”賬戶對glance資料庫的所有權限。
運作如下指令,進入MySQL資料庫:
$ mysql -u root -p //根據提示輸入MySQL管理者密碼
建立glance資料庫:
mysql> CREATE DATABASE glance;
為新建立的資料庫建立MySQL賬戶并賦予完全控制權限:
mysql> GRANT ALL ON glance.* TO 'glance'@'%’IDENTIFIED BY '你的密碼’;
退出資料庫:
mysql> quit
修改Glance配置檔案
更新/etc/glance/glance-api-paste.ini檔案,修改[filter:authtoken]下admin_*的值。
[filter:authtoken]
admin_tenant_name = service
admin_user = glance
admin_password = glance
確定glance-api管道部分包括authtoken
[pipeline:glance-api]
pipeline = versionnegotiation authtoken auth-context apiv1app
在/etc/glance/glance-api.conf檔案末尾追加如下内容:
[paste_deploy]
flavor = keystone
重新開機glance-api服務: service glance-api restart
譯者備注:重新開機服務實際應該是: service openstack-glance-api restart
在/etc/glance/glance-registry.conf檔案末尾追加如下内容:
更新/etc/glance/glance-registry-paste.ini檔案,修改[filter:authtoken]下admin_*的值:
確定glance-registry管道部分包括authtoken:
[pipeline:glance-registry]
#pipeline = context registryapp
# NOTE: use the following pipeline for keystone
pipeline = authtoken auth-context context registryapp
確定/etc/glance/glance-registry.conf和/etc/glance/glance-scrubber.conf檔案資料庫指向是MySQL而不是sqlite。
sql_connection = mysql://glance:[email protected]/glance
注意:任何時候在修改完.conf配置檔案後,記得重新開機相應的服務,使新的修改生效。
現在,遷移資料庫至MySQL:
# glance-manage db_sync
重新開機glance-registry與glance-api服務:
# service openstack-glance-registry restart
# service openstack-glance-api restart
Image服務排除,可以參考日志檔案/var/log/glance/registry.log或/var/log/glance/api.log。
1.3 驗證Image Service是否安裝成功
你可以使用如下指令獲得軟體的版本号:
# glance --version
Essex版本的掙錢版本号為glance 2012.1
下載下傳測試性鏡像檔案:
# mkdir /tmp/images
# cd /tmp/images
# tar -zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
上傳核心:
# glance --os_username=adminUser --os_password=secretword --os_tenant=openstackDemo \
> disk_format=aki container_format=aki < ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz
Uploading image 'tty-linux-kernel'
==========================================================================
==============================================================================
=========[100%] 41.8M/s, ETA 0h 0m 0s
Added new image with ID: 599907ff-296d-4042-a671-d015e34317d2
上傳initrd檔案:
# glance --os_username=adminUser --os_password=secretword \
> add name="tty-linuxOpenStackramdisk" \
> disk_format=ari container_format=ari < ttylinux-uec-amd64-12.1_2.6.35-22_1-loader
Uploading image 'tty-linux-ramdisk'
===[100%] 937.483441K/s, ETA 0h 0m 0s
Added new image with ID: 7d9f0378-1640-4e43-8959-701f248d999d
上傳鏡像檔案:
# glance --os_username=adminUser --os_password=secretword 、
> add name="tty-linux"disk_format=ami container_format=ami \
> kernel_id=599907ff-296d-4042-a671-d015e34317d2 \
> ramdisk_id=7d9f0378-1640-4e43-8959-701f248d999d < ttylinux-uecamd64-12.1_2.6.35-22_1.img
Uploading image 'tty-linux'
===[100%] 118.480514M/s, ETA 0h 0m 0s
Added new image with ID: 21b421e5-44d4-4903-9db0-4f134fdd0793
現在在glance索引中将顯示有一個合法的Image。
# glance --os_username=adminUser --os_password=secretword \
<a href="http://manual.blog.51cto.com/attachment/201208/29/3300438_1346205942aWEh.png"></a>
對于生産環境,多數人會選擇KVM或基于Xen的hypervisor。KVM通過libvirt運作,而Xen則通過XenAPI調用運作。我們預設選擇的是KVM,而且它僅需要我們做最少的配置修改。本手冊主要講解KVM。
2.1 KVM
KVM是作為Compute預設的hypervisor被配置的。明确的啟用KVM,需要在/etc/nova/nova.conf檔案中添加如下配置:
connection_type=libvirt
libvirt_type=kvm
KVM hypervisor支援如下的虛拟機鏡像格式:
Raw
QEMU Copy-on-write(qcow2)
VMware虛拟機格式(vmdk)
本文隻要描述如果開啟你系統上的KVM,你也需需要以下這些針對特定發行版本的文檔作為參考:
Installation Guide.
2.2 檢查你的硬體是否支援虛拟化
使用KVM需要主機CPU支援虛拟化技術(VT)。
如果你在運作Ubuntu,當在BIOS中開啟虛拟化功能以及KVM正确的被安裝後,可以使用kvm-ok指令檢查你的處理器是否支援VT,如果KVM是開啟的,輸出應該像這樣:
INFO: /dev/kvm exists
KVM acceleration can be used
如果未能開啟KVM,輸出應該像這樣的資訊:
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
如果你的發行版本沒有kvm-ok指令,你也可以通過檢查處理器标記檢視是否支援虛拟化技術。對于Intel的處理器标記為vmx,AMD處理器标記為svm。可以通過以下簡單指令來判斷:
# egrep '(vmx|svm)’ --color=always /proc/cpuinfo
有些系統 需要你在BIOS中開啟virtualization technology(VT),如果你确信自己的處理器支援硬體加速而上面的指令又沒有任何輸出,你也許需要重新開機電腦,進入系統BIOS,開啟VT選項。
2.3 開啟KVM子產品
由于KVM是基于核心的虛拟化技術,是以需要確定kvm子產品已經被正确加載。子產品名稱為kvm,還有kvm-intel或kvm-amd。這些子產品的加載也許在你安裝KVM軟體是就已經自動完成了,你可以使用lsmod指令檢查它們是否被正确加載,以下是基于Intel處理器的輸出結果:
$ lsmod | grep kvm
kvm_intel 137721 9
kvm 415459 1 kvm_intel
接下來,我們看看如果你的系統未能自動加載子產品時,如果手動為基于Intel或AMD處理器加載相應子產品。
如果你的主機是基于Intel的處理器,以root身份運作如下指令加載核心子產品:
# modprobe kvm
# modprobe kvm-intel
将以下兩行追加至/etc/modules檔案,這樣子產品在重新開機後依然會被字段加載:
kvm
kvm-intel
如果你的主機是基于AMD的處理器,以root身份運作如下指令加載核心子產品:
# modprobe kvm-amd
kvm-amd
2.4 常見故障
嘗試開啟虛拟機執行個體時提示ERROR狀态,并且在/var/log/nova/nova-compute.log日志中有如下資訊:
libvirtError: internal error no supported architecture for os type 'hvm'
這表明你的KVM核心子產品未被正确加載。
2.5 QEMU
從Compute service架構來看,QEMU hypervisor非常像KVM hypervisor。兩者都通過libvirt控制、都支援一樣的特性設定,并且KVM所有的虛拟機鏡像都與QEMU相容。兩者最大的差别是QEMU不支援原生虛拟化技術(虛拟機直接運作于硬體之上)。
譯者備注:虛拟化有原生虛拟化與宿主虛拟化,宿主虛拟化典型代表是VMware Workstation,其運作在一個已經安裝好的系統之上。原生虛拟化則可以直接運作與硬體之上。
是以,QEMU性能比KVM稍差些,一般在生産環境部署的較少。
使用QEMU的案例有:
運作于老的硬體平台上
測試環境
啟用QEMU的方式如下:
libvirt_type=qemu
QEMU支援與KVM一樣的虛拟機鏡像格式:
* Raw
* qcow2
* vmdk
文章将介紹如果在但網絡接口上配置使用FlatDHCP模式。
首先,設定你的/etc/network/interfaces檔案:(譯者備注,這裡說的是Ubuntu環境)
* eth0:公網IP,網關
* br100:stp off,fd 0
模版如下:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# Bridge network interface for VM networks
auto br100
iface br100 inet static
address 192.168.100.1
netmask 255.255.255.0
bridge_stp off
bridge_fd 0
還需要安裝bridge-utils:
sudo apt-get install bridge-utils
RHEL配置要求
在/etc/qpidd.conf檔案中設定auth=no
設定SELinux模式為permissive:
# sudo setenforce permissive
如果是基于RHEL6.2的系統,使用openstack-config包關閉DHCP release。
# sudo openstack-config --set /etc/nova/nova.conf DEFAULT force_dhcp_release False
如果是基于RHEL6.3的系統,需要安裝dnsmasq工具包:
$ sudo yum install dnsmasq-utils
如果你使用的客戶機鏡像沒有單獨的分區,要使檔案可以注入需要允許libguestfs檢查鏡像,設定方法如下:
$ sudo openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_inject_partition -1
四、在雲控制器上配置SQL資料庫
通過mysql用戶端工具連接配接MySQL伺服器:
$ mysql -u root -p //根據提示輸入密碼
建立nova資料庫:
mysql> CREATE DATABASE nova;
建立MySQL使用者并賦予對建立資料庫的所有權限:
mysql> GRANT ALL ON nova.* TO 'nova'@'%’IDENTIFIED BY '密碼';
mysql> quit
五、安裝與配置雲控制器
安裝消息隊列伺服器,RabbitMQ。當然你也可以選擇Apache Qpid,你可以參考官方Compute Administration Manual中的介紹。
# yum -y install rabbitmq-server
安裝nova-開頭的軟體包,相關依賴包會被自動安裝。
# yum -y install openstack-nova-compute openstack-nova-volume openstack-nova-novncproxy openstack-nova-api openstack-nova-ajax-console-proxy openstack-nova-cert openstack-nova-consoleauth openstack-nova-doc openstack-nova-scheduler openstack-nova-network
譯者備注:原文此處使用的包為nova-compute格式,不包含openstack。
5.1 配置OpenStack Compute
很多Compute服務的配置選項都存放在/etc/nova/nova.conf檔案中。這裡我們給出了保障運作的最小配置說明。更多配置選項可以參考OpenStack Compute Administration Manual文檔。
一般安裝軟體包會自動設定使用者及權限,如果沒有自動完成,以下為手動方式設定:
# groupadd nova
# usermod -g nova nova
# chown -R root:nova /etc/nova
# chmod 640 /etc/nova/nova.conf
編輯/etc/nova/nova.conf設定hypervisor,預設hypervisor為kvm,如果你需要使用其他的hypervisor如Xen,請修改libvirt_type=選項。
確定資料庫的連接配接設定:
格式: sql_connection=mysql://[user]:[pass]@[primary IP]/[db name]
示例: sql_connection=mysql://nova:[email protected]/nova
在/etc/nova/nova.conf檔案中添加以下這些網絡設定,你可以在檔案中添加注釋說明行,方法是建立以#符号開頭的行(以#開頭的行全為注釋行):
auth_strategy=keystone
network_manager=nova.network.manager.FlatDHCPManager
fixed_range=192.168.100.0/24
flat_network_dhcp_start=192.168.100.2
public_interface=eth0
flat_interface=eth0
flat_network_bridge=br100
以下為nova.conf檔案配置的示例:
[DEFAULT]
# LOGS/STATE
verbose=True
# AUTHENTICATION
# SCHEDULER
compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
# VOLUMES
volume_group=nova-volumes
volumevolume_name_template=volume-%08x
iscsi_helper=tgtadm
# DATABASE
sql_connection=mysql://nova:[email protected]/nova
# COMPUTE
instanceinstance_name_template=instance-%08x
api_paste_config=/etc/nova/api-paste.ini
allow_resize_to_same_host=True
# APIS
osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions
ec2_dmz_host=192.168.206.130
s3_host=192.168.206.130
# RABBITMQ
rabbit_host=192.168.206.130
# GLANCE
image_service=nova.image.glance.GlanceImageService
glance_api_servers=192.168.206.130:9292
# NETWORK
force_dhcp_release=True
dhcpbridge_flagfile=/etc/nova/nova.conf
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
my_ip=192.168.206.130
public_interface=br100
vlan_interface=eth0
flat_network_bridge=br100
fixed_range=10.0.0.0/24
# NOVNC CONSOLE
novncproxy_base_url=http://192.168.206.130:6080/vnc_auto.html
vncserver_proxyclient_address=192.168.206.130
vncserver_listen=192.168.206.130
你還需要修改api-paste.ini檔案,使用keystone作為認證伺服器。譯者備注:原文檔此處無配置說明,原文的附錄部分有一個配置檔案示例。
重新開機nova-服務,接着與資料庫同步資料:
# for svc in api objectstore compute network volume scheduler cert; \
> do sudo service openstack-nova-$svc start; sudo chkconfig openstack-nova-$svc on; done
檢查所有的服務是否啟動成功,檢視/var/log/nova日志檔案是否有錯誤。
為Compute配置資料庫,通過如下指令在後端資料庫中建立資料表:
sudo nova-manage db sync
如果你看到任何響應資訊,可以檢視/var/log/nova/nova-manage.log檢視問題所在。沒有回應說明指令正确的被執行了。
重新開機服務:
sudo restart openstack-nova-api
sudo restart openstack-nova-compute
sudo restart openstack-nova-network
sudo restart openstack-nova-scheduler
sudo restart openstack-nova-vncproxy
sudo restart openstack-nova-volume
sudo restart libvirt-bin //RHEL中為libvirtd服務
sudo /etc/init.d/rabbitmq-server restart
5.2 為Compute虛拟機執行個體建立網絡
你必須運作如下指令為虛拟機建立在nova.conf中設定的網絡及br100橋接裝置。這個例子中我們為虛拟機配置設定192.168.100.0/24的網絡,但你也可以提供為自己的網絡。示例中我們我們把這個網絡标記為"private”:
# nova-manage network create private --multi_host=T --fixed_range_v4=192.168.100.0/24 \
> --bridge_interface=br100 --num_networks=1 --network_size=256
5.3 驗證Compute的安裝
你可以使用root身份運作nova-manage指令來確定所有的Compute服務正常運作:
# nova-manage service list
正常的話,你會收到笑臉 : -)的回應而不是X符号的回應,以下為示例:
Binary Host Zone Status State Updated_At
nova-compute myhost nova enabled :-) 2012-04-02 14:06:15
nova-cert myhost nova enabled :-) 2012-04-02 14:06:16
nova-volume myhost nova enabled :-) 2012-04-02 14:06:14
nova-scheduler myhost nova enabled :-) 2012-04-02 14:06:11
nova-network myhost nova enabled :-) 2012-04-02 14:06:13
nova-consoleauth myhost nova enabled :-) 2012-04-02 14:06:10
你也可以運作nova-manage檢視安裝軟體的版本:
# nova-manage version list
Essex版本的Compute版本号是2012.1
2012.1 (2012.1-LOCALBRANCH:LOCALREVISION)
5.4 定義Compute與Image服務的認證
建立nova與glance指令行需要使用的變量,并儲存至openrc檔案,本文将openrc檔案儲存至~/creds目錄下:
$ mkdir ~/creds
$ nano ~/creds/openrc
在你建立的openrc檔案中粘貼以下内容:
export OS_USERNAME=adminUser
export OS_TENANT_NAME=openstackDemo
export OS_PASSWORD=secretword
export OS_REGION_NAME=RegionOne
接着,讓這些變量應用到你的系統環境中:
$ source ~/creds/openrc
通過nova用戶端指令顯示可用鏡像驗證認證功能是否正常:
注意你的系統中ID号将會此有所不同。
5.5 安裝額外的Compute節點
為了大規模部署Compute,有多種途徑可以幫助你在多個節點安裝Compute。
你可以安裝所有的nova- 軟體包及其依賴關系包,或僅安裝nova-network與nova-compute元件在你的雲控制節點上。你可以在任何地方安裝nova- 服務,隻要服務可以通路nova.conf并知道消息隊列軟體(Rabbitmq | Qpid)安裝在哪即可。
因為Compute節點需要查詢資料庫資訊,是以nova用戶端與MySQL用戶端軟體包都應該安裝在附加Compute節點上。
拷貝nova.conf到所有的附件compute節點。
未完待續… …
本文轉自丁丁曆險51CTO部落格,原文連結:http://blog.51cto.com/manual/976083 ,如需轉載請自行聯系原作者