OpenStack(Train版)-部署NOVA
  kCmFobNLwURY 2023年11月02日 30 0

六、NOVA

6.1、NOVA详解

6.1.1、Nova概述

Nova和Swift是openstack最早的两个组件,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信。

Nova(OpenStack Compute Service)是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源,同时管理虚拟机生命周期。

6.1.2、Nova架构图


OpenStack(Train版)-部署NOVA_API

API:用于接收HTTP请求、转换命令、通过消息队列或HTTP与其他组件通信。

Conductor:处理需要协调(构建虚拟机或调整虚拟机大小)的请求,充当数据库代理或者处理对象转换。

Scheduler:用于决定哪台计算节点承载计算实例。

Compute:管理虚拟机管理器与虚拟机之间通信。

DB:用于数据存储的SQL数据库,通常是MariaDB。

6.1.3、Nova组件详解

6.1.3.1、nova-api

nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 Nova 能够提供的功能。 当客户需要执行虚机相关的操作,能且只能向 nova-api 发送 REST 请求。

设计 API 前端服务的好处在于: 1. 对外提供统一接口,隐藏实现细节 2. API 提供 REST 标准调用服务,便于与第三方系统集成 3. 可以通过运行多个 API 服务实例轻松实现 API 的高可用,比如运行多个 nova-api 进程。

6.1.3.2、nova-compute

nova-compute 在计算节点上运行,负责管理节点上的实例。OpenStack 对实例的操作,最后都是交给 nova-compute 来完成。nova-compute 与 Hypervisor 一起实现 OpenStack 对实例生命周期的管理。

OpenStack(Train版)-部署NOVA_mysql_02

nova-compute 的功能可以分为两类:

定时向 OpenStack 报告计算节点的状态

每隔一段时间,nova-compute 就会报告当前计算节点的资源使用情况和 nova-compute 服务状态。这样OpenStack 就能得知每个计算节点的 vcpu、ram、disk 等信息。nova-scheduler 的很多 Filter 才能根据计算节点的资源使用情况进行过滤,选择符合 flavor 要求的计算节点。

实现实例生命周期的管理

OpenStack 对实例最主要的操作都是通过 nova-compute 实现的,包括实例的启动、关闭、重启、暂停、恢复、删除、调整实例大小、迁移、创建快照等。

6.1.3.3、nova-conductor

为计算节点提供数据库访问支持。

nova-compute服务和数据库之间的中间件。

实现更高的系统安全性

在 OpenStack 的早期版本中,nova-compute 可以直接访问数据库,但这样存在非常大的安全隐患。因为 nova-compute 这个服务是部署在计算节点上的,为了能够访问控制节点上的数据库,就必须在计算节点的 /etc/nova/nova.conf 中配置访问数据库的连接信息。如果任意一个计算节点被黑客入侵,都会导致部署在控制节点上的数据库面临极大风险。

为了解决这个问题,从 G 版本开始,Nova 引入了一个新服务 nova-conductor,将 nova-compute 访问数据库的全部操作都放到 nova-conductor 中,而且 nova-conductor 是部署在控制节点上的。这样就避免了 nova-compute 直接访问数据库,增加了系统的安全性。

实现更好的系统伸缩性

nova-compute 与 nova-conductor 是通过消息中间件交互的。这种松散的架构允许配置多个 nova-conductor 实例。在一个大规模的 OpenStack 部署环境里,管理员可以通过增加 nova-conductor 的数量来应对日益增长的计算节点对数据库的访问。

6.1.3.4、nova-scheduler

将创建新虚拟机的请求分发到正确的节点。

当创建实例时,用户会提出资源需求,例如 CPU、内存、磁盘各需要多少。OpenStack 将这些需求定义在 flavor 中,用户只需要指定用哪个 flavor 就可以了。nova-scheduler 会按照 flavor 去选择合适的计算节点。

FilterScheduler调度过程分为两步:

通过过滤(filtering)选择满足条件的计算节点。

