計(jì)算服務(wù)概覽
使用OpenStack計(jì)算服務(wù)來(lái)托管和管理云計(jì)算系統(tǒng)。OpenStack計(jì)算服務(wù)是基礎(chǔ)設(shè)施即服務(wù)(IaaS)系統(tǒng)的主要部分,模塊主要由Python實(shí)現(xiàn)。
OpenStack計(jì)算組件請(qǐng)求OpenStack Identity服務(wù)進(jìn)行認(rèn)證;請(qǐng)求OpenStack Image服務(wù)提供磁盤(pán)鏡像;為OpenStack dashboard提供用戶與管理員接口。磁盤(pán)鏡像訪問(wèn)限制在項(xiàng)目與用戶上;配額以每個(gè)項(xiàng)目進(jìn)行設(shè)定(例如,每個(gè)項(xiàng)目下可以創(chuàng)建多少實(shí)例)。OpenStack組件可以在標(biāo)準(zhǔn)硬件上水平大規(guī)模擴(kuò)展,并且下載磁盤(pán)鏡像啟動(dòng)虛擬機(jī)實(shí)例。
OpenStack計(jì)算服務(wù)由下列組件所構(gòu)成:
-
nova-api 服務(wù)
接收和響應(yīng)來(lái)自最終用戶的計(jì)算API請(qǐng)求。此服務(wù)支持OpenStack計(jì)算服務(wù)API,Amazon EC2 API,以及特殊的管理API用于賦予用戶做一些管理的操作。它會(huì)強(qiáng)制實(shí)施一些規(guī)則,發(fā)起多數(shù)的編排活動(dòng),例如運(yùn)行一個(gè)實(shí)例。
-
nova-api-metadata 服務(wù)
接受來(lái)自虛擬機(jī)發(fā)送的元數(shù)據(jù)請(qǐng)求。
nova-api-metadata服務(wù)一般在安裝nova-network服務(wù)的多主機(jī)模式下使用。更詳細(xì)的信息,請(qǐng)參考OpenStack管理員手冊(cè)中的鏈接Metadata service <http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service>__ in the OpenStack Administrator Guide。 -
nova-compute服務(wù)一個(gè)持續(xù)工作的守護(hù)進(jìn)程,通過(guò)Hypervior的API來(lái)創(chuàng)建和銷(xiāo)毀虛擬機(jī)實(shí)例。例如:
XenServer/XCP 的 XenAPI
KVM 或 QEMU 的 libvirt
VMware 的 VMwareAPI
過(guò)程是蠻復(fù)雜的。最為基本的,守護(hù)進(jìn)程同意了來(lái)自隊(duì)列的動(dòng)作請(qǐng)求,轉(zhuǎn)換為一系列的系統(tǒng)命令如啟動(dòng)一個(gè)KVM實(shí)例,然后,到數(shù)據(jù)庫(kù)中更新它的狀態(tài)。
-
nova-scheduler服務(wù)拿到一個(gè)來(lái)自隊(duì)列請(qǐng)求虛擬機(jī)實(shí)例,然后決定那臺(tái)計(jì)算服務(wù)器主機(jī)來(lái)運(yùn)行它。
-
nova-conductor模塊媒介作用于
nova-compute服務(wù)與數(shù)據(jù)庫(kù)之間。它排除了由nova-compute服務(wù)對(duì)云數(shù)據(jù)庫(kù)的直接訪問(wèn)。nova-conductor模塊可以水平擴(kuò)展。但是,不要將它部署在運(yùn)行nova-compute服務(wù)的主機(jī)節(jié)點(diǎn)上。參考Configuration Reference Guide http://docs.openstack.org/mitaka/config-reference/compute/conductor.html`__。 -
nova-cert模塊服務(wù)器守護(hù)進(jìn)程向Nova Cert服務(wù)提供X509證書(shū)。用來(lái)為
euca-bundle-image生成證書(shū)。僅僅是在EC2 API的請(qǐng)求中使用 -
nova-network worker 守護(hù)進(jìn)程
與
nova-compute服務(wù)類(lèi)似,從隊(duì)列中接受網(wǎng)絡(luò)任務(wù),并且操作網(wǎng)絡(luò)。執(zhí)行任務(wù)例如創(chuàng)建橋接的接口或者改變IPtables的規(guī)則。 -
nova-consoleauth 守護(hù)進(jìn)程
授權(quán)控制臺(tái)代理所提供的用戶令牌。詳情可查看
nova-novncproxy和 nova-xvpvncproxy。該服務(wù)必須為控制臺(tái)代理運(yùn)行才可奏效。在集群配置中你可以運(yùn)行二者中任一代理服務(wù)而非僅運(yùn)行一個(gè)nova-consoleauth服務(wù)。更多關(guān)于nova-consoleauth的信息,請(qǐng)查看About nova-consoleauth <http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth>__。 -
nova-novncproxy 守護(hù)進(jìn)程
提供一個(gè)代理,用于訪問(wèn)正在運(yùn)行的實(shí)例,通過(guò)VNC協(xié)議,支持基于瀏覽器的novnc客戶端。
-
nova-spicehtml5proxy 守護(hù)進(jìn)程
提供一個(gè)代理,用于訪問(wèn)正在運(yùn)行的實(shí)例,通過(guò) SPICE 協(xié)議,支持基于瀏覽器的 HTML5 客戶端。
-
nova-xvpvncproxy 守護(hù)進(jìn)程
提供一個(gè)代理,用于訪問(wèn)正在運(yùn)行的實(shí)例,通過(guò)VNC協(xié)議,支持OpenStack特定的Java客戶端。
-
nova-cert 守護(hù)進(jìn)程
X509 證書(shū)。
-
nova客戶端用于用戶作為租戶管理員或最終用戶來(lái)提交命令。
-
隊(duì)列
一個(gè)在守護(hù)進(jìn)程間傳遞消息的中央集線器。常見(jiàn)實(shí)現(xiàn)有
RabbitMQ <http://www.rabbitmq.com/>__ , 以及如Zero MQ <http://www.zeromq.org/>__等AMQP消息隊(duì)列。 -
SQL數(shù)據(jù)庫(kù)
存儲(chǔ)構(gòu)建時(shí)和運(yùn)行時(shí)的狀態(tài),為云基礎(chǔ)設(shè)施,包括有:
可用實(shí)例類(lèi)型
使用中的實(shí)例
可用網(wǎng)絡(luò)
項(xiàng)目
理論上,OpenStack計(jì)算可以支持任何和SQL-Alchemy所支持的后端數(shù)據(jù)庫(kù),通常使用SQLite3來(lái)做測(cè)試可開(kāi)發(fā)工作,MySQL和PostgreSQL 作生產(chǎn)環(huán)境。
第一步:安裝并配置控制節(jié)點(diǎn)(控制節(jié)點(diǎn))
這個(gè)部分將描述如何在控制節(jié)點(diǎn)上安裝和配置 Compute 服務(wù),即 nova。
1.先決條件
在安裝和配置 Compute 服務(wù)前,你必須創(chuàng)建數(shù)據(jù)庫(kù)服務(wù)的憑據(jù)以及 API endpoints。
- 1.為了創(chuàng)建數(shù)據(jù)庫(kù),必須完成這些步驟:
以下有6處
xiaoliu,請(qǐng)根據(jù)實(shí)際情況更改
# 用數(shù)據(jù)庫(kù)連接客戶端以 root 用戶連接到數(shù)據(jù)庫(kù)服務(wù)器:
mysql -u root -p
# 2.創(chuàng)建 nova_api 和 nova 數(shù)據(jù)庫(kù):
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
# 3.對(duì)數(shù)據(jù)庫(kù)進(jìn)行正確的授權(quán):
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'xiaoliu';
- 2.獲得 admin 憑證來(lái)獲取只有管理員能執(zhí)行的命令的訪問(wèn)權(quán)限:
source /home/admin-openrc
echo $OS_USERNAME
- 3.要?jiǎng)?chuàng)建服務(wù)證書(shū),完成這些步驟:
# 1.創(chuàng)建 nova 用戶:
openstack user create --domain default --password-prompt nova
# 2.給 nova 用戶添加 admin 角色(這個(gè)命令執(zhí)行后沒(méi)有輸出):
openstack role add --project service --user nova admin
# 3.創(chuàng)建 nova 服務(wù)實(shí)體:
openstack service create --name nova --description "OpenStack Compute" compute
- 4.創(chuàng)建 Compute 服務(wù) API 端點(diǎn) :
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
- 5.使用您選擇的創(chuàng)建Placement服務(wù)用戶PLACEMENT_PASS:
openstack user create --domain default --password-prompt placement
- 6.使用admin角色將Placement用戶添加到服務(wù)項(xiàng)目(此命令不提供輸出):
openstack role add --project service --user placement admin
- 7.在服務(wù)目錄中創(chuàng)建Placement API條目:
openstack service create --name placement --description "Placement API" placement
- 8.創(chuàng)建Placement API服務(wù)端點(diǎn):
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
- 9.以上命令輸出展示
[root@controller html]# source /home/admin-openrc
[root@controller html]# echo $OS_USERNAME
admin
[root@controller html]# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 08eb041c35cf45fb85d69ad8a256e054 |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
[root@controller html]# openstack role add --project service --user nova admin
[root@controller html]# openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 20972a76b318429ea55e9e8b52a90632 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 938cac58c5ef433faf2da39e853e5e39 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 20972a76b318429ea55e9e8b52a90632 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 4f991b08697f41ba819f124e98bebd12 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 20972a76b318429ea55e9e8b52a90632 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | d15364459e214fc8bb199f388c857463 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 20972a76b318429ea55e9e8b52a90632 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+----------------------------------+
[root@controller html]# openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | b6e431f29b8a4849a27d2651903cfde2 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
[root@controller html]# openstack role add --project service --user placement admin
[root@controller html]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 617e334646ab4b099a2702b643d8c900 |
| name | placement |
| type | placement |
+-------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 541b4dbee64b4b948b84aaba21f70e1c |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 617e334646ab4b099a2702b643d8c900 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 604dd6ee7ef54e4e855d7d8688af0d18 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 617e334646ab4b099a2702b643d8c900 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 0bac998fd8ae45bb91787a08226883a5 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 617e334646ab4b099a2702b643d8c900 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
2.安全并配置組件
默認(rèn)配置文件在各發(fā)行版本中可能不同。你可能需要添加這些部分,選項(xiàng)而不是修改已經(jīng)存在的部分和選項(xiàng)。另外,在配置片段中的省略號(hào)(...)表示默認(rèn)的配置選項(xiàng)你應(yīng)該保留。
- 1.安裝軟件包:
yum install -y openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
- 2.編輯
/etc/nova/nova.conf文件并完成下面的操作:
以下有4處
xiaoliu,請(qǐng)根據(jù)自己實(shí)際情況更改
以下有一處IP地址為控制端IP地址,請(qǐng)根據(jù)自己實(shí)際情況更改
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
cat /etc/nova/nova.conf.bak | grep -v "^#" | grep -v '^/article> > /etc/nova/nova.conf
vim /etc/nova/nova.conf
# 1.在``[DEFAULT]``部分,只啟用計(jì)算和元數(shù)據(jù)API:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
# 2.在``[api_database]``和``[database]``部分,配置數(shù)據(jù)庫(kù)的連接:
# 用你為 Compute 數(shù)據(jù)庫(kù)選擇的密碼來(lái)代替 NOVA_DBPASS。
[api_database]
# ...
connection = mysql+pymysql://nova:xiaoliu@controller/nova_api
[database]
# ...
connection = mysql+pymysql://nova:xiaoliu@controller/nova
# 3.在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息隊(duì)列訪問(wèn):
# 用你在 “RabbitMQ” 中為 “openstack” 選擇的密碼替換 “RABBIT_PASS”。
[DEFAULT]
# ...
transport_url = rabbit://openstack:xiaoliu@controller
# 4.在 “[api]” 和 “[keystone_authtoken]” 部分,配置認(rèn)證服務(wù)訪問(wèn):
# 使用你在身份認(rèn)證服務(wù)中設(shè)置的``nova`` 用戶的密碼替換``NOVA_PASS``。
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = xiaoliu
# 5.在 [DEFAULT 部分,配置``my_ip`` 來(lái)使用控制節(jié)點(diǎn)的管理接口的IP 地址。
[DEFAULT]
...
my_ip = 10.0.1.61
# 6.在 [DEFAULT] 部分,使能 Networking 服務(wù):
# 默認(rèn)情況下,計(jì)算服務(wù)使用內(nèi)置的防火墻服務(wù)。
# 由于網(wǎng)絡(luò)服務(wù)包含了防火墻服務(wù),
# 你必須使用``nova.virt.firewall.NoopFirewallDriver``防火墻服務(wù)來(lái)禁用掉計(jì)算服務(wù)內(nèi)置的防火墻服務(wù)
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
# 7.在``[vnc]``部分,配置VNC代理使用控制節(jié)點(diǎn)的管理接口IP地址 :
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip
# 8.在 [glance] 區(qū)域,配置鏡像服務(wù) API 的位置:
[glance]
# ...
api_servers = http://controller:9292
# 9.在 [oslo_concurrency] 部分,配置鎖路徑:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
# 10.在該[placement]部分中,配置Placement API:
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = xiaoliu
# 11.由于打包錯(cuò)誤,您必須通過(guò)將以下配置添加到以下內(nèi)容來(lái)啟用對(duì)Placement API的訪問(wèn)
vim /etc/httpd/conf.d/00-nova-placement-api.conf
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
# Restart the httpd service:
systemctl restart httpd
systemctl status httpd
- 3.填充nova-api數(shù)據(jù)庫(kù)(忽略此輸出中的任何棄用消息):
su -s /bin/sh -c "nova-manage api_db sync" nova
- 4.注冊(cè)cell0數(shù)據(jù)庫(kù):
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
- 5.創(chuàng)建cell1單元格:
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
- 6.填充新星數(shù)據(jù)庫(kù):
su -s /bin/sh -c "nova-manage db sync" nova
- 7.驗(yàn)證nova cell0和cell1是否正確注冊(cè):
nova-manage cell_v2 list_cells
- 8.以上命令輸出展示
[root@controller html]# su -s /bin/sh -c "nova-manage api_db sync" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
[root@controller html]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
[root@controller html]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
48e8e55e-7b55-40f6-84bb-e1acc878140c
[root@controller html]# su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
[root@controller html]# nova-manage cell_v2 list_cells
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
| 名稱 | UUID | Transport URL | 數(shù)據(jù)庫(kù)連接 |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:****@controller/nova_cell0 |
| cell1 | 48e8e55e-7b55-40f6-84bb-e1acc878140c | rabbit://openstack:****@controller | mysql+pymysql://nova:****@controller/nova |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
- 9.驗(yàn)證數(shù)據(jù)庫(kù)是否寫(xiě)入成功
# 應(yīng)該有110張表
mysql -uroot -p'xiaoliu' -D nova -se "show tables"
mysql -uroot -p'xiaoliu' -D nova -se "show tables" | wc -l
# 應(yīng)該有32張表
mysql -uroot -p'xiaoliu' -D nova_api -se "show tables"
mysql -uroot -p'xiaoliu' -D nova_api -se "show tables" | wc -l
mysql -uroot -p'xiaoliu' -D nova_cell0 -se "show tables"
mysql -uroot -p'xiaoliu' -D nova_cell0 -se "show tables" | wc -l
3.完成安裝:?jiǎn)?dòng) Compute 服務(wù)并將其設(shè)置為隨系統(tǒng)啟動(dòng)
systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl stop 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
systemctl status openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
第二步:安裝和配置計(jì)算節(jié)點(diǎn)(計(jì)算節(jié)點(diǎn))
該服務(wù)支持多個(gè)虛擬機(jī)管理程序來(lái)部署實(shí)例或虛擬機(jī)(VM)。為簡(jiǎn)單起見(jiàn),此配置使用Quick EMUlator(QEMU)虛擬機(jī)管理程序和支持虛擬機(jī)硬件加速的計(jì)算節(jié)點(diǎn)上的基于內(nèi)核的VM(KVM)擴(kuò)展。在傳統(tǒng)硬件上,此配置使用通用QEMU管理程序。您可以通過(guò)稍作修改來(lái)遵循這些說(shuō)明,以使用其他計(jì)算節(jié)點(diǎn)水平擴(kuò)展您的環(huán)境。
1.啟用OpenStack庫(kù)
在CentOS中, extras倉(cāng)庫(kù)提供用于啟用 OpenStack 倉(cāng)庫(kù)的RPM包。 CentOS 默認(rèn)啟用extras倉(cāng)庫(kù),因此你可以直接安裝用于啟用OpenStack倉(cāng)庫(kù)的包。
# 如果更新了一個(gè)新內(nèi)核,重啟主機(jī)來(lái)使用新內(nèi)核。
yum repolist
yum install -y centos-release-openstack-queens
yum upgrade -y
2.安全并配置組件
- 1.安裝軟件包:
yum install -y openstack-nova-compute
- 2.編輯
/etc/nova/nova.conf文件并完成下面的操作:
以下有兩處
xiaoliu, 請(qǐng)根據(jù)自己實(shí)際情況修改
以下有六處
controller,請(qǐng)根據(jù)自己實(shí)際情況修改
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
cat /etc/nova/nova.conf.bak | grep -v "^#" | grep -v '^/article> > /etc/nova/nova.conf
vim /etc/nova/nova.conf
# 1.在該[DEFAULT]部分中,僅啟用計(jì)算和元數(shù)據(jù)API:
# 在該[DEFAULT]部分中,配置RabbitMQ消息隊(duì)列訪問(wèn):
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:xiaoliu@controller
# 2.在[api]和[keystone_authtoken]部分中,配置身份服務(wù)訪問(wèn):
# 注釋掉或刪除該[keystone_authtoken] 部分中的任何其他選項(xiàng)。
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = xiaoliu
# 3.在該[DEFAULT]部分中,配置my_ip選項(xiàng):
# 替換MANAGEMENT_INTERFACE_IP_ADDRESS為計(jì)算節(jié)點(diǎn)上管理網(wǎng)絡(luò)接口的IP地址
[DEFAULT]
# ...
my_ip = 10.0.1.62
# 4.在該[DEFAULT]部分中,啟用對(duì)網(wǎng)絡(luò)服務(wù)的支持:
# 默認(rèn)情況下,Compute使用內(nèi)部防火墻服務(wù)。由于Networking包含防火墻服務(wù)
# 因此必須使用nova.virt.firewall.NoopFirewallDriver防火墻驅(qū)動(dòng)程序禁用Compute防火墻服務(wù)。
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
# 5.在該[vnc]部分中,啟用并配置遠(yuǎn)程控制臺(tái)訪問(wèn):
# 如果要訪問(wèn)遠(yuǎn)程控制臺(tái)的Web瀏覽器駐留在無(wú)法解析controller主機(jī)名的主機(jī)上
# 則必須controller使用控制器節(jié)點(diǎn)的管理接口IP地址替換
[vnc]
# ...
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
# 6.在該[glance]部分中,配置Image服務(wù)API的位置:
[glance]
# ...
api_servers = http://controller:9292
# 7.在該[oslo_concurrency]部分中,配置鎖定路徑:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
# 8.在該[placement]部分中,配置Placement API:
# 注釋掉該[placement]部分中的任何其他選項(xiàng)。
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = xiaoliu
3.完成安裝
- 1.確定您的計(jì)算節(jié)點(diǎn)是否支持虛擬機(jī)的硬件加速。
egrep -c '(vmx|svm)' /proc/cpuinfo
# 如果這個(gè)命令返回了 one or greater 的值,那么你的計(jì)算節(jié)點(diǎn)支持硬件加速且不需要額外的配置。
# 如果這個(gè)命令返回了 zero 值,那么你的計(jì)算節(jié)點(diǎn)不支持硬件加速。你必須配置 libvirt 來(lái)使用 QEMU 去代替 KVM
# 在 /etc/nova/nova.conf 文件的 [libvirt] 區(qū)域做出如下的編輯:
[libvirt]
...
virt_type = qemu
- 2.啟動(dòng)計(jì)算服務(wù)及其依賴,并將其配置為隨系統(tǒng)自動(dòng)啟動(dòng):
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl stop libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
systemctl status libvirtd.service openstack-nova-compute.service
第三步:將計(jì)算節(jié)點(diǎn)添加到單元數(shù)據(jù)庫(kù)(控制節(jié)點(diǎn))
# 獲取管理員憑據(jù)以啟用僅管理員CLI命令,然后確認(rèn)數(shù)據(jù)庫(kù)中是否存在計(jì)算主機(jī):
source /home/admin-openrc
echo $OS_USERNAME
openstack compute service list --service nova-compute
# 發(fā)現(xiàn)計(jì)算主機(jī):
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
# 輸出結(jié)果展示:
[root@controller html]# source /home/admin-openrc
[root@controller html]# echo $OS_USERNAME
admin
[root@controller html]# openstack compute service list --service nova-compute
+----+--------------+----------+------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+--------------+----------+------+---------+-------+----------------------------+
| 6 | nova-compute | compute1 | nova | enabled | up | 2019-01-20T13:58:26.000000 |
+----+--------------+----------+------+---------+-------+----------------------------+
[root@controller html]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': 48e8e55e-7b55-40f6-84bb-e1acc878140c
Checking host mapping for compute host 'compute1': a42100e8-83de-4500-b22a-831d3f6de399
Creating host mapping for compute host 'compute1': a42100e8-83de-4500-b22a-831d3f6de399
Found 1 unmapped computes in cell: 48e8e55e-7b55-40f6-84bb-e1acc878140c
注意:
添加新計(jì)算節(jié)點(diǎn)時(shí),必須在控制器節(jié)點(diǎn)上運(yùn)行以注冊(cè)這些新計(jì)算節(jié)點(diǎn)?;蛘?,您可以在以下位置設(shè)置適當(dāng)?shù)拈g隔
When you add new compute nodes, you must run nova-manage cell_v2 discover_hosts on the controller node to register those new compute nodes. Alternatively, you can set an appropriate interval in /etc/nova/nova.conf:
vim /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
第四步:驗(yàn)證操作(在控制器節(jié)點(diǎn)上執(zhí)行這些命令)
驗(yàn)證Compute服務(wù)的運(yùn)行。
1.來(lái)源admin憑據(jù)來(lái)訪問(wèn)僅管理員CLI命令:
source /home/admin-openrc
echo $OS_USERNAME
2.列出服務(wù)組件以驗(yàn)證每個(gè)進(jìn)程的成功啟動(dòng)和注冊(cè):
此輸出應(yīng)指示控制器節(jié)點(diǎn)上啟用的三個(gè)服務(wù)組件以及計(jì)算節(jié)點(diǎn)上啟用的一個(gè)服務(wù)組件。
openstack compute service list
[root@controller html]# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+------------+----------+---------+-------+----------------------------+
| 1 | nova-consoleauth | controller | internal | enabled | up | 2019-01-20T13:59:49.000000 |
| 2 | nova-conductor | controller | internal | enabled | up | 2019-01-20T13:59:49.000000 |
| 3 | nova-scheduler | controller | internal | enabled | up | 2019-01-20T13:59:49.000000 |
| 6 | nova-compute | compute1 | nova | enabled | up | 2019-01-20T13:59:56.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+
3.列出Identity服務(wù)中的API端點(diǎn)以驗(yàn)證與Identity服務(wù)的連接:
端點(diǎn)列表可能會(huì)有所不同,具體取決于OpenStack組件的安裝。
忽略此輸出中的任何警告。
openstack catalog list
[root@controller html]# openstack catalog list
+-----------+-----------+-----------------------------------------+
| Name | Type | Endpoints |
+-----------+-----------+-----------------------------------------+
| keystone | identity | RegionOne |
| | | admin: http://controller:5000/v3/ |
| | | RegionOne |
| | | internal: http://controller:5000/v3/ |
| | | RegionOne |
| | | public: http://controller:5000/v3/ |
| | | |
| nova | compute | RegionOne |
| | | internal: http://controller:8774/v2.1 |
| | | RegionOne |
| | | public: http://controller:8774/v2.1 |
| | | RegionOne |
| | | admin: http://controller:8774/v2.1 |
| | | |
| glance | image | RegionOne |
| | | internal: http://controller:9292 |
| | | RegionOne |
| | | public: http://controller:9292 |
| | | RegionOne |
| | | admin: http://controller:9292 |
| | | |
| placement | placement | RegionOne |
| | | admin: http://controller:8778 |
| | | RegionOne |
| | | public: http://controller:8778 |
| | | RegionOne |
| | | internal: http://controller:8778 |
| | | |
+-----------+-----------+-----------------------------------------+
4.列出Image服務(wù)中的圖像以驗(yàn)證與Image服務(wù)的連接:
openstack image list
[root@controller html]# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 6cc21209-0d33-477c-a37e-eeed6b34f3ad | cirros | active |
+--------------------------------------+--------+--------+
5.檢查單元格和放置API是否成功運(yùn)行:
nova-status upgrade check
[root@controller ~]# nova-status upgrade check
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
Option "os_region_name" from group "placement" is deprecated. Use option "region-name" from group "placement".
+-------------------------------+
| 升級(jí)檢查結(jié)果 |
+-------------------------------+
| 檢查: Cells v2 |
| 結(jié)果: 成功 |
| 詳情: None |
+-------------------------------+
| 檢查: Placement API |
| 結(jié)果: 成功 |
| 詳情: None |
+-------------------------------+
| 檢查: Resource Providers |
| 結(jié)果: 成功 |
| 詳情: None |
+-------------------------------+
| 檢查: Ironic Flavor Migration |
| 結(jié)果: 成功 |
| 詳情: None |
+-------------------------------+
| 檢查: API Service Version |
| 結(jié)果: 成功 |
| 詳情: None |
+-------------------------------+