1、nova簡介
html
計算服務是雲計算的控制器,它是IaaS系統的主要部分,用它來承載和管理雲計算系統,主模塊是用python來實現的。它與身份認證服務的驗證、鏡像服務的鏡像以及dashboard的用戶和管理界面交互,獲取鏡像經過項目和用戶配額限制(好比實例的數量)。計算服務根據啓動的實例在標準硬件水平上進行擴展和下載鏡像實現。java
2、計算服務的功能區域和組件python
1.APImysql
(1)Nova-api服務,接收和響應終端用戶的計算API調用,支持openstack計算API,Amazon EC2 api和Admin Api對特權用戶執行管理操做。sql
(2)Nova-api-metadata接受來自實例的元數據請求,該服務一般在nova-network下的多主機模式下運行。數據庫
2.Compute coreapache
(1)nova-compute進程,一個守護進程,經過虛擬機管理程序的API建立和終止虛擬機實例,如xenserver/xcp的XenAPI、kvm或qemu的libvirt、vmware的vmwareapi等等。該進程的運做過程很複雜,可是基本流程很簡單:從隊列和執行一序列系統命令來接受操做,像啓動KVM實例,當數據庫中的狀態更新時執行。api
(2)Nova-scheduler進程,從消息隊列中取一個虛擬機實例的請求,並執行在其虛擬主機上。瀏覽器
(3)Nova-conductor模式,介於nova-computer和database之間,設計目的在於消除直接nova-computer直接訪問雲數據庫。網絡
3.Networking for VMs
(1)Nova-network工做守護進程,相似nova-computer,它從消息隊列和執行操做網絡中獲取網絡任務,如設立橋接接口或者更改iptables規則,該功能即將遷移到openstack網絡服務,這是一個獨立的openstack服務。
(2)Nova-dhcpbridge腳本,跟蹤IP地址租約,並經過使用dnsmasq的DHCP腳本記錄在數據庫中。該功能也遷移到openstack網絡服務,openstack網絡服務提供了一個不一樣的腳本。
4.Console interface
(1)Noca-consoleauth守護進程,由用戶的console控制檯代理提供受權tokens,兩種模式nova-novncproxy和nova-x***vcproxy。該服務必須在控制代理工做的時候運行。
(2)nova-novncproxy守護進程,提供了VNC鏈接訪問正在運行的實例的代理,支持基於novnc客戶瀏覽器。
(3)nova-x***vncproxy 守護進程,經過vnc鏈接訪問正在運行的實例代理,支持專門設計的Openstack的java客戶端
(4)Nova-cert守護進程,管理x509證書
5.Image management
(1)nova-objectstore提供了一個S3接口用來註冊鏡像服務,主要必須支持euca2ools安裝,nova-objectstore轉換S3請求鏡像服務的請求
(2)Euca2ools 客戶端,一組命令解釋器來管理雲資源,能夠配置nova-api來支持EC2接口
6.Command-line clients and other interfaces
(1)Nova客戶端,使用戶、租客管理員提交命令
(2)Nova-manage客戶端,使雲管理員提交命令
7.其它組件
(1)The queue消息隊列,如rabbitmq,apache qpid zeromq
(2)Sql database數據庫,如mysql,sqlite,PostgreSQL
3、安裝計算控制服務
計算服務是一個服務的集合,用來啓動你的虛擬機實例,你能夠配置這些服務運行在單獨的節點。這個嚮導大多數服務運行在控制節點,服務啓動的虛擬機運行在一個專用的計算節點。本節描述如何在控制節點上安裝配置這些服務。
1.安裝控制器節點所需的計算服務軟件包
# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler \
python-novaclient
2.計算服務須要存儲信息到數據庫,在這裏咱們使用在控制節點上的mysql數據庫。爲計算服務配置數據庫的訪問
# openstack-config --set /etc/nova/nova.conf \
database connection mysql://nova:nova@controller/nova
3.設置鑰匙用來配置計算服務使用qpid隊列代理服務
# openstack-config --set /etc/nova/nova.conf \
DEFAULT rpc_backend qpid
# openstack-config --set /etc/nova/nova.conf DEFAULT
qpid_hostname controller
4.設置my_ip、vncserver_listen和vnserver_proxyclient_address配置選項的值爲控制節點的管理網絡IP地址
# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.0.0.11
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 10.0.0.11
# openstack-config --set /etc/nova/nova.conf DEFAULT \
vncserver_proxyclient_address 10.0.0.11
5.建立nova數據庫和用戶,並授予訪問權限
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'nova';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'nova';
6.填充nova數據庫
# su -s /bin/sh -c "nova-manage db sync" nova
7.爲計算服務建立nova用戶用來經過身份認證服務的驗證。
# keystone user-create --name=nova --pass=openstack --email=353764437@qq.com
# keystone user-role-add --user=nova --tenant=service --role=admin
8.在控制節點上配置計算服務使用身份認證服務的這些憑證
# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_uri http://controller:5000
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_host controller
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
admin_password openstack
9.你必須爲計算服務註冊身份認證,方便其餘openstack服務能夠找到它。註冊服務和指定端點
# keystone service-create --name=nova --type=compute \
--description="OpenStack Compute"
# keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ compute / {print $2}') \
--publicurl=http://controller:8774/v2/%\(tenant_id\)s \
--internalurl=http://controller:8774/v2/%\(tenant_id\)s \
--adminurl=http://controller:8774/v2/%\(tenant_id\)s
10.啓動服務並配置開機啓動
# service openstack-nova-api start
# service openstack-nova-cert start
# service openstack-nova-consoleauth start
# service openstack-nova-scheduler start
# service openstack-nova-conductor start
# service openstack-nova-novncproxy start
# chkconfig openstack-nova-api on
# chkconfig openstack-nova-cert on
# chkconfig openstack-nova-consoleauth on
# chkconfig openstack-nova-scheduler on
# chkconfig openstack-nova-conductor on
# chkconfig openstack-nova-novncproxy on
11.驗證配置,列出可用鏡像
# nova p_w_picpath-list
4、配置一個計算節點
在你在控制節點配置完計算服務後,你必須配置另一個系統爲計算節點。計算節點接收來自控制節點和主機的虛擬機實例的請求。你能夠在單個節點運行全部服務,可是本指南中的例子使用單獨的節點。這樣容易經過添加計算節點來進行水平擴展。
計算服務依賴於一個hypervisor運行虛擬機實例。openstack可使用各類hypervisor,本指南中使用KVM。
1.安裝計算服務包
# yum install -y openstack-nova-compute
2.編輯/etc/nova/nova.conf文件
# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:nova@controller/nova
# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_uri http://controller:5000
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_host controller
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken \
admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf keystone_authtoken
admin_password openstack
3.經過設置配置key配置計算服務使用qpid消息代理服務
# openstack-config --set /etc/nova/nova.conf \
DEFAULT rpc_backend qpid
# openstack-config --set /etc/nova/nova.conf DEFAULT \
qpid_hostname controller
4.配置計算服務提供遠程控制訪問實例
# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.0.0.31
# openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
# openstack-config --set /etc/nova/nova.conf DEFAULT \
vncserver_proxyclient_address 10.0.0.31
# openstack-config --set /etc/nova/nova.conf \
DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.html
5.執行主機運行的鏡像服務
# openstack-config --set /etc/nova/nova.conf DEFAULT \
glance_host controller
6.必須指定你係統的處理器的hypervisor支持虛擬機硬件加速,運行下面命令
# egrep -c '(vmx|svm)' /proc/cpuinfo
若是該命令返回1或者更大的數字,說明你的系統支持硬件加速,一般不須要額外的配置。若是該命令返回0,你的系統不支持硬件加速,那麼你必須配置libvirt使用QEMU來代替KVM,經過如下命令
# openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu
注意:這裏咱們使用KVM,因此必須在VMware配置CPU使用虛擬化,以下圖
7.啓動服務並配置開機啓動
# service libvirtd start
# service messagebus start
# service openstack-nova-compute start
# chkconfig libvirtd on
# chkconfig messagebus on
# chkconfig openstack-nova-compute on
至此,nova服務安裝完畢!