通过权重计算(weighting)选择在最优(权重值最大)的计算节点上创建实例。

6.1.3.5、nova-novncproxy

为浏览器提供VNC代理,允许VNC控制台访问虚拟机。

6.2部署NOVA

6.2.1、部署NOVA控制节点(controller节点)

6.2.1.1、创建数据库并配权限

mysql -uroot -p123456

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

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

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

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

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

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

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

flush privileges;

6.2.1.2、创建nova用户

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

或者

openstack user create --domain default --password nova123 nova

6.2.1.3、添加管理员角色给nova

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

6.2.1.4、创建nova服务

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

6.2.1.5、给Nova服务关联endpoint(端点)

openstack endpoint create --region RegionOne compute public http://controller1:8774/v2.1

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

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


6.2.1.6、安装和配置服务

6.2.1.6.1、安装nova组件(nova-api、nova-conductor、nova-novncproxy、nova-scheduler)

yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler -y

//openstack-nova-conductor:提供数据库连接

//openstack-nova-novncproxy:访问云主机的vnc

//openstack-nova-scheduler:提供调度服务

6.2.1.6.2、备份原文件

cp -a /etc/nova/nova.conf{,.bak}


6.2.1.6.3、配置nova.conf方法一

openstack-config--set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata

openstack-config--set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:nova123@controller1/nova_api

openstack-config--set /etc/nova/nova.conf database connectionmysql+pymysql://nova:nova123@controller1/nova

openstack-config--set /etc/nova/nova.conf DEFAULT transport_urlrabbit://openstack:openstack123@controller1:5672/

这里需要修改自己rabbitmq的openstack密码

openstack-config--set /etc/nova/nova.conf api auth_strategy keystone

openstack-config--set /etc/nova/nova.conf keystone_authtoken www_authenticate_urihttp://controller1:5000/

openstack-config--set /etc/nova/nova.conf keystone_authtoken auth_url http://controller1:5000/

openstack-config--set /etc/nova/nova.conf keystone_authtoken memcached_servers controller1:11211

openstack-config--set /etc/nova/nova.conf keystone_authtoken auth_type password

openstack-config--set /etc/nova/nova.conf keystone_authtoken project_domain_name Default

openstack-config--set /etc/nova/nova.conf keystone_authtoken user_domain_name Default

openstack-config--set /etc/nova/nova.conf keystone_authtoken project_name service

openstack-config--set /etc/nova/nova.conf keystone_authtoken username nova

openstack-config--set /etc/nova/nova.conf keystone_authtoken password nova123

这里修改自己keystone认证的nova密码。

openstack-config--set /etc/nova/nova.conf DEFAULT my_ip 192.168.56.11

这里填自己的管理IP地址

openstack-config--set /etc/nova/nova.conf DEFAULT use_neutron true

openstack-config--set /etc/nova/nova.conf DEFAULT firewall_drivernova.virt.firewall.NoopFirewallDriver

openstack-config--set /etc/nova/nova.conf vnc enabled true

openstack-config--set /etc/nova/nova.conf vnc server_listen 192.168.56.11

openstack-config--set /etc/nova/nova.conf vnc server_proxyclient_address 192.168.56.11

填自己的IP

openstack-config--set /etc/nova/nova.conf glance api_servers http://controller1:9292

openstack-config--set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

openstack-config--set /etc/nova/nova.conf placement region_name RegionOne

openstack-config--set /etc/nova/nova.conf placement project_domain_name Default

openstack-config--set /etc/nova/nova.conf placement project_name service

openstack-config--set /etc/nova/nova.conf placement auth_type password

openstack-config--set /etc/nova/nova.conf placement user_domain_name Default

openstack-config--set /etc/nova/nova.conf placement auth_url http://controller1:5000/v3

openstack-config--set /etc/nova/nova.conf placement username placement

openstack-config--set /etc/nova/nova.conf placement password placement123

这里换成自己keystone中placement的密码

openstack-config--set /etc/nova/nova.conf scheduler discover_hosts_in_cells_interval 300

