computer service:
nova组件:
API:
nova-api:
接收和响应来自最终用户的compute API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
nova-api-metadata:
接受来自虚拟机发送的元数据请求。nova-api-metadata服务一般在安装nova-network服务的多主机模式下使用。更详细的信息,请参考OpenStack管理员手册中的链接http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service
Computer Core:
nova-compute:
守护进程,通过Hypervior的API来创建和销毁虚拟机实例。
例如:
XenServer/XCP中的XenAPI
libvirt中的KVM 和 QEMU
VMware中的VMwareAPI。
守护进程负责调用来自队列的请求,转换为一系列的系统命令如启动一个KVM实例,并在数据库中更新它的状态(实际并不直接操作数据库,而是发起一个数据库更改请求,扔给nova-conductor去完成)。
nova-scheduler:
拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
nova-conductor
作用于nova-compute服务与数据库之间。nova-conductor模块可以水平扩展。但不要将它部署在运行nova-compute服务的主机节点上。参考http://docs.openstack.org/mitaka/config-reference/compute/conductor.html
nova-placement-api
跟踪每个计算节点的库存和使用情况。有关详细信息,请参阅Placement API, https://docs.openstack.org/nova/latest/user/placement.html。
Network for VMs(官方新版没有介绍):
nova-network:
守护进程,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。
nova-dhcpagent:
Console Interface:
nova-consoleauth:
守护进程,授权控制台代理所提供的用户令牌。该服务必须为控制台代理运行才可奏效。更多关于nova-consoleauth的信息,请查看http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth
nova-novncporxy:
守护进程,提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
nova-xvpnvncporxy:
守护进程,提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
nova-spicehtml5proxy:
守护进程,提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
nova-cert:
服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用
Command line and other interfaces:
nova, nova-manage:
用于用户作为租户管理员或最终用户来提交命令。
其他支持服务:
AMQP: Avanced Messaging Queue Protocol:
RabbitMQ, ZeroMQ
这里我使用的RabbitMQ。
Database:
MySql
这里仍然需要创建数据库:
nova_api
nova
nova_cell0
并授权访问
安装配置controller node服务(控制节点):
创建用户(nova)
openstack user create --domain default --password-prompt nova
将用户nova关联至租户(项目service)和role上:
openstack role add --project service --user nova admin
创建nova服务实体:
openstack service create --name nova --description "OpenStack Compute" compute
创建nova服务 API 端点(endpoint):
openstack endpoint create --region RegionOne compute public http://con.colinshi.top:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://con.colinshi.top:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://con.colinshi.top:8774/v2.1
创建用户(placement):
openstack user create --domain default --password-prompt placement
将用户placement关联至租户(项目service)和role上:
openstack role add --project service --user placement admin
创建placement服务实体:
openstack service create --name placement --description "Placement API" placement
创建placement服务 API 端点(endpoint):
openstack endpoint create --region RegionOne placement public http://con.colinshi.top:8778
openstack endpoint create --region RegionOne placement internal http://con.colinshi.top:8778
openstack endpoint create --region RegionOne placement admin http://con.colinshi.top:8778
安装nova服务包:
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
编辑配置文件/etc/nova/nova.conf:
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://rabbit:rabbit@con.colinshi.top
my_ip = con.colinshi.top
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
connection = mysql+pymysql://root:123456@con.colinshi.top/nova_api
[database]
connection = mysql+pymysql://root:123456@con.colinshi.top/nova
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://con.colinshi.top:5000
auth_url = http://con.colinshi.top:35357
memcached_servers = con.colinshi.top:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[vnc]
enabled = true
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://con.colinshi.top:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://con.colinshi.top:35357/v3
username = placement
password = placement
初始化nova_api数据库:
su -s /bin/sh -c "nova-manage api_db sync" nova
初始化nova_cell0数据库:
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
初始化nova数据库:
su -s /bin/sh -c "nova-manage db sync" nova
创建cell1元件
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
启动控制节点服务并将其设置为随系统启动
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
确认数据库中有计算节点主机:
openstack compute service list --service nova-compute
发现计算节点主机:
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
设置计算节点主机扫描频率:
编辑/etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
安装配置Computer node(计算节点):
安装nova-compute包
yum install openstack-nova-compute
编辑配置文件/etc/nova/nova.conf:
[DEFAULT]
transport_url = rabbit://rabbit:rabbit@con.colinshi.top #配置 “RabbitMQ” 消息队列访问
auth_strategy = keystone #认证服务访问
my_ip = 10.0.0.53 #计算节点的IP地址
use_neutron = True #使用Networking 服务
firewall_driver = nova.virt.firewall.NoopFirewallDriver #使用Networking 服务
#vif_plugging_is_fatal=false #VIF插件超时发生时Nova是否继续启动实例,默认为True(表示VIF如果创建失败则停止启动实例)
#vif_plugging_timeout=30 #VIF插件超时时间,默认为300秒。
#认证服务访问
[keystone_authtoken]
auth_uri = http://con.colinshi.top:5000
auth_url = http://con.colinshi.top:35357
memcached_servers = con.colinshi.top:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
#VNC启用并配置远程控制台访问
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://con.colinshi.top:6080/vnc_auto.html
#镜像服务 API 的位置
[glance]
api_servers = http://con.colinshi.top:9292
#锁路径
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
确定计算节点是否支持虚拟机的硬件加速:
egrep -c '(vmx|svm)' /proc/cpuinfo
有返回值,计算节点支持硬件加速且不需要额外的配置。
返回0,计算节点不支持硬件加速。必须配置 libvirt 来使用 QEMU 去代替 KVM(实际基本上可以放弃这个机器了。娃哈哈)
[libvirt]
virt_type = qemu
启动计算节点服务并将其设置为随系统启动:
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
以上安装的服务验证:
列出服务组件以验证每个进程的成功启动和注册:
openstack compute service list
+----+------------------+-----------------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+-----------------------+----------+---------+-------+----------------------------+
| 1 | nova-consoleauth | con.colinshi.top | internal | enabled | up | 2018-07-30T09:42:12.000000 |
| 2 | nova-scheduler | con.colinshi.top | internal | enabled | up | 2018-07-30T09:42:13.000000 |
| 3 | nova-conductor | con.colinshi.top | internal | enabled | up | 2018-07-30T09:42:19.000000 |
| 8 | nova-compute | computer.colinshi.top | nova | enabled | up | 2018-07-30T09:42:13.000000 |
+----+------------------+-----------------------+----------+---------+-------+----------------------------+
注:此输出应指示控制节点上启用的三个服务组件以及计算节点上启用的一个服务组件。
列出Identity服务中的API端点以及验证Identity服务的连接(各个endpoint):
openstack catalog list
列出Image服务中的映像文件信息以及验证Image服务的连接(查看映像文件):
openstack image list
检查元件和API是否成功运行:
nova-status upgrade check
nova组件可以算是Openstack中最重要的组件之一,进行扩展的时候也主要是增加nova组件的computer节点的部署数量。