Compute service
使用OpenStack Compute来托管和管理云计算系统,OpenStock Compute是Infrastructure-as-aServer(IaaS)系统的主要部分,主要模块是用Python实现的。
OpenStak Compute与OpenStack身份验证交互;用于磁盘和服务器映像的OpenStack Image服务;以及用户和管理界面的OpenStack Dashboard。Image访问到项目和用户的限制;每个项目的配额是有限的(例如,实例的数量)。OpenStack计算可以在标准硬件上水平地缩放,并下载映像来启动实例。
OpenStack计算由以下几个方面及其组成部分组成:
nova-api Service
接受并影响最终用户计算API调用。该服务支持OpenStack Compute API、Amazon EC2 API和为特权用户执行管理操作的特殊admin API。它强制执行一些策略并启动太多数据编排活动,例如运行实例。
nova-api-metadata service
nova-network安装在多主机模式下运行时,接受来自虚拟机发送的元数据请求,通常使用nova-api-metadata服务。
nova-compute service
是一个创建终止虚拟的工作守护进程通过管理程序API实现机器实例。
nova-placement-api service
跟踪每个供应程序的库存和使用情况
nova-scheduler service
从列表中获取虚拟机实例请求,并确定它运行的计算机服务器主机。
nova-conductor module
协调nova-compute服务和数据库之间的交互。他消除了由nova-compute服务生成的云数据库的直接访问。nova-conductor模块水平扩展,但是,不要将它部署到nova-conductor服务运行的节点上。
nova-cert module
一个服务器守护进程使用x509证书服务于Nova Cert服务。用于生成euca-bundle-image的证书。只需要EC2 API
nova-consoleauth daemon
为控制台代理提供的用户授权令牌。参考nova-novncproxy和nova-xvpncproxy。此服务必须运行于控制台代理程序工作,您可以在集群配置种运行针对单个nova-consoleauth服务的任何类型代理。
nova-novncproxy daemon
提供一个代理,通过VNC连接访问正在运行的实例,支持基于浏览器的novnc的客户
nova-spicehtml5proxy daemon
提供一个代理,用云通过SPICE链接访问正在运行的实例。支持基于浏览器的HTML5客户端。
nova-xvpvncproxy daemon
提供一个代理,通过VNC连接访问正在运行的实例。支持特定的OpenStack的java客户机。
The queue
在守护进程之间传递消息的中心hub。通常使用RabbitMQ实现,也可以使用另一个AMQP消息队列来实现。
SQL database
为云基础设施存储大多数构建时和运行状态
• Available instance types
• Instances in use
• Available networks
• Projects
理论上OpenStack Compute可以支持任何SQLAlchemy支持的数据库。常见的数据库是用于测试和开发工作的SQLLite3,MySQL、MariaDB和Postgre SQL。
安装和配置控制器节点
介绍如何安装和配置计算服务、代码。命名nova,在控制节点上进行配置
先决条件:
在安装和配置计算服务之前,必须创建数据库,服务凭据和API点。
[root@controller ~]# mysql -u root -p’lifulai_000’
MariaDB [(none)]> create database nova_api;
MariaDB [(none)]> create database nova;
MariaDB [(none)]> create database nova_cell0;
MariaDB [(none)]> grant all privileges on nova_api.* to ‘nova’@‘localhost’ identified by ‘lifulai_000’;
MariaDB [(none)]> grant all privileges on nova_api.* to ‘nova’@’%’ identified by ‘lifulai_000’;
MariaDB [(none)]> grant all privileges on nova.* to ‘nova’@‘localhost’ identified by ‘lifulai_000’;
MariaDB [(none)]> grant all privileges on nova.* to ‘nova’@’%’ identified by ‘lifulai_000’;
MariaDB [(none)]> grant all privileges on nova_cell0.* to ‘nova_cell0’@‘localhost’ identified by ‘lifulai_000’;
MariaDB [(none)]> grant all privileges on nova_cell0.* to ‘nova_cell0’@’%’ identified by ‘lifulai_000’;
MariaDB [(none)]> flush privileges;
2、源管理凭据以获得只访问管理员命令的CLI命令
[root@controller ~]# . admin-openrc
3、创建计算服务凭据
.创建nova用户
[root@controller ~]# openstack user create --domain default --password-prompt nova
User Password:123
Repeat User Password:123
.向nova添加管理用户角色
[root@controller ~]# openstack role add --project service --user nova admin
.创建服务实体
[root@controller ~]# openstack service create --name nova --description “OpenStack Compute” compute
4、创建计算服务API计算节点
[root@controller ~]# openstack endpoint create --region RegionOne compute public http://192.168.85.101:8774/v2.1
[root@controller ~]# openstack endpoint create --region RegionOne compute internal http://192.168.85.101:8774/v2.1
[root@controller ~]# openstack endpoint create --region RegionOne compute admin http://192.168.85.101:8774/v2.1
[root@controller ~]# openstack user create --domain default --password-prompt placement
User Password:123
Repeat User Password:123
6、将放置用户添加到具体的管理角色的服务项目中
[root@controller ~]# openstack role add --project service --user placement admin
7、在服务目录中创建防止API条目
[root@controller ~]# openstack service create --name placement --description “Placement API” placement
8、创建防止API服务端点
[root@controller ~]# openstack endpoint create --region RegionOne placement public http://192.168.85.101:8778
[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://192.168.85.101:8778
[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://192.168.85.101:8778
安装和配置组建
注意:默认配置文件因分布不同而不同。您可能需要添加这些节点和选项,而不是修改现有的节点和选项,另外,一个省略(…)在配置片段中指示潜在的默认配置你应该保留的选项
1、安装包
[root@controller ~]# yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
2、修改/etc/nova/nova.conf文件,并且完成一下操作
.在[DEFAULT]区段中,仅启用计算和元数据的API
[root@controller ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123@192.168.85.101
[api_database]
connection = mysql+pymysql://nova:lifulai_000@192.168.85.101/nova_api
[database]
connection = mysql+pymysql://nova:lifulai_000@192.168.85.101/nova
.在[api]和[keystone_authtoken]区段中,配置身份服务访问
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://192.168.85.101:5000
auth_url = http://192.168.85.101:35357
memcached_servers = 192.168.85.101:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123
注意:注释或删除[keystone_authtoken]中的任何其他选项部分
在[DEFAULT]部分中,配置my_ip选项以使用管理控制节点的接口IP地址
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123@192.168.85.101
my_ip = 192.168.85.101
.在[DEFAULT]区段中,启用对网络服务的支持
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123@192.168.85.101
my_ip = 192.168.122.111
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
注意:默认情况下,计算使用内部防火墙驱动程序。自从网络化服务包括防火墙驱动程序,必须禁止用计算防火强驱动程序。使用nova.virt.firewall.NoopFirewallDriver防火墙驱动程序
[vnc]
enabled = true
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://192.168.85.101:9292
在[oslo_concurrency]区段中,配置锁定路径
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
在[placement]区段中,配置布局api
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://192.168.85.101:35357/v3
username = placement
password = 123
.修改配置文件/etc/httpd/conf.d/00-nova-placement-api.conf
[root@controller ~]# vim /etc/httpd/conf.d/00-nova-placement-api.conf
<Directory /usr/bin>
= 2.4>
Require all granted
<IfVersion < 2.4>
Order allow,deny
Allow from all
[root@controller ~]# systemctl restart httpd
[root@controller ~]# su -s /bin/sh -c “nova-manage api_db sync” nova
[root@controller ~]# su -s /bin/sh -c “nova-manage cell_v2 map_cell0” nova
[root@controller ~]# su -s /bin/sh -c “nova-manage cell_v2 create_cell --name=cell1 --verbose” nova
6、填充数据库
[root@controller ~]# su -s /bin/sh -c “nova-manage db sync” nova
7、创建新添加的cell0和cell1是否已经注册:
[root@controller ~]# nova-manage cell_v2 list_cells
定型安装
启动计算服务,并在系统启动时将他们配置为启动:
[root@controller ~]# systemctl enable openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy ; systemctl restart openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy ; systemctl status openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
安装compute1的计算节点
[root@compute1 ~]# yum -y install epel-release
[root@compute1 ~]# yum -y install centos-release-openstack-pike.x86_64
[root@compute1 ~]# yum -y install openstack-nova-compute
修改/etc/nova/nova.conf文件,并配置一下信息
.在[DEFAULT]区段中,仅启用计算和元数据API
[root@compute1 ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute, metadata
transport_url = rabbit://openstack:123@192.168.85.101
my_ip = 192.168.85.102
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://192.168.85.101:5000
auth_url = http://192.168.85.101:35357
memcached_servers = 192.168.85.101:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://192.168.85.101:6080/vnc_auto.html
[glance]
api_servers = http://192.168.85.101:9292
[oslo_concurrency]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://192.168.85.101:35357/v3
username = placement
password = 123
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://192.168.85.101:35357/v3
username = placement
password = 123
[root@compute1 ~]# egrep -c ‘(vmx|svm)’ /proc/cpuinfo
[root@compute1 ~]# vim /etc/nova/nova.conf
[libvirt]
virt_type = qemu
[root@compute1 ~]# systemctl enable libvirtd openstack-nova-compute ; systemctl start libvirtd openstack-nova-compute ; systemctl status openstack-nova-compute libvirtd
如果nova计算服务无法启动,检查/var/log/nova/nova-compute.log,这个控制器上的错误消息AMQP服务器:5672是不可达的,可能指示控制节点上的防火墙阻止对端口5672的访问,配置防火墙在控制节点上打开端口5672并重新启动nova计算服务并于计算节点
安装compute2的计算节点
[root@compute2 ~]# yum -y install epel-release
[root@compute2 ~]# yum -y install centos-release-openstack-pike.x86_64
[root@compute2 ~]# yum -y install openstack-nova-compute
修改/etc/nova/nova.conf文件,并配置一下信息
.在[DEFAULT]区段中,仅启用计算和元数据API
[root@compute2 ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute, metadata
transport_url = rabbit://openstack:123@192.168.85.101
my_ip = 192.168.85.103
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://192.168.85.101:5000
auth_url = http://192.168.85.101:35357
memcached_servers = 192.168.85.101:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://192.168.85.101:6080/vnc_auto.html
[glance]
api_servers = http://192.168.85.101:9292
[oslo_concurrency]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://192.168.85.101:35357/v3
username = placement
password = 123
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://192.168.85.101:35357/v3
username = placement
password = 123
[root@compute2 ~]# egrep -c ‘(vmx|svm)’ /proc/cpuinfo
[root@compute2 ~]# vim /etc/nova/nova.conf
[libvirt]
virt_type = qemu
[root@compute2 ~]# systemctl enable libvirtd openstack-nova-compute ; systemctl start libvirtd openstack-nova-compute ; systemctl status openstack-nova-compute libvirtd
将计算节点添加道单元格数据库
重要:在控制节点上运行以下命令。
1、源管理凭据以启用仅管理员CLI命令,然后确认有计算机在数据库中:
[root@controller ~]# . admin-openrc
2、列出服务组建以验证每个成功的启动和注册过程
[root@controller ~]# openstack hypervisor list
[root@controller ~]# su -s /bin/sh -c “nova-manage cell_v2 discover_hosts --verbose” nova
[root@controller ~]# . admin-openrc
[root@controller ~]# openstack compute service list
[root@controller ~]# openstack catalog list
4、列出图像服务中的图像,以验证与图像服务的连接
[root@controller ~]# openstack image list
5、检查单元格和放置API是否成功工作
[root@controller ~]# nova-status upgrade check