BLOG

计算服务(Nova)安装配置,这一篇就够了!

实验目标

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

OpenStack 计算组件请求 OpenStack Identity 服务进行认证;

请求 OpenStack Image 服务提供磁盘镜像;

为 OpenStack dashboard 提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack 组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例: 熟悉计算服务 Nova 的安装配置。

控制节点创建数据库、服务凭证和 API endpoint

1、实现要求

在控制节点创建 nova_api 和 nova 数据库、用户并授权,创建服务凭证和API endpoint

2、实现过程

创建 nova_api 数据库,创建 nova 用户(密码为 123456)并授权

MariaDB > CREATE DATABASE nova_api;

MariaDB > GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456';

MariaDB > GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456';

MariaDB > GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'controller' IDENTIFIED BY '123456';

创建 nova 数据库,授权 nova 用户(密码为 123456)

MariaDB > CREATE DATABASE nova;

MariaDB > GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456';

MariaDB > GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456';

MariaDB > GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller' IDENTIFIED BY '123456';

重启数据库

# systemctl restart mariadb

获得 admin 权限

# . admin-openrc

创建 nova 用户,会提示输入密码,我这里是 123456

# openstack user create --domain default --password-prompt nova

添加 admin 角色到 nova 用户,没有输出

# openstack role add --project service --user nova admin

创建 nova 服务实体

# openstack service create --name nova --description "OpenStack Compute" compute

创建 endpoint

# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s

控制节点安装服务及配置

1、实现要求

控制节点安装 Nova 服务并修改配置

2、实现过程

安装 Nova 服务

# yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-novanovncproxy openstack-nova-scheduler

安装完成以后进入/etc/nova/目录,备份 nova.conf 文件 nova.conf.bak

# cp nova.conf nova.conf.bak

修改 nova.conf,如下:vi nova.conf

[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url=rabbit://openstack:123456@controller

auth_strategy = keystone

rpc_backend = rabbit

my_ip = 192.168.23.101

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api_database]

connection = mysql+pymysql://nova:123456@controller/nova_api

[database]

connection = mysql+pymysql://nova:123456@controller/nova

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = 123456

[vnc]

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip

[glance]

api_servers = http://controller:9292

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

同步 Compute 数据库,忽略告警信息,注意检查数据库里有没有表,如果没有,检查日志/var/log/nova/ nova-manage.log

# su -s /bin/sh -c "nova-manage api_db sync" nova

# su -s /bin/sh -c "nova-manage db sync" nova

启动 Compute 服务并将其设置为随系统启动

# systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-novascheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-novascheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

验证控制节点的 nova 是否配置成功

执行 admin-openrc

# . admin-openrc

执行以下命令,有结果即为正确

# openstack host list

# nova service-list

计算节点安装服务及配置

1、实现要求

在计算节点安装并配置 Nova 服务

2、实现过程

安装服务

# yum install openstack-nova-compute -y

安装完成以后,执行以下命令,检查计算节点是否支持硬件加速

# egrep -c '(vmx|svm)' /proc/cpuinfo

如果这个命令返回 1 或者更大的值,说明计算节点支持硬件加速,不需要进行额外的配置。如果这个命令返回 0,则计算节点不支持硬件加速,必须配置 libvirt 使用 QEMU 而不是使用KVM,修改 virt_type 属性为 qemu 即可 vi /etc/nova/nova.conf

[libvirt]

virt_type = qemu

进入/etc/nova/目录,修改 nova.conf 配置文件,修改前备份以下

# cd /etc/nova/

# cp nova.conf nova.conf.bak

# vi nova.conf

修改内容如下(注意别忘加上面的 qemu 的修改):

[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url=rabbit://openstack:123456@controller

auth_strategy = keystone

my_ip = 192.168.23.102

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = 123456

[vnc]

enabled = True

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = $my_ip

novncproxy_base_url = http://controller:6080/vnc_auto.html

# egrep -c '(vmx|svm)' /proc/cpuinfo

# cd /etc/nova/

# cp nova.conf nova.conf.bak

# vi nova.conf

文档密级:内部 A

9

[glance]

api_servers = http://controller:9292

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

启动计算服务及其依赖,并将其配置为开机自动启动

# systemctl start libvirtd.service openstack-nova-compute.service

# systemctl enable libvirtd.service openstack-nova-compute.service

控制节点验证操作

1、实现要求

在控制节点验证 nova 的配置是否正确

2、实现过程

获得 admin 凭证

# . admin-openrc

在控制节点上执行新节点的检查

# openstack compute service list

列出服务组件,以验证是否成功启动并注册了每个进程

# nova service-list

出现如图所示即为正确。

参考资料:《OpenStack 从零开始学》–卢万龙著,电子工业出版社第 2 篇安装配置篇,第 13章(P130)