Ubuntu16手动安装OpenStack——nova篇

文章目录
  1. 1. 目标
  2. 2. nova简介
  3. 3. 控制节点
    1. 3.1. root用户
    2. 3.2. 数据库
    3. 3.3. 服务证书和端点
    4. 3.4. 服务证书和端点2
    5. 3.5. 安装配置组件
  4. 4. 计算节点
    1. 4.1. root用户
    2. 4.2. 安装配置
  5. 5. 添加计算节点到数据库
  6. 6. 验证操作
  7. 7. 控制节点安装计算服务

目标

紧接着《Ubuntu16手动安装OpenStack——glance篇》,本文我们来安装nova,主要参考Compute serviceInstall and configure controller node for UbuntuInstall and configure a compute node for Ubuntu

nova简介

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

OpenStack Compute与OpenStack Identity交互以进行身份​​验证;OpenStack 镜像服务用于磁盘和镜像管理;OpenStack Dashboard用于用户界面和管理界面。镜像访问受项目和用户的限制;配额受每个项目限制(例如,实例数)。OpenStack Compute可以在标准硬件上水平扩展,下载镜像,然后启动实例。

OpenStack Compute包含以下组件:

nova-api service
接受并响应终端用户compute API调用。该服务支持OpenStack Compute API。它强制执行某些策略并启动大多数活动,例如运行实例。

nova-api-metadata service
接受来自实例的元数据请求。在nova-network的多主机模式下运行时,通常会使用nova-api-metadata服务。

nova-compute service
通过虚拟机管理程序API,创建和终止虚拟机实例。例如:

  • XenAPI for XenServer/XCP
  • libvirt for KVM or QEMU
  • VMwareAPI for VMware

处理相当复杂。基本上,nova-compute守护程序接受来自队列的操作,并执行一系列系统命令,例如启动KVM实例并更新其在数据库中的状态。

nova-placement-api service
跟踪每个provider的库存和使用情况。

nova-scheduler service
从队列中获取虚拟机实例请求,并确定它运行的计算服务器主机。

nova-conductor module
负责nova-compute服务和数据库之间的交互。它消除了nova-compute服务对云数据库的直接访问。nova-conductor module可以水平伸缩。不要将其部署在运行nova-compute服务的节点上。

nova-consoleauth daemon
在控制台代理为用户授权tokens,参见nova-novncproxy和nova-xvpvncproxy。必须运行此服务才能使控制台代理生效。可以针对群集配置中的单个nova-consoleauth服务运行任一类型的代理。

nova-novncproxy daemon
提供正在运行的实例的代理,该代理通过VNC连接访问。支持基于浏览器的novnc客户端。

nova-spicehtml5proxy daemon
提供正在运行的实例的代理,该代理通过SPICE连接访问。支持基于浏览器的HTML5客户端。

nova-xvpvncproxy daemon
提供正在运行的实例的代理,该代理通过VNC连接访问。支持OpenStack特定的Java客户端。

The queue
用于在守护进程之间传递消息的中央集线器。通常用RabbitMQ实现,也可以用另一个AMQP消息队列实现,比如ZeroMQ。

SQL database
存储云基础架构的大多数构建时和运行时状态,包括:

  • Available instance types
  • Instances in use
  • Available networks
  • Projects

从理论上讲,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。常见的数据库是用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。

控制节点

root用户

为了避免权限问题,建议切换到root用户进行操作(否则要加很多sudo)。
sudo -i

数据库

1、登录数据库
mysql -uroot -p,密码为openstack。

2、创建nova_api,nova,nova_placement和nova_cell0数据库

1
2
3
4
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_placement;
CREATE DATABASE nova_cell0;

3、授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova_placement.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova_placement.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

4、退出数据库
exit;

服务证书和端点

1、使admin环境生效
. admin-openrc

2、创建nova用户
openstack user create --domain default --password-prompt nova

根据提示设置密码为openstack。

3、添加admin角色给nova用户
openstack role add --project service --user nova admin

4、创建nova服务实体
openstack service create --name nova --description "OpenStack Compute" compute

5、创建计算服务API endpoints

1
2
3
4
5
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

服务证书和端点2

1、创建Placement service user
openstack user create --domain default --password-prompt placement

按照提示设置密码为openstack。

2、添加Placement user到service project,并且赋予admin角色
openstack role add --project service --user placement admin

3、创建placement服务实体
openstack service create --name placement --description "Placement API" placement

4、创建Placement API服务端点

1
2
3
4
5
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

安装配置组件

1、安装组件
apt-get -y install nova-api nova-placement-api nova-conductor nova-consoleauth nova-scheduler nova-novncproxy python-novaclient

2、备份nova.conf
mv /etc/nova/nova.conf /etc/nova/nova.conf.bak

3、vim /etc/nova/nova.conf,新建nova.conf内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[DEFAULT]
# define own IP
my_ip = 192.168.56.110
state_path = /var/lib/nova
enabled_apis = osapi_compute,metadata
log_dir = /var/log/nova
# RabbitMQ connection info
transport_url = rabbit://openstack:openstack@controller

[api]
auth_strategy = keystone

# Glance connection info
[glance]
api_servers = http://controller:9292

[oslo_concurrency]
lock_path = $state_path/tmp

# MariaDB connection info
[api_database]
connection = mysql+pymysql://nova:openstack@controller/nova_api

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