默认每次添加个计算节点,在控制端就需要执行一次扫描,这样会很麻烦,所以可以修改控制端nova的配置文件,设置为以秒为单位的时间间隔来配置周期性任务,以使Nova自动发现新主机。

6.2.1.6.4、配置nova.conf方法一

vim /etc/nova/nova.conf

1:[DEFAULT]

……

508:my_ip=192.168.56.11

……

816:use_neutron=true

……

1169:firewall_driver=nova.virt.firewall.NoopFirewallDriver

……

1364:enabled_apis=osapi_compute,metadata

……

1590:transport_url=rabbit://openstack:openstack123@controller1:5672/

……

1632:[api]

……

1649:auth_strategy=keystone

……

1834:[api_database]

……

1849:connection=mysql+pymysql://nova:nova123@controller1/nova_api

……

2320:[database]

……

2339:connection=mysql+pymysql://nova:nova123@controller1/nova

……

2631:[glance]

……

2642:api_servers=http://controller1:9292

……

3208:[keystone_authtoken]

……

3223:www_authenticate_uri=http://controller1:5000/

……

3239:auth_url=http://controller1:5000/

……

3286:memcached_servers=controller1:11211

……

3367:auth_type=password

3368:project_domain_name=Default

3369:user_domain_name=Default

3370:project_name=service

3371:username=nova

3372:password=nova123

……

4252:[oslo_concurrency]

……

4266:lock_path=/var/lib/nova/tmp

……

4758:[placement]

……

4789:auth_type=password

……

4796:auth_url=http://controller1:5000/v3

……

4812:project_name=service

……

4819:project_domain_name=Default

……

4840:username=placement

……

4847:user_domain_name=Default

……

4851:password=placement123

……

4870:region_name=RegionOne

……

5226:[scheduler]

……

5260:discover_hosts_in_cells_interval=300

……

5893:[vnc]

……

5907:enabled=true

……

5931:server_listen=192.168.56.11

……

5939:server_proxyclient_address=192.168.56.11

6.2.1.6.5、同步nova-api的数据库

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

6.2.1.6.6、注册cell0数据库

su -s/bin/sh -c "nova-manage cell_v2 map_cell0" nova

6.2.1.6.7、创建cell1单元格

su -s/bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose"nova

6.2.1.6.8、同步nova数据库

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

OpenStack(Train版)-部署NOVA_数据库_03


6.2.1.6.9、验证nova cell0和cell1已正确注册

su -s /bin/sh-c "nova-manage cell_v2 list_cells" nova

OpenStack(Train版)-部署NOVA_数据库_04

6.2.1.6.10、开启服务完成安装

systemctlenable openstack-nova-api.service openstack-nova-scheduler.serviceopenstack-nova-conductor.service openstack-nova-novncproxy.service

systemctlstart openstack-nova-api.service openstack-nova-scheduler.serviceopenstack-nova-conductor.service openstack-nova-novncproxy.service


6.2.2、部署NOVA计算节点(compute节点)

6.2.2.1、计算安装软件包

yum install openstack-nova-compute -y

6.2.2.2、备份原配置文件

cp -a /etc/nova/nova.conf{,.bak}

6.2.2.3、修改计算节点nova.conf配置文件-方法一

vim /etc/nova/nova.conf

1:[DEFAULT]

……

508:my_ip=192.168.56.21

……

816:use_neutron=true

……

1169:firewall_driver=nova.virt.firewall.NoopFirewallDriver

……

1364:enabled_apis=osapi_compute,metadata

……

1590:transport_url=rabbit://openstack:openstack123@controller1

……

1632:[api]

……

1649:auth_strategy=keystone

……

2629:[glance]

……

2640:api_servers=http://controller1:9292

……

3206:[keystone_authtoken]

……

3221:www_authenticate_uri=http://controller1:5000/

……

3237:auth_url=http://controller1:5000/

……

3284:memcached_servers=controller1:11211

……

3365:auth_type=password

3366:project_domain_name=Default

3367:user_domain_name=Default

