6.1 Nava说明
6.1.1 Nava是啥
OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台
类似 Amazon EC2 和 S3 的云基础架构服务
Nava 在 OpenStack 中提供云计算服务
6.1.2 组件说明
- API
- nova-api service
接收并相应终端用户计算API调用;
该服务支持 OpenStack 计算 API,Amazon EC2 和特殊的管理特权 API;
-
- nova-api-metadata service
接受从实例元数据发来的请求;
该服务通常与 nova-network 服务在安装多主机模式下运行;
- Core
- nova-compute service
一个守护进程,通过虚拟化层 API 接口创建和终止虚拟机实例;
例如:XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware;
-
- nova-scheduler service
从队列中获取虚拟机请求实例,并确认由哪台计算机运行该虚拟机;
负责虚拟机创建时候的,宿主机负载判断;
-
- nova-conductor module
协调 nova-compute 服务和 database 之间的交互数据;
避免 nova-compute 服务直接访问云数据库;
不要将该模块部署在 nova-compute 运行的节点上;
- Networking
- nova-network worker daemon
类似于 nova-conpute 服务,接受来自队列的网络任务和操控网络;
比如这只网卡桥接或改变iptables规则;
-
- nova-consoleauth daemon
在控制台代理提供用户授权令牌;
-
- nova-novncproxy daemon
提供了一个通过VNC连接来访问运行的虚拟机实例的代理;
支持基于浏览器的 novnc 客户端;
-
- nova-spicehtml5proxy daemon
提供了一个通过spice连接老访问运行的虚拟机实例的代理;
支持基于浏览器的 HTML5 客户端;
-
- nova-xvpnvncproxy daemon
提供了一个通过VNC连接来访问运行的虚拟机实例的代理;
支持 OpenStack-Specific Java客户端;
-
- nova-cert daemon
x509 证书
- Othor
- nova-objectstore daemon
一个 Amazon S3 的接口,用于将 Amazon S3 的镜像注册到 OpenStack euca2ools client 用于兼容 Amazon E2 接口的命令行工具;
-
- nova client
nova 命令行工具;
-
- The queue
在进程之间传递消息的队列;
通常使用RabbitMQ;
-
- SQL database
保存云计算基础设置,建立和运行时的状态信息;
6.2 部署 Nova Controller
在Controller节点部署;
6.2.1 创建 Nova Controller 数据库
mysql -uroot -p
CREATE DATABASE nova_api; CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova';
FLUSH PRIVILEGES;
6.2.2 创建Nova Controller用户
加载 admin
凭证,来获取管理员命令的执行权限
[root@controller ~]# source admin-openrc
创建 nova
用户
[root@controller ~]# openstack user create --domain default --password-prompt nova
给 nova
用户分配 admin
角色,并加入到 service
项目
[root@controller ~]# openstack role add --project service --user nova admin
创建 nova
服务
[root@controller ~]# openstack service create --name nova --description "OpenStack Compute" compute
创建 nova
API 端点
[root@controller ~]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
[root@controller ~]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
[root@controller ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
配置placement服务
数据库
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE placement;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
IDENTIFIED BY 'plancement';
使用您选择的位置服务用户创建一个Placement服务用户: Placement
[root@controller ~]# openstack user create --domain default --password placement placement
将Placement用户添加到具有管理角色的服务项目中
[root@controller ~]# openstack role add --project service --user placement admin
在服务目录中创建Placement API条目:
[root@controller ~]# openstack service create --name placement --description "Placement API" placement
创建Placement API服务端点:
[root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778
[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778
[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778
安装openstack-placement-api
yum -y install openstack-placement-api
编辑/etc/placement/placement.conf
sed -i -e '/^#/d' -e '/^$/d' /etc/placement/placement.conf
[DEFAULT]
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = openvip.com:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
password = 123
[placement]
[placement_database]
connection = mysql+pymysql://placement:123@openvip.com/placement
填充placement数据库
su -s /bin/sh -c "placement-manage db sync" placement
验证
placement-status upgrade check
+----------------------------------+
| Upgrade Check Results |
+----------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success |
| Details: None |
+----------------------------------+
| Check: Incomplete Consumers |
| Result: Success |
| Details: None |
+----------------------------------+
6.2.3 安装配置 Nova Controller
[root@controller ~]# yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api -y
# 配置nova
vim /etc/nova/nova.conf
配置 compute 和 metadata APIs
[DEFAULT]
enabled_apis=osapi_compute,metadata
配置数据连接
[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
connection = mysql+pymysql://nova:nova@controller/nova
配置RabbitMQ (如果RabbitMQ和Nova Controller不在同一节点,不能使用RabbitMQ的guest用户)
[DEFAULT]
transport_url = rabbit:// openstack: openstack @controller:5672/
在[DEFAULT]节中,启用对网络服务的支持:
默认情况下,Compute使用内部防火墙驱动程序。由于网络服务包括防火墙驱动程序,所以必须使用nova.virt.firewall.NoopFirewallDriver
防火墙驱动程序
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
配置认证服务访问
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova
配置管理IP
[DEFAULT]
my_ip = 你的IP
配置vnc代理
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
配置Glance API
[glance]
api_servers = http://controller:9292
配置锁路径
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
配置Placement
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = placement
因包装缺陷,必须将以下配置添加到Placement API中,从而启用对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>
重新启动httpd服务:
# systemctl restart httpd
6.2.4 初始化数据库
# 初始化 nava_api 数据库
忽略此输出中的任何弃用消息。
su -s /bin/sh -c "nova-manage api_db sync" nova
# 注册 cell0 数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
# 创建 cell1 单元
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
fb8e991a-8c1b-4b73-9802-3fb125cf6335
# 初始化 nava 数据库
su -s /bin/sh -c "nova-manage db sync" nova
# 验证 cell0 和 cell1 是否正确注册
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
6.2.5 启动服务
systemctl start openstack-nova-api
systemctl start openstack-nova-scheduler
systemctl start openstack-nova-conductor
systemctl start openstack-nova-novncproxy
systemctl enable openstack-nova-api
systemctl enable openstack-nova-scheduler
systemctl enable openstack-nova-conductor
systemctl enable openstack-nova-novncproxy
查看服务
[root@controller ~]# nova service-list
6.3 部署 Nova Compute
在Compute节点部署
6.3.1 安装配置Nova Compute
yum install -y openstack-nova-compute
# 配置nova
vim /etc/nova/nova.conf
- 编辑
/etc/nova/nova.conf
归档并完成以下操作:
- 在
[DEFAULT]
节中,只启用计算和元数据API:- [DEFAULT]
- # ...
- enabled_apis
= sapi_compute,metadata
- 在
[DEFAULT]
节,配置RabbitMQ
消息队列访问:- [DEFAULT]
- # ...
- transprt_url
= rabbit://penstack:RABBIT_PASS@controller
取代
RABBIT_PASS
使用您为openstack
记帐RabbitMQ
.
- 在
[api]
和[keystone_authtoken]
各节,配置身份服务访问:- [api]
- # ...
- auth_strategy
= keystne
- [keystne_authtoken]
- # ...
- auth_uri
= http://cntroller:
5000- auth_url
= http://cntroller:
35357- memcached_servers
= cntroller:
11211- auth_type
= passwrd
- prject_domain_name
= default
- user_dmain_name
= default
- prject_name
= service
- username
= nva
- passwrd
= NOVA_PASS
取代
NOVA_PASS
使用您为nova
身份服务中的用户。注
类中的任何其他选项注释掉或删除。
[keystone_authtoken]
部分。
- 在
[DEFAULT]
节中,配置my_ip
备选方案:- [DEFAULT]
- # ...
- my_ip
=
cmputeIP取代
MANAGEMENT_INTERFACE_IP_ADDRESS
对于计算节点上的管理网络接口的IP地址,通常为第一个节点的10.0.0.31示例体系结构.
- 在
[DEFAULT]
节中,启用对网络服务的支持:- [DEFAULT]
- # ...
- use_neutrn
=
True- firewall_driver
= nva.virt.firewall.NoopFirewallDriver
注
默认情况下,Compute使用内部防火墙服务。由于网络包括防火墙服务,所以必须使用
nova.virt.firewall.NoopFirewallDriver
防火墙驱动程序。
- 在
[vnc]
节中,启用和配置远程控制台访问:- [vnc]
- # ...
- enabled
=
True- vncserver_listen
=
0.0.
0.0- vncserver_prxyclient_address
=
$my_ip- nvncproxy_base_url
= http://cntroller:
6080/vnc_aut.html
服务器组件侦听所有IP地址,代理组件只侦听计算节点的管理接口IP地址。基URL指示可以使用Web浏览器访问此计算节点上实例的远程控制台的位置。
注
如果要访问远程控制台的web浏览器驻留在无法解析
controller
主机名,您必须替换controller
具有控制器节点的管理接口IP地址。
- 在
[glance]
节中,配置图像服务API的位置:- [glance]
- # ...
- api_servers
= http://cntroller:
9292- 在
[oslo_concurrency]
节中,配置锁路径:- [slo_concurrency]
- # ...
- lck_path
= /var/lib/nva/tmp
- 在
[placement]
节中,配置Placement API:- [placement]
- # ...
- s_region_name
= ReginOne
- prject_domain_name
= Default
- prject_name
= service
- auth_type
= passwrd
- user_dmain_name
= Default
- auth_url
= http://cntroller:
5000/v3
- username
= placement
- passwrd
= PLACEMENT_PASS
取代
PLACEMENT_PASS
使用您为placement
身份服务中的用户。中的任何其他选项注释掉。[placement]
部分。
最后安装
- 确定计算节点是否支持虚拟机的硬件加速:
$ egrep -c
'(vmx|svm)'/proc/cpuinfo
如果此命令返回值为
one or greater
,您的计算节点支持硬件加速,这通常不需要额外的配置。如果此命令返回值为
zero
,您的计算节点不支持硬件加速,您必须配置libvirt
使用QEMU而不是KVM。
- 编辑
[libvirt]
部分/etc/nova/nova.conf
档案如下:
- [libvirt]
- # ...
virt_type = qemu
启动Compute服务,包括其依赖项,并将其配置为在系统启动时自动启动:
# systemctl enable libvirtd.service openstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service
将计算节点添加到单元数据库中
重要
运行以下命令 控制器节点。
- 获取管理凭据以启用只管理的CLI命令,然后确认数据库中有计算主机:
$ . admin-openrc
- $ openstack hypervisor list (
一开始没有执行下面的语句后就有了) 或者 nova service-list
发现计算主机:
# 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 compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
添加新的计算节点时,必须运行nova-manage cell_v2 discover_hosts在控制器节点上注册这些新的计算节点。或者,您可以在/etc/nova/nova.conf:(自动发现新节点)
[scheduler]
discover_hosts_in_cells_interval = 300
下面是验证:
验证1:列出服务组件以验证每个进程的成功启动和注册
[root@controller ~]# openstack compute service list
验证2:列出Identity服务中的API端点以验证与Identity服务的连接
[root@controller ~]# openstack catalog list
验证3:列出Image服务中的图像以验证与Image服务的连接
[root@controller ~]# openstack image list
验证4:检查单元格和放置API是否正常运行以及其他必要的先决条件是否到位
[root@controller ~]# nova-status upgrade check
验证nova控制端
[root@controller ~]# nova service-list
注:部分内容参考和引用他人文章,如有侵权请联系删除 atlantis_0425@outlook