天天看點

OpenStack雲第四天

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&gt; CREATE  DATABASE  nova; 

建立MySQL使用者并賦予對建立資料庫的所有權限: 

mysql&gt; GRANT  ALL ON  nova.*  TO  'nova'@'%’IDENTIFIED  BY  '密碼'; 

mysql&gt; 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;  \ 

&gt; 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  \ 

&gt; --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 ,如需轉載請自行聯系原作者