用戶OpenStack計算去託管和管理雲計算系統。OpenStack計算是基礎即架構服務(IaaS)系統的一個重要組成部分。主要模塊是用Pthon實現的。html
OpenStack計算與OpenStack身份認證進行認證交互;OpenStack Image提供磁盤和服務器鏡像服務;而OpenStack dashboard爲用戶提供界面交互。鏡像的訪問是受項目和用戶的限制;配額是受每一個項目限制(如雲主機實例的數量)。OpenStack計算可橫向擴展標準硬件,而且下載鏡像到啓動的雲主機實例。html5
OpenStack計算由下面幾方面和組件構成:java
Nova-api servicemysql
接受和響應終端用戶計算API的調用。該服務支持OpenStack計算API,Amazon EC2 API,和給特權用戶執行管理操做的特定管理API。它執行一些政策,並啓動大部分的業務流程活動,例如運行一個實例。sql
nova-api-metadata service數據庫
接受來自雲主機實例的元數據請求。當你的OpenStack環境是採用nova-network的多節點模式進行安裝時,nova-api-metadata服務一般是須要被用到的。更多細節,請查看Metadata service手冊。api
nova-compute service瀏覽器
一個工做守護進程經過管理程序API來建立和終止虛擬機實例。例如:服務器
l XenAPI for XenServer/XCP網絡
l libvirt for KVM or QEMU
l VMwareAPI for Vmware
處理是至關複雜的。基本上,該守護進程接受來自隊列的操做並執行一系列的系統命令,例如啓動一個KVM實例和更新其在數據庫中的狀態。
nova-scheduler service
從隊列中取出一個虛擬機實例請求,並肯定它運行在個計算服務器主機。
nova-conductor module
調解nova-compute計算服務和數據庫之間的相互做用。它消除了直接訪問由nova-compute服務組成的雲數據庫。Noa-conductor模塊水平縮放。但是不要在運行nova-compute服務的節點部署它。更多信息查看,Configuration Reference Guide.
nova-cert module
一個服務器守護進程爲Nova Cert服務提供X509證書服務。用於生成euca-bundle-image證書。只有在EC2 API使用中才會被用到。
nova-network worker daemon
和nova-compute服務相似,接受來自隊列的網絡任務並操做網絡。執行任務,例如設置格拉接口或者改變Iptables規則。
nova-consoleauth daemon
爲用戶控制檯代理提供受權令牌。請了解See nova-novncproxy 和 nova-xvpvncproxy。此服務必須運行於控制代理工做中。你能夠在配置單nova-consoleauth服務的集羣配置中運行兩種類型的代理。更多信息,查看About nova-consoleauth.
nova-novncproxy daemon
爲經過VNC鏈接訪問運行中的雲主機實例提供代理。支持基於瀏覽器的VNC客戶端。
nova-spicehtml5proxy daemon
爲經過SPICE鏈接訪問運行中的雲主機實例提供代理。支持基於瀏覽器的HTML客戶端。
nova-xvpvncproxy daemon
爲經過VNC鏈接訪問運行中的雲主機實例提供代理。支持基於特定的OpenStack java客戶端。
nova-cert daemon
x509 證書
nova client
容許用戶提交做爲管理或終端用戶的命令。
The queue
守護進程以前進行消息傳遞的一箇中心樞紐。一般用RabbitMQ實現,也能夠用另外一個AMQP消息隊列來實現,如ZeroMQ。
SQL database
爲雲基礎架構提供大多數編譯時和運行時的狀態存儲,包括:
l 可用實例類型
l 在使用實例
l 可用網絡
l 項目
理論上,OpenStack能夠支持SQL-Alchemy支持的任務數據庫。常見的SQLite3數據庫用於測試和開發工做,MySQL, 和 PostgreSQL。
下面步驟介紹如何在控制節點安裝和配置計算服務。
開始安裝和配置鏡像服務前須要先建立一個數據庫,服務憑證和API端點。
1.如下幾步完成數據庫建立:
l用root帳號登錄數據庫
mysql -u root -p
l建立nova_api 和 nova數據庫
CREATE DATABASE nova_api;
CREATE DATABASE nova;
l給數據庫受權
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
l退出數據庫
2.加載admin憑證
. admin-openrc
3.建立服務憑證
l建立nova用戶
openstack user create --domain default --password-prompt nova
l將admin角色添加給nova用戶
openstack role add --project service --user nova admin
l建立nova service entity
openstack service create --name nova --description "OpenStack Compute" compute
4.建立nova service API endpoints
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s
1.安裝軟件包
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
2.編輯/etc/nova/nova.conf文件,完成下面幾步修改
l在[DEFAULT],配置僅啓用計算和元數據API:
[DEFAULT]
...
enabled_apis = osapi_compute,metadata
l在[api_database] 和 [database]部分,配置數據庫的訪問
[api_database]
...
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
...
connection = mysql+pymysql://nova:nova@controller/nova
l在[DEFAULT]和[oso_messaging_rabbit]部分,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = xxxxxxxx
l在[DEFAULT]和[keystone_authtoken],配置Identity服務數據庫訪問
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
l在[DEFAULT]部分,將my_ip配置爲controller節點的管理接口IP地址
[DEFAULT]
...
my_ip = 192.168.213.81
l在[DEFAULT]部分,啓用對網絡服務的支持
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
l在[vnc]部分,配置VNC代理使用controller節點管理接口IP地址
[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
l在[glance]部分,配置鏡像服務API的location
[glance]
...
api_servers = http://controller:9292
l在[oslo_concurrency]部分,配置鏡像服務API的location
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
3.同步填充Compute數據庫
# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova
若輸入下列deprecation信息,可忽略
1.啓動compute服務並配置開機自啓動
systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
這部分描述如何在計算節點安裝和配置計算服務。該服務支持幾種hypervisors去部署instances 或 VMs。爲簡單起見,這個配置在計算節點使用帶KVM擴展的QEMU管理程序,它應支持硬件加速的虛擬機。在舊式硬件上,該配置使用通用的QEMU管理程序。你能夠按照這些說明進行較小的修改,以水平擴展你的環境與額外的計算節點。
1.安裝軟件包
yum install openstack-nova-compute
2.編輯/etc/nova/nova.conf文件,完成下面幾步修改
l在[DEFAULT]和[oslo_messaging_rabbit]部分,配置RabbitMQ消息隊列訪問:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
將RABBIT_PASS換成正確的密碼
l在[default] 和 [keystone_authtoken]部分,配置Identity service的訪問
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
l在[default]部分,配置my_ip
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
將MANAGEMENT_INTERFACE_IP_ADDRESS替換成計算節點的管理網絡接口的IP地址
l在[default]部分,打開網絡服務支持
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
l 在[vnc]部分,配置遠程控制檯的訪問
[vnc]
...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
服務器組件監聽全部的IP地址,代理組件只監聽計算節點的管理接口IP地址。Base URL表示你可使用Web瀏覽器訪問計算節點上實例遠程控制檯的位置。
l在[glance]部分,配置Image service API的位置
[glance]
...
api_servers = http://controller:9292
l在[oslo_concurrency]部分,配置lock path
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
1.測試計算節點是否支持虛擬機的硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
若是命令返回值是大於等於1,說明你的計算節點支持硬件加速,這種狀況一般不需作額外配置。若是命令返回值是0,你的計算節點不支持硬件加速,必須將的libvirt由KVM改成QEMU。
l在編輯/etc/nova/nova.conf文件,並按下面內容修改[libvirt]部分
[libvirt]
...
virt_type = qemu
2.啓動服務並設置開機自啓動
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
在controller節點執行下面命令
1.加載admin憑證
. admin-openrc
2.例出服務組件以驗證每一個進程的成功推出和註冊
openstack compute service list
備註:輸入應該列出在控制節點啓動的三個服務組件和在計算節點啓動的一個服務組件。