3368:project_name=service

3369:username=nova

3370:password=nova123

……

3376:[libvirt]

……

3415:virt_type=qemu

#若计算节点不支持硬件加速(虚拟化),则此参数设置为qume。

#使用以下命令确定计算节点是否支持虚拟机的硬件加速:

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

如果此命令返回1或更大的值,则计算节点支持硬件加速,通常不需要额外配置

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

……

4251:[oslo_concurrency]

……

4265:lock_path=/var/lib/nova/tmp

……

4757:[placement]

……

4788:auth_type=password

……

4795:auth_url=http://controller1:5000/v3

……

4811:project_name=service

……

4818:project_domain_name=Default

……

4839:username=placement

……

4846:user_domain_name=Default

……

4850:password=placement123

……

4869:region_name=RegionOne

……

5891:[vnc]

……

5905:enabled=true

……

5929:server_listen=0.0.0.0

……

5937:server_proxyclient_address=192.168.56.21

……

5943:novncproxy_base_url=http://controller1:6080/vnc_auto.html

6.2.2.4、修改计算节点nova.conf配置文件-方法二

grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf

openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata

openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:openstack123@controller1

openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.56.21

openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true

openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

openstack-config --set /etc/nova/nova.conf api auth_strategy keystone

openstack-config --set /etc/nova/nova.conf keystone_authtoken www_authenticate_uri http://controller1:5000/

openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller1:5000/

openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller1:11211

openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password

openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default

openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default

openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service

openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova

openstack-config --set /etc/nova/nova.conf keystone_authtoken password nova123

openstack-config --set /etc/nova/nova.conf vnc enabled true

openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0

openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address 192.168.56.21

openstack-config --set /etc/nova/nova.conf novncproxy_base_url http://controller1:6080/vnc_auto.html

openstack-config --set /etc/nova/nova.conf glance api_servers http://controller1:9292

openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

openstack-config --set /etc/nova/nova.conf placement region_name RegionOne

openstack-config --set /etc/nova/nova.conf placement project_domain_name Default

openstack-config --set /etc/nova/nova.conf placement project_name service

openstack-config --set /etc/nova/nova.conf placement auth_type password

openstack-config --set /etc/nova/nova.conf placement user_domain_name Default

openstack-config --set /etc/nova/nova.conf placement auth_url http://controller1:5000/v3

openstack-config --set /etc/nova/nova.conf placement password placement123

openstack-config --set /etc/nova/nova.conf placement username placement

openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu



6.2.2.5、启动服务

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

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


6.2.2.6、启动openstack-nova-compute报错案例

systemctl start openstack-nova-compute.service

Job for openstack-nova-compute.service failed because the control process exited with error code. See "systemctl status openstack-nova-compute.service" and "journalctl -xe" for details.

OpenStack(Train版)-部署NOVA_mysql_05

查看报错日志:

tail /var/log/nova/nova-compute.log

OpenStack(Train版)-部署NOVA_API_06

分析日志及排查nova.conf配置文件内容确定为,[placement]模块中placement的账号密码写错。

6.2.2.7、在控制节点验证计算节点是否添加成功

. admin-openrc

openstack compute service list --service nova-compute


OpenStack(Train版)-部署NOVA_API_07

若控制节点的nova.conf文件中[scheduler]模块未配置自动发现计算节点参数(discover_hosts_in_cells_interval = 300,单位为秒),可执行一下命令手动添加:

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

验证计算节点服务:

openstack compute service list #检查 nova 的各个服务是否都是正常,以及 compute 服务是否注册成功

openstack catalog list #查看各个组件的 api 是否正常

openstack image list #查看是否能够拿到镜像

nova-status upgrade check #查看cell的api和placement的api是否正常,只要其中一个有误,后期无法创建虚拟机

OpenStack(Train版)-部署NOVA_mysql_08

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月10日   9   0   0 mysqlsqlUser
  9JCEeX0Eg8g4   2023年12月11日   13   0   0 mysql配置文件