# Keystone auth info
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
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 = openstack

[placement]
auth_url = http://controller:5000
os_region_name = RegionOne
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
password = openstack

[placement_database]
connection = mysql+pymysql://nova:openstack@controller/nova_placement

[wsgi]
api_paste_config = /etc/nova/api-paste.ini

4、更改权限
chmod 640 /etc/nova/nova.conf

chgrp nova /etc/nova/nova.conf

5、生成数据库表结构

1
2
3
4
su -s /bin/bash nova -c "nova-manage api_db sync"
su -s /bin/bash nova -c "nova-manage cell_v2 map_cell0"
su -s /bin/bash nova -c "nova-manage db sync"
su -s /bin/bash nova -c "nova-manage cell_v2 create_cell --name cell1"

完成后查看日志:tail /var/log/nova/nova-manage.log
不放心的话,就登录数据库查看数据。

6、验证一下cell0和cell1是否被正确注册
nova-manage cell_v2 list_cells

7、重启服务,完成安装

1
2
3
for service in api conductor scheduler consoleauth novncproxy; do
systemctl restart nova-$service
done

8、查看计算服务列表
openstack compute service list

计算节点

本节介绍如何在计算节点上安装和配置Compute服务,该服务支持多个虚拟机管理程序来部署实例或虚拟机(VM)。为简单起见,此配置使用Quick EMUlator(QEMU)虚拟机管理程序,和支持虚拟机硬件加速的KVM扩展。可以按照教程进行小改,以便水平扩展计算节点。

安装方法主要参考OpenStack Queens : Add Compute Nodes

root用户

为了避免权限问题,建议切换到root用户进行操作(否则要加很多sudo)。
sudo -i

安装配置

1、安装组件
apt-get -y install nova-compute-kvm

2、备份nova.conf
mv /etc/nova/nova.conf /etc/nova/nova.conf.bak

3、vim /etc/nova/nova.conf,新建nova.conf内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[DEFAULT]
# define own IP address
my_ip = 192.168.56.111
state_path = /var/lib/nova
enabled_apis = osapi_compute,metadata
log_dir = /var/log/nova
# RabbitMQ connection info
transport_url = rabbit://openstack:openstack@controller

[api]
auth_strategy = keystone

# enable VNC
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

# Glance connection info
[glance]
api_servers = http://controller:9292

[oslo_concurrency]
lock_path = $state_path/tmp

# Keystone auth info
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
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 = openstack

[placement]
auth_url = http://controller:5000
os_region_name = RegionOne
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
password = openstack

[wsgi]
api_paste_config = /etc/nova/api-paste.ini

4、设置权限
chmod 640 /etc/nova/nova.conf

chgrp nova /etc/nova/nova.conf

5、硬件加速(可选)
egrep -c '(vmx|svm)' /proc/cpuinfo

如果看到大于等于1的数字,说明主机支持硬件加速,不需要额外的配置。

如果此命令返回零值,则计算节点不支持硬件加速,您必须将libvirt配置为使用QEMU而不是KVM。

编辑/etc/nova/nova-compute.conf文件,libvirt部分修改为:

1
2
3
[libvirt]
# ...
virt_type = qemu

6、重启nova-compute服务
systemctl restart nova-compute

添加计算节点到数据库

以下操作在controller节点操作。

1、使admin环境生效
. admin-openrc

2、查看计算服务列表
openstack compute service list

发现,此时已经多了nova-compute服务。

3、查看计算节点
openstack compute service list --service nova-compute

4、如果没有看到计算节点,那么需要查找计算节点,并且进行注册
su -s /bin/bash nova -c "nova-manage cell_v2 discover_hosts"

添加新的compute节点时,必须在控制器节点上运行nova-manage cell_v2 discover_hosts以注册这些新计算节点。或者,可以在/etc/nova/nova.conf中设置适当的间隔来自动发现和注册节点:

1
2
[scheduler]
discover_hosts_in_cells_interval = 300

验证操作

以下操作在controller节点操作。

1、使admin环境生效
. admin-openrc

2、列出服务组件,以验证每个进程的成功启动和注册
openstack compute service list

成功的话可以看到四个服务:nova-scheduler、nova-consoleauth、nova-conductor和nova-compute。

3、列出Identity服务中的API端点,以验证与Identity服务的连接
openstack catalog list

4、列出镜像服务中的镜像,以验证与镜像服务的连接
openstack image list

5、检查cells and placement API是否工作正常
nova-status upgrade check

控制节点安装计算服务

1、安装组件
apt -y install nova-compute-kvm

2、vim /etc/nova/nova.conf,添加vnc配置:

1
2
3
4
5
6
# enable VNC
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

3、硬件加速(可选)
egrep -c '(vmx|svm)' /proc/cpuinfo

如果看到大于等于1的数字,说明主机支持硬件加速,不需要额外的配置。

如果此命令返回零值,则计算节点不支持硬件加速,您必须将libvirt配置为使用QEMU而不是KVM。

编辑/etc/nova/nova-compute.conf文件,libvirt部分修改为:

1
2
3
[libvirt]
# ...
virt_type = qemu

4、重启nova-compute服务
systemctl restart nova-compute

5、添加到数据库
su -s /bin/bash nova -c "nova-manage cell_v2 discover_hosts"

6、查看计算节点
openstack compute service list --service nova-compute