用OpenStack计算来托管和管理云计算系统。OpenStack计算是基础设施即服务(IaaS)系统的重要组成部分。主要模块是用Python实现的。
OpenStack计算与OpenStack标识进行交互,用于身份验证,用于资源目录跟踪和选择的OpenStack放置,用于磁盘和服务器映像的OpenStack映像服务,以及用于用户和管理界面的OpenStack仪表板。图像访问受到项目和用户的限制;每一个项目的配额是有限的(例如,实例的数量)。OpenStack计算能够在标准硬件上水平伸缩,并下载映像来启动实例。
OpenStack计算包括如下组件:html
理论上,OpenStack计算能够支持SQLAlchemy支持的任何数据库。用于测试和开发工做的公共数据库是SQLite三、MySQL、MariaDB和PostgreSQL。html5
安装以前咱们须要先建库,账号和api endpoint.mysql
○ 使用root链接数据库服务器: $ mysql -u root -p root123 ○ 创建nova_api、nova和nova_cell0数据库: MariaDB [(none)]> CREATE DATABASE nova_api; MariaDB [(none)]> CREATE DATABASE nova; MariaDB [(none)]> CREATE DATABASE nova_cell0; ○ 赋予账号nova对库的操做权限: MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova123'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova123'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova123'
$ . admin-openrc
创建计算服务的凭据:sql
○ 创建nova用户: $ openstack user create --domain default --password-prompt nova User Password:nova123 Repeat User Password:nova123 +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 8a7dbf5279404537b1c7b86c033620fe | | name | nova | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ ○ 给用户nova添加admin角色: $ openstack role add --project service --user nova admin 注意:这个命令没有输出 ○ 创建nova服务实体: $ openstack service create --name nova --description "OpenStack Compute" compute +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Compute | | enabled | True | | id | 060d59eac51b4594815603d75a00aba2 | | name | nova | | type | compute | +-------------+----------------------------------+
Create the Compute API service endpoints:数据库
$ openstack endpoint create --region RegionOne compute public http://stack.flex.net:8774/v2.1 +--------------+-------------------------------------------+ | Field | Value | +--------------+-------------------------------------------+ | enabled | True | | id | 3c1caa473bfe4390a11e7177894bcc7b | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 060d59eac51b4594815603d75a00aba2 | | service_name | nova | | service_type | compute | | url | http://stack.flex.net:8774/v2.1 | +--------------+-------------------------------------------+ $openstack endpoint create --region RegionOne compute internal http://stack.flex.net:8774/v2.1 +--------------+-------------------------------------------+ | Field | Value | +--------------+-------------------------------------------+ | enabled | True | | id | e3c918de680746a586eac1f2d9bc10ab | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 060d59eac51b4594815603d75a00aba2 | | service_name | nova | | service_type | compute | | url | http://stack.flex.net:8774/v2.1 | +--------------+-------------------------------------------+ $ openstack endpoint create --region RegionOne compute admin http://stack.flex.net:8774/v2.1 +--------------+-------------------------------------------+ | Field | Value | +--------------+-------------------------------------------+ | enabled | True | | id | 38f7af91666a47cfb97b4dc790b94424 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 060d59eac51b4594815603d75a00aba2 | | service_name | nova | | service_type | compute | | url | http://stack.flex.net:8774/v2.1 | +--------------+-------------------------------------------+
# yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
编辑/etc/nova/nova.conf文件完成下列需求:api
○ 在[DEFAULT]区域, 充计compute和元数据API: [DEFAULT] # ... enabled_apis = osapi_compute,metadata ○ 在[api_database] 和 [database] sections,配置数据库的访问: [api_database] # ... connection = mysql+pymysql://nova:nova123@dbs.flex.net/nova_api [database] # ... connection = mysql+pymysql://nova:nova123@dbs.flex.net/nova ○ 在[DEFAULT]区域, 配置RabbitMQ消息队列访问: [DEFAULT] # ... transport_url = rabbit://openstack:openstack123@dbs.flex.net ○ 在[api]和[keystone_authtoken]区域, 配置访问认证服务: [api] # ... auth_strategy = keystone [keystone_authtoken] # ... auth_url = http://stack.flex.net:5000/v3 memcached_servers = dbs.flext.net:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = nova123 注意: 注释或移除在掉在[keystone_authtoken]区域中的其它的选项. ○ 在[DEFAULT]区域, 配置管理接口的IP: [DEFAULT] # ... my_ip = 192.168.207.2 #此处为控制节点的管理IP地址 ○ 在[DEFAULT]区域, 充许支持的网络: [DEFAULT] # ... use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver 缺省的,计算节点使用一内部的防火墙驱动,由于网络服务包含了一个防火墙驱动,你必须禁用防火墙驱动并使用nova.virt.firewall.NoopFirewallDriver firewall driver ○ 在[vnc]区域, 使用管理接口的IP作为vnc代理使用: [vnc] enabled = true # ... server_listen = $my_ip server_proxyclient_address = $my_ip ○ 在[glance]区域, 配置镜像服务api的位置: [glance] # ... api_servers=http://stack.flex.net:9292 ○ 在[oslo_concurrency]区域, 配置锁定的路径: [oslo_concurrency] # ... lock_path = /var/lib/nova/tmp ○ 在[placement]区域, 配置访问placement服务: [placement] # ... region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://stack.flex.net:5000/v3 username = placement password = placement123 注意: 注释或移除在掉在[placement]区域中的其它的选项 ○ 因为一个bug, 你必须充许访问placement API, 添加下列的配置到/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
# 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
# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova +-------+--------------------------------------+ | Name | UUID | +-------+--------------------------------------+ | cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 | | cell0 | 00000000-0000-0000-0000-000000000000 | +-------+--------------------------------------+
○ 容许系统引导时自动启动服务并启动服务: # systemctl enable openstack-nova-api.service \ openstack-nova-scheduler.service \ openstack-nova-conductor.service \ openstack-nova-novncproxy.service # systemctl start openstack-nova-api.service \ openstack-nova-scheduler.service \ openstack-nova-conductor.service \ openstack-nova-novncproxy.service