【Openstack】实录手动部署Openstack Rocky 双节点(4)- Nova

版权声明:转载必须保留原出处,没有书面许可不可用于商用目的, https://blog.csdn.net/qq_43401808/article/details/89096193

第一篇:实录手动部署Openstack Rocky 双节点(1)- 基础服务
上一篇:实录手动部署Openstack Rocky 双节点(3)- Glance

参考文档

手动部署OpenStack Rocky双节点

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 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)

注:第一次执行本步骤,可以忽略下面的注释
后续步骤中 $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

猜你喜欢

转载自blog.csdn.net/qq_43401808/article/details/89096193