第一篇:实录手动部署Openstack Rocky 双节点(1)- 基础服务
上一篇:实录手动部署Openstack Rocky 双节点(3)- Glance
文章目录
- 参考文档
- Nova (controller)
- 关闭防火墙
- 设置admin的鉴权信息
- 添加Nova账户及其鉴权信息
- 创建compute类型的服务
- 创建nova账户并设置密码
- 给nova账户赋予service项目的admin角色
- 创建endpoint
- 创建placement类型服务
- 创建placement账户
- 创建endpoint
- 检查当前controller机器上的catalog
- 安装软件包
- Nova配置文件
- 创建Nova相关的数据库及权限设定
- 初始化Nova API与Placement数据库
- 初始化Nova数据库
- 注册cell0数据库
- 创建cell1
- 验证cell0与cell1
- 注册Placement Web Server到httpd
- 启动nova服务
- 验证Nova服务
- 部署nova-compute包
- 修改配置文件
- 启动服务
- 将Controller Node注册到Cell
- 验证controller机器上的compute服务
- 验证cells和placement API正常工作
- Nova (Compute)
- 结语
参考文档
Nova (controller)
关闭防火墙
[tony@controller ~]$ sudo systemctl stop firewalld
[tony@controller ~]$ sudo systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
设置admin的鉴权信息
[tony@controller ~]$ cat adminrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=$password
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
[tony@controller ~]$ source adminrc
添加Nova账户及其鉴权信息
创建compute类型的服务
[tony@controller ~]$ openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 5c2b7c41e83f4e8ca7118c0097248cf5 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
创建nova账户并设置密码
[tony@controller ~]$ openstack user create --domain default --password-prompt nova
User Password: <Enter password>
Repeat User Password: <Repeat password>
±--------------------±---------------------------------+
| Field | Value |
±--------------------±---------------------------------+
| domain_id | default |
| enabled | True |
| id | 4ecb248c39df4f368a2a4c07805ab784 |
| name | nova |
| options | {} |
| password_expires_at | None |
±--------------------±---------------------------------+
给nova账户赋予service项目的admin角色
[tony@controller ~]$ openstack role add --project service --user nova admin
创建endpoint
[tony@controller ~]$ openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 2e937f5e7a2942418fc759ddcf7bb042 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 5c2b7c41e83f4e8ca7118c0097248cf5 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+----------------------------------+
[tony@controller ~]$ openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 69d1fd19e43e47cc978d758ef7aaf7a2 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 5c2b7c41e83f4e8ca7118c0097248cf5 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+----------------------------------+
[tony@controller ~]$ openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 631f58379ade4eb4ae42c743ee2b57e8 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 5c2b7c41e83f4e8ca7118c0097248cf5 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+----------------------------------+
创建placement类型服务
[tony@controller ~]$ openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 1b43d96cb1e7407f994189fbe77f6724 |
| name | placement |
| type | placement |
+-------------+----------------------------------+
创建placement账户
[tony@controller ~]$ openstack user create --domain default --password-prompt placement
User Password: <Enter password>
Repeat User Password: <Repeat password>
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 828b032a6cfb467ab98a5986b1168ab3 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
[tony@controller ~]$ openstack role add --project service --user placement admin
创建endpoint
[tony@controller ~]$ openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 36ef3c5e2b6f45a79651717e07e308ce |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 1b43d96cb1e7407f994189fbe77f6724 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
[tony@controller ~]$ openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | ffa9735e7353483dba0360e23d3078e4 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 1b43d96cb1e7407f994189fbe77f6724 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
[tony@controller ~]$ openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 13b5952a556e485aa1ebc93badf77485 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 1b43d96cb1e7407f994189fbe77f6724 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
检查当前controller机器上的catalog
[tony@controller ~]$
[tony@controller ~]$ openstack catalog list
+-----------+-----------+-----------------------------------------+
| Name | Type | Endpoints |
+-----------+-----------+-----------------------------------------+
| placement | placement | RegionOne |
| | | admin: http://controller:8778 |
| | | RegionOne |
| | | public: http://controller:8778 |
| | | RegionOne |
| | | internal: http://controller:8778 |
| | | |
| keystone | identity | RegionOne |
| | | admin: http://controller:5000/v3/ |
| | | RegionOne |
| | | internal: http://controller:5000/v3/ |
| | | RegionOne |
| | | public: http://controller:5000/v3/ |
| | | |
| nova | compute | RegionOne |
| | | public: http://controller:8774/v2.1 |
| | | RegionOne |
| | | admin: http://controller:8774/v2.1 |
| | | RegionOne |
| | | internal: http://controller:8774/v2.1 |
| | | |
| glance | image | RegionOne |
| | | public: http://controller:9292 |
| | | RegionOne |
| | | internal: http://controller:9292 |
| | | RegionOne |
| | | admin: http://controller:9292 |
| | | |
+-----------+-----------+-----------------------------------------+
安装软件包
[tony@controller ~]$ sudo yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
Nova配置文件
- 原始默认配置文件
# 事实上,原始配置文件所有的配置选项都是注释掉的。
[tony@controller ~]$ sudo cat /etc/nova/nova.conf | grep -v -E '^$|^#'
[DEFAULT]
...
[zvm]
- 修改后的配置文件
[tony@controller ~]$ sudo cat /etc/nova/nova.conf | grep -v -E '^$|^#'
[DEFAULT]
my_ip = 172.18.22.231
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:$password@controller
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[api_database]
connection = mysql+pymysql://nova:$password@controller/nova_api
[barbican]
[cache]
[cells]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
connection = mysql+pymysql://nova:$password@controller/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://controller:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[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 = $password
[libvirt]
[matchmaker_redis]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
user_domain_name = Default
auth_type = password
auth_url = http://controller:5000/v3
username = placement
password = $password
[placement_database]
[powervm]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]
创建Nova相关的数据库及权限设定
[tony@controller ~]$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 55
Server version: 10.1.20-MariaDB MariaDB Server
Copyright © 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]> create database nova_api;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create database nova;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create database nova_cell0;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create database placement;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on nova_api.* to ‘nova’@‘localhost’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on nova_api.* to ‘nova’@’%’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on nova.* to ‘nova’@‘localhost’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on nova.* to ‘nova’@’%’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on nova_cell0.* to ‘nova’@‘localhost’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on nova_cell0.* to ‘nova’@’%’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on placement.* to ‘placement’@‘localhost’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on placement.* to ‘placement’@’%’ identified by ‘$password’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
初始化Nova API与Placement数据库
[tony@controller ~]$ sudo su -s /bin/sh -c "nova-manage api_db sync" nova
初始化Nova数据库
[tony@controller ~]$ sudo su -s /bin/sh -c "nova-manage db sync" nova
WARNING: cell0 mapping not found - not syncing cell0.
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1831, u’Duplicate indexblock_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:170: Warning: (1831, u’Duplicate indexuniq_instances0uuid
. This is deprecated and will be disallowed in a future release.’)
result = self._query(query)
注:第一次执行本步骤,可以忽略下面的注释
后续步骤中 $sudo nova-status upgrade check 命令报错,又重新初始化了一次数据库,就没有第一个红色的Warning了。nova-status命令也正常执行了。具体原因待查。
# 命令出错
[tony@tony-controller ~]$ sudo nova-status upgrade check
Error:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nova/cmd/status.py", line 795, in main
ret = fn(*fn_args, **fn_kwargs)
File "/usr/lib/python2.7/site-packages/nova/cmd/status.py", line 725, in check
result = func(self)
File "/usr/lib/python2.7/site-packages/nova/cmd/status.py", line 206, in _check_placement
versions = self._placement_get("/")
File "/usr/lib/python2.7/site-packages/nova/cmd/status.py", line 196, in _placement_get
return client.get(path, raise_exc=True).json()
File "/usr/lib/python2.7/site-packages/keystoneauth1/adapter.py", line 328, in get
return self.request(url, 'GET', **kwargs)
File "/usr/lib/python2.7/site-packages/keystoneauth1/adapter.py", line 213, in request
return self.session.request(url, method, **kwargs)
File "/usr/lib/python2.7/site-packages/keystoneauth1/session.py", line 869, in request
raise exceptions.from_response(resp, method, url)
InternalServerError: Internal Server Error (HTTP 500)
# 重新初始化数据库
[tony@tony-controller ~]$ sudo su -s /bin/sh -c "nova-manage api_db sync" nova
[tony@tony-controller ~]$ sudo su -s /bin/sh -c "nova-manage db sync" nova
# 程序正常执行
[tony@tony-controller ~]$ sudo nova-status upgrade check
+--------------------------------+
| Upgrade Check Results |
+--------------------------------+
| Check: Cells v2 |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Placement API |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Resource Providers |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Ironic Flavor Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: API Service Version |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Request Spec Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Console Auths |
| Result: Success |
| Details: None |
+--------------------------------+
注册cell0数据库
[tony@controller ~]$ sudo su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
注:在注册cell0数据库之后,重新初始化一下Nova数据库,也就没有第一个Warning了。
[tony@tony-controller ~]$ sudo su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: 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:170: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
创建cell1
[tony@controller ~]$ sudo su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
c1a3197c-cbd1-4554-881b-f405ea4b1c74
验证cell0与cell1
[tony@controller ~]$ sudo su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
±------±-------------------------------------±-----------------------------------±------------------------------------------------±---------+
| Name | UUID | Transport URL | Database Connection | Disabled |
±------±-------------------------------------±-----------------------------------±------------------------------------------------±---------+
| cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:@controller/nova_cell0 | False |
| cell1 | c1a3197c-cbd1-4554-881b-f405ea4b1c74 | rabbit://openstack:@controller | mysql+pymysql://nova:****@controller/nova | False |
±------±-------------------------------------±-----------------------------------±------------------------------------------------±---------+
注册Placement Web Server到httpd
- 修改配置文件
[tony@controller ~]$ sudo cat /etc/httpd/conf.d/00-nova-placement-api.conf
Listen 8778
<VirtualHost *:8778>
WSGIProcessGroup nova-placement-api
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess nova-placement-api processes=3 threads=1 user=nova group=nova
WSGIScriptAlias / /usr/bin/nova-placement-api
<IfVersion >= 2.4>
ErrorLogFormat “%M”
</IfVersion>
ErrorLog /var/log/nova/nova-placement-api.log
#SSLEngine On
#SSLCertificateFile …
#SSLCertificateKeyFile …
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow, deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>
Alias /nova-placement-api /usr/bin/nova-placement-api
<Location /nova-placement-api>
SetHandler wsgi-script
Options +ExecCGI
WSGIProcessGroup nova-placement-api
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
</Location>
- 重启httpd服务
[tony@controller ~]$ sudo systemctl restart httpd
[tony@controller ~]$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:01:19 EDT; 8s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 95486 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 95497 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─95497 /usr/sbin/httpd -DFOREGROUND
├─95498 /usr/sbin/httpd -DFOREGROUND
├─95499 /usr/sbin/httpd -DFOREGROUND
├─95500 /usr/sbin/httpd -DFOREGROUND
├─95501 (wsgi:keystone- -DFOREGROUND
├─95502 (wsgi:keystone- -DFOREGROUND
├─95503 (wsgi:keystone- -DFOREGROUND
├─95504 (wsgi:keystone- -DFOREGROUND
├─95505 (wsgi:keystone- -DFOREGROUND
├─95506 /usr/sbin/httpd -DFOREGROUND
├─95507 /usr/sbin/httpd -DFOREGROUND
├─95508 /usr/sbin/httpd -DFOREGROUND
├─95509 /usr/sbin/httpd -DFOREGROUND
└─95510 /usr/sbin/httpd -DFOREGROUND
Apr 08 03:01:19 controller systemd[1]: Starting The Apache HTTP Server...
Apr 08 03:01:19 controller systemd[1]: Started The Apache HTTP Server.
启动nova服务
# 启用服务
[tony@controller ~]$ sudo systemctl enable openstack-nova-api.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-api.service to /usr/lib/systemd/system/openstack-nova-api.service.
[tony@controller ~]$ sudo systemctl enable openstack-nova-consoleauth
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-consoleauth.service to /usr/lib/systemd/system/openstack-nova-consoleauth.service.
[tony@controller ~]$ sudo systemctl enable openstack-nova-scheduler.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-scheduler.service to /usr/lib/systemd/system/openstack-nova-scheduler.service.
[tony@controller ~]$ sudo systemctl enable openstack-nova-conductor.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-conductor.service to /usr/lib/systemd/system/openstack-nova-conductor.service.
[tony@controller ~]$ sudo systemctl enable openstack-nova-novncproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-novncproxy.service to /usr/lib/systemd/system/openstack-nova-novncproxy.service.
# 启动服务
[tony@controller ~]$ sudo systemctl start openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
# 检查服务状态
[tony@controller ~]$ sudo systemctl status openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
● openstack-nova-api.service - OpenStack Nova API Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-api.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:07:24 EDT; 7s ago
Main PID: 96191 (nova-api)
CGroup: /system.slice/openstack-nova-api.service
├─96191 /usr/bin/python2 /usr/bin/nova-api
├─96271 /usr/bin/python2 /usr/bin/nova-api
├─96272 /usr/bin/python2 /usr/bin/nova-api
├─96273 /usr/bin/python2 /usr/bin/nova-api
├─96274 /usr/bin/python2 /usr/bin/nova-api
├─96279 /usr/bin/python2 /usr/bin/nova-api
├─96281 /usr/bin/python2 /usr/bin/nova-api
├─96282 /usr/bin/python2 /usr/bin/nova-api
└─96283 /usr/bin/python2 /usr/bin/nova-api
Apr 08 03:07:15 controller systemd[1]: Starting OpenStack Nova API Server...
Apr 08 03:07:24 controller systemd[1]: Started OpenStack Nova API Server.
● openstack-nova-consoleauth.service - OpenStack Nova VNC console auth Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-consoleauth.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:07:19 EDT; 11s ago
Main PID: 96192 (nova-consoleaut)
CGroup: /system.slice/openstack-nova-consoleauth.service
└─96192 /usr/bin/python2 /usr/bin/nova-consoleauth
Apr 08 03:07:16 controller systemd[1]: Starting OpenStack Nova VNC console auth Server...
Apr 08 03:07:19 controller systemd[1]: Started OpenStack Nova VNC console auth Server.
● openstack-nova-scheduler.service - OpenStack Nova Scheduler Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-scheduler.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:07:21 EDT; 9s ago
Main PID: 96193 (nova-scheduler)
CGroup: /system.slice/openstack-nova-scheduler.service
├─96193 /usr/bin/python2 /usr/bin/nova-scheduler
├─96258 /usr/bin/python2 /usr/bin/nova-scheduler
├─96259 /usr/bin/python2 /usr/bin/nova-scheduler
├─96260 /usr/bin/python2 /usr/bin/nova-scheduler
└─96262 /usr/bin/python2 /usr/bin/nova-scheduler
Apr 08 03:07:16 controller systemd[1]: Starting OpenStack Nova Scheduler Server...
Apr 08 03:07:21 controller systemd[1]: Started OpenStack Nova Scheduler Server.
● openstack-nova-conductor.service - OpenStack Nova Conductor Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-conductor.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:07:20 EDT; 10s ago
Main PID: 96194 (nova-conductor)
CGroup: /system.slice/openstack-nova-conductor.service
├─96194 /usr/bin/python2 /usr/bin/nova-conductor
├─96248 /usr/bin/python2 /usr/bin/nova-conductor
├─96250 /usr/bin/python2 /usr/bin/nova-conductor
├─96251 /usr/bin/python2 /usr/bin/nova-conductor
└─96252 /usr/bin/python2 /usr/bin/nova-conductor
Apr 08 03:07:16 controller systemd[1]: Starting OpenStack Nova Conductor Server...
Apr 08 03:07:20 controller systemd[1]: Started OpenStack Nova Conductor Server.
● openstack-nova-novncproxy.service - OpenStack Nova NoVNC Proxy Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-novncproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:07:16 EDT; 15s ago
Main PID: 96195 (nova-novncproxy)
CGroup: /system.slice/openstack-nova-novncproxy.service
└─96195 /usr/bin/python2 /usr/bin/nova-novncproxy --web /usr/share/novnc/
Apr 08 03:07:16 controller systemd[1]: Started OpenStack Nova NoVNC Proxy Server.
验证Nova服务
[tony@controller ~]$ openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+------------+----------+---------+-------+----------------------------+
| 1 | nova-consoleauth | controller | internal | enabled | up | 2019-04-08T07:10:35.000000 |
| 2 | nova-conductor | controller | internal | enabled | up | 2019-04-08T07:10:26.000000 |
| 3 | nova-scheduler | controller | internal | enabled | up | 2019-04-08T07:10:27.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+
部署nova-compute包
[tony@controller ~]$ sudo yum -y install openstack-nova-compute
修改配置文件
[tony@controller ~]$ diff /tmp/nova.origin.conf /tmp/nova.new.conf
6a7,8
> compute_driver = libvirt.LibvirtDriver
> instances_path = /var/lib/nova/instances
24a27,31
> [vnc]
> enabled = true
> server_listen = 0.0.0.0
> server_proxyclient_address = $my_ip
> novncproxy_base_url = http://controller:6080/vnc_auto.html
42a50
> virt_type = qemu
68a77
> connection = mysql+pymysql://placement:$password@controller/placement
- 新的配置文件
[tony@controller ~]$ sudo cat /etc/nova/nova.conf | grep -v -E '^$|^#'
[DEFAULT]
my_ip = 172.18.22.231
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:$password@controller
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
compute_driver = libvirt.LibvirtDriver
instances_path = /var/lib/nova/instances
[api]
auth_strategy = keystone
[api_database]
connection = mysql+pymysql://nova:$password@controller/nova_api
[barbican]
…
[database]
connection = mysql+pymysql://nova:$password@controller/nova
[devices]
…
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
[glance]
api_servers = http://controller:9292
[guestfs]
…
[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 = $password
[libvirt]
virt_type = qemu
[matchmaker_redis]
…
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_amqp]
…
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
user_domain_name = Default
auth_type = password
auth_url = http://controller:5000/v3
username = placement
password = $password
[placement_database]
connection = mysql+pymysql://placement:$password@controller/placement
[powervm]
…
[workarounds]
启动服务
[tony@controller ~]$ sudo systemctl enable libvirtd.service openstack-nova-compute.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-compute.service to /usr/lib/systemd/system/openstack-nova-compute.service.
[tony@controller ~]$ sudo systemctl start libvirtd.service openstack-nova-compute.service
[tony@controller ~]$ sudo systemctl status libvirtd.service openstack-nova-compute.service
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-04-08 03:41:40 EDT; 9s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 102617 (libvirtd)
Tasks: 17 (limit: 32768)
CGroup: /system.slice/libvirtd.service
└─102617 /usr/sbin/libvirtd
Apr 08 03:41:40 controller systemd[1]: Starting Virtualization daemon...
Apr 08 03:41:40 controller systemd[1]: Started Virtualization daemon.
● openstack-nova-compute.service - OpenStack Nova Compute Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-compute.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 03:41:43 EDT; 6s ago
Main PID: 102635 (nova-compute)
Tasks: 22
CGroup: /system.slice/openstack-nova-compute.service
└─102635 /usr/bin/python2 /usr/bin/nova-compute
Apr 08 03:41:40 controller systemd[1]: Starting OpenStack Nova Compute Server...
Apr 08 03:41:43 controller systemd[1]: Started OpenStack Nova Compute Server.
将Controller Node注册到Cell
[tony@controller ~]$ sudo su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': c1a3197c-cbd1-4554-881b-f405ea4b1c74
Checking host mapping for compute host 'controller': 090c321b-7c7d-496f-bbcb-1f5360034cc8
Creating host mapping for compute host 'controller': 090c321b-7c7d-496f-bbcb-1f5360034cc8
Found 1 unmapped computes in cell: c1a3197c-cbd1-4554-881b-f405ea4b1c74
验证controller机器上的compute服务
[tony@controller ~]$ openstack compute service list
±—±-----------------±-----------±---------±--------±------±---------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
±—±-----------------±-----------±---------±--------±------±---------------------------+
| 1 | nova-consoleauth | controller | internal | enabled | up | 2019-04-08T07:46:36.000000 |
| 2 | nova-conductor | controller | internal | enabled | up | 2019-04-08T07:46:36.000000 |
| 3 | nova-scheduler | controller | internal | enabled | up | 2019-04-08T07:46:37.000000 |
| 7 | nova-compute | controller | nova | enabled | up | 2019-04-08T07:46:42.000000 |
±—±-----------------±-----------±---------±--------±------±---------------------------+
验证cells和placement API正常工作
[tony@controller ~]$ sudo nova-status upgrade check
+--------------------------------+
| Upgrade Check Results |
+--------------------------------+
| Check: Cells v2 |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Placement API |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Resource Providers |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Ironic Flavor Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: API Service Version |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Request Spec Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Console Auths |
| Result: Success |
| Details: None |
+--------------------------------+
Nova (Compute)
关闭防火墙
[tony@compute ~]$ sudo systemctl stop firewalld
[tony@compute ~]$ sudo systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
安装软件包
# 安装软件包
[tony@compute ~]$ sudo yum install -y openstack-nova-compute
# 设置配置文件
[tony@compute ~]$ sudo cp /etc/nova/nova.conf /etc/nova/nova.conf.origin
[tony@compute ~]$ sudo vim /etc/nova/nova.conf
[DEFAULT]
my_ip = 172.18.22.232
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:$password@controller
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
compute_driver = libvirt.LibvirtDriver
instances_path = /var/lib/nova/instances
[api]
auth_strategy = keystone
[api_database]
connection = mysql+pymysql://nova:$password@controller/nova_api
[barbican]
[cache]
[cells]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
connection = mysql+pymysql://nova:$password@controller/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://controller:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[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 = $password
[libvirt]
virt_type = qemu
[matchmaker_redis]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
user_domain_name = Default
auth_type = password
auth_url = http://controller:5000/v3
username = placement
password = $password
[placement_database]
connection = mysql+pymysql://placement:$password@controller/placement
[powervm]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]
# 启用并启动服务
[tony@compute ~]$ sudo systemctl enable libvirtd.service openstack-nova-compute.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-compute.service to /usr/lib/systemd/system/openstack-nova-compute.service.
[tony@compute ~]$ sudo systemctl start libvirtd.service openstack-nova-compute.service
[tony@compute ~]$ sudo systemctl status libvirtd.service openstack-nova-compute.service
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-04-08 04:31:49 EDT; 9s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 33687 (libvirtd)
Tasks: 17 (limit: 32768)
CGroup: /system.slice/libvirtd.service
└─33687 /usr/sbin/libvirtd
Apr 08 04:31:49 compute systemd[1]: Starting Virtualization daemon...
Apr 08 04:31:49 compute systemd[1]: Started Virtualization daemon.
● openstack-nova-compute.service - OpenStack Nova Compute Server
Loaded: loaded (/usr/lib/systemd/system/openstack-nova-compute.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-08 04:31:52 EDT; 6s ago
Main PID: 33705 (nova-compute)
Tasks: 22
CGroup: /system.slice/openstack-nova-compute.service
└─33705 /usr/bin/python2 /usr/bin/nova-compute
Apr 08 04:31:49 compute systemd[1]: Starting OpenStack Nova Compute Server...
Apr 08 04:31:52 compute systemd[1]: Started OpenStack Nova Compute Server.
# 注册
[tony@compute ~]$ sudo su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': c1a3197c-cbd1-4554-881b-f405ea4b1c74
Checking host mapping for compute host 'compute': 005dfe34-54f3-4982-b2f8-43b81ae673fd
Creating host mapping for compute host 'compute': 005dfe34-54f3-4982-b2f8-43b81ae673fd
Found 1 unmapped computes in cell: c1a3197c-cbd1-4554-881b-f405ea4b1c74
# 忘记设置admin鉴权信息了
[tony@compute ~]$ openstack compute service list
Missing value auth-url required for auth plugin password
[tony@compute ~]$ vim adminrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=$password
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
[tony@compute ~]$ source adminrc
[tony@compute ~]$ openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+------------+----------+---------+-------+----------------------------+
| 1 | nova-consoleauth | controller | internal | enabled | up | 2019-04-08T08:33:17.000000 |
| 2 | nova-conductor | controller | internal | enabled | up | 2019-04-08T08:33:21.000000 |
| 3 | nova-scheduler | controller | internal | enabled | up | 2019-04-08T08:33:12.000000 |
| 7 | nova-compute | controller | nova | enabled | up | 2019-04-08T08:33:21.000000 |
| 8 | nova-compute | compute | nova | enabled | up | 2019-04-08T08:33:18.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+
[tony@compute ~]$ sudo nova-status upgrade check
+--------------------------------+
| Upgrade Check Results |
+--------------------------------+
| Check: Cells v2 |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Placement API |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Resource Providers |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Ironic Flavor Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: API Service Version |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Request Spec Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Console Auths |
| Result: Success |
| Details: None |
+--------------------------------+
结语
自此,controller与compute1机器上的nova模块安装成功。
第一篇:实录手动部署Openstack Rocky 双节点(1)- 基础服务
上一篇:实录手动部署Openstack Rocky 双节点(3)- Glance