Centos7安装部署openstack--nova计算服务(控制节点)

一、概述

  使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

  OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack

组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

  OpenStack计算服务由下列组件所构成:

    nova-api 服务:接受并响应所有计算服务请求,管理虚拟机(云主机)生命周期。

    nova-api-metadata 服务:接受来自虚拟机发送的元数据请求。

              nova-compute服务(多个):真正管理虚拟机(nova-compute调用libvirt)。

              nova-scheduler服务:nova调度器(挑选出最合适的nova-compute来创建虚拟机)。

              nova-conductor模块:帮助nova-compute代理修改数据库中虚拟机的状态。

      nova-cert模块:服务器守护进程向Nova Cert服务提供X509证书。用来为``euca-bundle-image``生成证书。仅仅是在EC2 API的请求中使用

    nova-network worker 守护进程:与``nova-compute``服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。

    nova-consoleauth 守护进程和nova-novncproxy 守护进程:web版的vnc来直接操作云主机。

    nova-spicehtml5proxy 守护进程:提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。

    nova-xvpvncproxy 守护进程:提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

    nova-cert 守护进程:X509 证书。

              nova客户端:用于用户作为租户管理员或最终用户来提交命令。

    队列:一个在守护进程间传递消息的中央集线器。

二、安装并配置控制节点

  1、创建数据库

mysql -u root -p                                                    登录数据库
CREATE DATABASE nova_api;                                           创建数据库
CREATE DATABASE nova;          
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \          授权
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

  2、创建 nova 用户,给 nova 用户添加 admin 角色。

[root@controller ~]# openstack user create --domain default --password NOVA_PASS nova
[root@controller ~]# openstack role add --project service --user nova admin

  3、创建 nova 服务实体

[root@controller ~]# openstack service create --name nova   --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | dd98c56c7ea948a7bfee86ed3a48bcdf |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

  4、创建 Compute 服务 API 端点

[root@controller ~]# openstack endpoint create --region RegionOne  compute public http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 8dc955bdeb554ecbbc4fead51ad77dee          |
| interface    | public                                    |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | dd98c56c7ea948a7bfee86ed3a48bcdf          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne   compute internal http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 19d8e664c4b1434eafdb83fc5f72deec          |
| interface    | internal                                  |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | dd98c56c7ea948a7bfee86ed3a48bcdf          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne  compute admin http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 8b301d9fe68c4486b1482a5e6d542da7          |
| interface    | admin                                     |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | dd98c56c7ea948a7bfee86ed3a48bcdf          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+

  5、安装并配置组件

yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler -y

  6、备份配置文件

cp /etc/nova/nova.conf{,.bak}
grep '^[a-z\[]' /etc/nova/nova.conf.bak >/etc/nova/nova.conf

  7、编辑``/etc/nova/nova.conf``文件并完成下面的操作

vim /etc/nova/nova.conf
[DEFAULT]          
...
enabled_apis = osapi_compute,metadata                                   在``[DEFAULT]``部分,只启用计算和元数据API

[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api       在``[api_database]``和``[database]``部分,配置数据库的连接

[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS                                             在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问,用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

[DEFAULT]
...
auth_strategy = keystone

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS                                                       在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问,使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。

[DEFAULT]
...
my_ip = 10.0.0.11                                                          在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver                    在 [DEFAULT] 部分,使能 Networking 服务,默认情况下,计算服务使用内置的防火墙服务。
由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务 [vnc] ... vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip 在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 [glance] ... api_servers = http://controller:9292 在 [glance] 区域,配置镜像服务 API 的位置 [oslo_concurrency] ... lock_path = /var/run/nova 在 [oslo_concurrency] 部分,配置锁路径

  8、同步数据库

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

  9、启动服务

# systemctl enable openstack-nova-api.service \
  openstack-nova-consoleauth.service openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service                         加入开机自启动
# systemctl start openstack-nova-api.service \
  openstack-nova-consoleauth.service openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service                         批量启动服务

  10、验证,用nova service-list命令查看,表里面为空,nova数据库中的service中也有数据的。

   注解:openstack在高版本里修复了网络传输包的一个bug,同时更低版本的也进行了改动,所以在配置过程中需要加一些额外的操作(改配置文件单位源码),其他都照旧,最后就可以配置nova成功。

不论新旧版本都强制增加了cell和placement实例的应用,所以在问题中提及的报错其实是一个提示,配置过程中确实需要创建和实例化cell用户以及placement服务配置才能正常继续。

三、解决遗留问题

  1、创建nova_cell0数据库

[root@controller ~]# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nova_cell0;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

  2、创建 placement用户,给 placement用户添加 admin 角色。

openstack user create --domain default --password PLACEMENT_PASS placement
openstack role add --project service --user placement admin

  3、创建 placement 服务实体

openstack service create --name placement --description "Placement API" placement
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

  4、安装openstack-nova-placement-api服务

yum install openstack-nova-placement-api -y

  5、修改配置文件/etc/nova/nova.conf

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS

  6、创建配置文件/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>

  7、重启服务

 systemctl restart httpd

  8、同步数据库

su -s /bin/sh -c "nova-manage api_db sync" nova

su
-s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su
-s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova 109e1d4b-536a-40d0-83c6-5f121b82b650 su -s /bin/sh -c "nova-manage db sync" nova

nova-manage cell_v2 list_cells
+-------+--------------------------------------+
| Name  | UUID                                 |
+-------+--------------------------------------+
| cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
| cell0 | 00000000-0000-0000-0000-000000000000 |
+-------+--------------------------------------+

  9、重启服务

systemctl restart openstack-nova-api.service \
  openstack-nova-consoleauth.service openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service

  10、再次查看

   终于成功!!!

  11、openstack-nova-api提供命令行服务,openstack-nova-novncproxy提供web版得vnc服务。

 

posted @ 2020-06-29 20:26  人走茶良  阅读(1322)  评论(0编辑  收藏  举报
推荐:华为云