Openstack架构构建及详解(4)--Nova组件

简介: Openstack 是由Rackspace 和NASA 共同开发的云计算平台类似于AmazonEC2和S3的云基础架构服务Nova在Openstack 中提供云计算服务超过140 家企业及18470 为开发者参与开发。

Nova详解与安装


1、组件说明


1、nova是什么?


Openstack 是由Rackspace 和NASA 共同开发的云计算平台类似于AmazonEC2和S3的云基础架构服务Nova在Openstack 中提供云计算服务超过140 家企业及18470 为开发者参与开发。


2、nova组件


nova-api service 接收并响应终端用户计算API 调用。该服务支持OpenStack 计算API,Amazon EC2 和特殊的管理特权API
nova-api-metadata service 接受从实例元数据发来的请求。该服务通常与nova-network 服务在安装多主机模式下运行
nova-compute service 一个守护进程,通过虚拟化层API接口创建和终止虚拟机实例。例如:XenAPI for XenServer/XCP,libvirt for KVM or QEMU,VMwareAPI for Vmware
ova-scheduler service 从队列中获取虚拟机实例请求,并确认由哪台计算服务运行该虚拟机
nova-conductor module 协调nova-compute 服务和database 之间的交互数据。避免nova-compute 服务直接访问云数据库。不要将该模块部署在nova-compute 运行的节点上
nova-network worker daemon 类似于nova-compute服务,接受来自队列的网络任务和操控网络。比如这只网卡桥接或改变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 证书
nova-objectstore daemon 一个Amazon S3 的接口,用于将Amazon S3 的镜像注册到OpenStack
euca2ools client 用于兼容于Amazon E2 接口的命令行工具
nova client nova命令行工具
The queue 在进程之间传递消息的中心。通常使用RabbitMQ
SQL database 保存云基础设置建立和运行时的状态信息


2、组件工作流程


1、位置顺序


微信图片_20220509205203.png


通过引擎发送给Libvirt,它是一个虚拟化管理平台,通过libvirt创建虚拟机


2、Nova内部沟通


微信图片_20220509205242.png


3、Nova同其他组件进行沟通


微信图片_20220509205319.png


3、构建实验


1、基础配置computer节点
[root@compute ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.222.5 controller.nice.com
192.168.222.6 network.nice.com
192.168.222.10 compute1.nice.com
192.168.222.20 block1.nice.com
2、时间与controller节点同步
[root@compute ~]# yum install -y ntpdate
[root@compute ~]# ntpdate -u controller.nice.com
24 Jul 09:07:13 ntpdate[11003]: step time server 192.168.222.5 offset 9415.809954 sec
[root@compute ~]# crontab -e
# 分钟,小时,日,月,周,年
*/1 * * * * ntpdate -u controller.nice.com &> /dev/null
[root@compute ~]# systemctl restart crond
[root@compute ~]# systemctl enable crond


1、配置controller节点


1、下面内容和keystone大体步骤一致,不在赘述细节
 [root@controller ~]# mysql -uroot -pa
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 22
Server version: 5.5.37-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@controller ~]#  source admin-openrc.sh
[root@controller ~]# keystone user-create --name nova --pass NOVA_PASS
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |                                  |
| enabled  |               True               |
|    id    | dc2dd2a42a84495d9f6373465ffbd971 |
|   name   |               nova               |
| username |               nova               |
+----------+----------------------------------+
[root@controller ~]# keystone user-role-add --user nova --tenant service --role admin
[root@controller ~]# keystone service-create --name nova --type compute --description "OpenStackCompute"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |         OpenStackCompute         |
|   enabled   |               True               |
|      id     | 83dffa8f523446b3b39066bca8039d96 |
|     name    |               nova               |
|     type    |             compute              |
+-------------+----------------------------------+
[root@controller ~]# keystone endpoint-create \
> --service-id $(keystone service-list |awk '/compute/{print $2}')\
> --publicurl http://controller.nice.com:8774/v2/%\(tenant_id\)s \
> --internalurl http://controller.nice.com:8774/v2/%\(tenant_id\)s \
> --adminurl http://controller.nice.com:8774/v2/%\(tenant_id\)s \
> --region regionOne
+-------------+--------------------------------------------------+
|   Property  |                      Value                       |
+-------------+--------------------------------------------------+
|   adminurl  | http://controller.nice.com:8774/v2/%(tenant_id)s |
|      id     |         6c9721728da34340bec08af358f418e3         |
| internalurl | http://controller.nice.com:8774/v2/%(tenant_id)s |
|  publicurl  | http://controller.nice.com:8774/v2/%(tenant_id)s |
|    region   |                    regionOne                     |
|  service_id |         83dffa8f523446b3b39066bca8039d96         |
+-------------+--------------------------------------------------+
[root@controller ~]# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
2、更改配置文件
[root@controller ~]# vim /etc/nova/nova.conf 
a.编辑[database]小节,配置数据库访问:
[database]
...
connection = mysql://nova:NOVA_DBPASS@controller.nice.com/nova
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问:
[DEFAULT]
...
rpc_backend= rabbitrabbit_host= controller.nice.com
rabbit_password= RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务[DEFAULT]
...
auth_strategy= keystone
[keystone_authtoken]
...
auth_uri= http://controller.nice.com:5000/v2.0
identity_uri= http://controller.nice.com:35357
admin_tenant_name= service
admin_user= nova
admin_password= NOVA_PASS
d.编辑[DEFAULT]小节,配置my_ip选项为controller节点的管理接口ip:[DEFAULT]
...
my_ip= 192.168.1.5
e.编辑[DEFAULT]小节,配置VNCdialing服务的使用controller节点的管理接口ip:
[DEFAULT]
...
vncserver_listen= 192.168.1.5
vncserver_proxyclient_address= 192.168.1.5
f.编辑[glance]小节,配置镜像服务器的位置:
[glance]
...
host = controller.nice.comg.(可选)
在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose = True
3、初始化计算数据库
[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova
启动计算服务并配置开机自动启动
[root@controller ~]# systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
[root@controller ~]# systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
ln -s '/usr/lib/systemd/system/openstack-nova-api.service' '/etc/systemd/system/multi-user.target.wants/openstack-nova-api.service'
ln -s '/usr/lib/systemd/system/openstack-nova-cert.service' '/etc/systemd/system/multi-user.target.wants/openstack-nova-cert.service'
ln -s '/usr/lib/systemd/system/openstack-nova-consoleauth.service' '/etc/systemd/system/multi-user.target.wants/openstack-nova-consoleauth.service'
ln -s '/usr/lib/systemd/system/openstack-nova-scheduler.service' '/etc/systemd/system/multi-user.target.wants/openstack-nova-scheduler.service'
ln -s '/usr/lib/systemd/system/openstack-nova-conductor.service' '/etc/systemd/system/multi-user.target.wants/openstack-nova-conductor.service'
ln -s '/usr/lib/systemd/system/openstack-nova-novncproxy.service' '/etc/systemd/system/multi-user.target.wants/openstack-nova-novncproxy.service'


2、配置compute节点


1、安装软件包
# yum install openstack-nova-compute sysfsutils
[root@controller ~]# vim /etc/nova/nova.conf 
a.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问:
[DEFAULT]
...
rpc_backend= rabbit
rabbit_host= controller.nice.com
rabbit_password= RABBIT_PASS
b.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
...
auth_strategy= keystone
[keystone_authtoken]
...
auth_uri= http://controller.nice.com:5000/v2.0
identity_uri= http://controller.nice.com:35357
admin_tenant_name= service
admin_user= nova
admin_password= NOVA_PASS
c.编辑[DEFAULT]小节,配置my_ip配置项:
[DEFAULT]
...
my_ip= MANAGEMENT_INTERFACE_IP_ADDRESS
d.编辑[DEFAULT]小节,开启并配置远程控制台访问
[DEFAULT]
...
vnc_enabled= True
vncserver_listen= 0.0.0.0
vncserver_proxyclient_address= MANAGEMENT_INTERFACE_IP_ADDRESS
novncproxy_base_url= http://controller.nice.com:6080/vnc_auto.html
e.编辑[glance]小节,配置镜像服务器位置
[glance]
...
host = controller.nice.com
f.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose = True
完成安装
1、确认你的计算节点是否支持硬件虚拟化
# egrep-c '(vmx|svm)' /proc/cpuinfo
如果返回值>=1,则说明你的计算节点硬件支持虚拟化,无需额外配置。如果返回值=0,则活命你的计算节点硬件不支持虚拟化,你必须配置libvirt由使用KVM改为QEMU。
在/etc/nova/nova.conf文件中编辑[libvirt]小节
[libvirt]
...
virt_type= qemu
2、启动计算服务及依赖服务,并设置他们开机自动启动。
# systemctlenable libvirtd.serviceopenstack-nova-compute.service# systemctlstart libvirtd.service# systemctlstart openstack-nova-compute.service


4、测试


[root@controller ~]# source admin-openrc.sh
[root@controller ~]# nova service-list
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host                | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-scheduler   | controller.nice.com | internal | enabled | up    | 2020-07-24T14:36:43.000000 | -               |
| 2  | nova-consoleauth | controller.nice.com | internal | enabled | up    | 2020-07-24T14:36:43.000000 | -               |
| 3  | nova-conductor   | controller.nice.com | internal | enabled | up    | 2020-07-24T14:36:43.000000 | -               |
| 4  | nova-cert        | controller.nice.com | internal | enabled | up    | 2020-07-24T14:36:44.000000 | -               |
| 5  | nova-compute     | compute1.nice.com   | nova     | enabled | up    | 2020-07-24T14:36:46.000000 | -               |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
[root@controller ~]# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID                                   | Name                | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| 807f460b-566a-4989-b166-dc83248d4a40 | cirros-0.3.3-x86_64 | ACTIVE |        |
+--------------------------------------+---------------------+--------+--------+


相关文章
|
15小时前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第12天】 随着企业加速其数字化进程,云原生架构已成为实现敏捷性、可扩展性和资源优化的关键技术。本文深入探讨了如何通过采纳云原生原则和模式,企业能够有效地应对不断变化的市场需求,同时确保系统的可靠性和安全性。我们将分析云原生的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及无服务器计算,并展示它们如何共同促进业务和技术的同步演进。
|
20小时前
|
监控 API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第12天】 在现代软件开发的浪潮中,微服务架构已经成为了设计复杂系统的首选模式。它通过将大型应用程序拆分成一组小而专注的服务来增强系统的可维护性和可扩展性。本文将探讨微服务架构的关键概念、优势以及如何在后端开发中实现一个高效的微服务系统。我们还将讨论一些常见的挑战和最佳实践,以帮助开发者避免陷入常见的陷阱。
12 6
|
20小时前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第12天】 随着数字化转型的浪潮不断冲击传统IT架构,企业亟需灵活、高效且可扩展的技术解决方案以保持竞争力。云原生技术作为一种新兴的系统构建方式,以其独特的弹性、微服务和持续交付等特性,成为推动企业快速响应市场变化的关键因素。本文将深入探讨云原生架构的核心组件,分析其如何促进企业的敏捷性,以及在实施过程中可能遇到的挑战和解决策略,为企业采纳云原生技术提供参考。
|
1天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第11天】 随着数字化转型的深入,企业对技术的敏捷性、可扩展性和成本效益提出了更高的要求。云原生架构作为一种新兴的设计理念和实践方法,正逐渐成为推动企业技术革新的关键力量。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续交付(CI/CD)以及DevOps文化,并分析它们如何共同作用于企业的IT基础设施,实现灵活、高效的运营模式。同时,我们也将识别在采纳云原生技术时面临的主要挑战,并提出相应的解决策略,以帮助企业顺利过渡到云原生时代。
|
1天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第11天】 随着企业加速迈向数字化时代,云原生架构已成为推动创新与维持竞争力的核心动力。本文深入探讨了云原生技术如何优化资源利用,提升服务可靠性,并支持快速迭代,从而帮助企业实现敏捷性和弹性。我们将分析云原生的主要组件如容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,以及它们如何共同塑造出一个灵活、高效的企业IT生态系统。通过案例研究和最佳实践的分享,本文旨在为企业实施云原生架构提供策略指导和技术洞见。
|
1天前
|
监控 数据库 开发者
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第11天】在当今软件开发的世界中,微服务架构已经成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了设计、部署和维护微服务系统时面临的挑战,并提出了一系列实用的策略和最佳实践。我们将从服务的划分原则出发,讨论如何确保每个微服务的自治性,以及如何通过容器化和编排技术实现服务的高效运行。文章还将涉及监控、日志记录和故障恢复的策略,旨在帮助开发人员构建一个既高效又可靠的微服务环境。
|
1天前
|
Kubernetes API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第11天】 在现代软件开发的快速演变中,微服务架构已成为企业追求敏捷性、可扩展性和技术多样性的关键解决方案。本文旨在探讨如何构建高效的微服务架构,并分析其对后端开发的影响。我们将通过一系列最佳实践和策略,展示如何优化服务的独立性、弹性和性能,同时确保系统的整体稳定性和安全性。文章还将介绍容器化、API网关、服务发现和分布式追踪等关键技术的应用,为后端开发者提供一份全面的微服务实施指南。
|
3天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
4天前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新视角
【5月更文挑战第8天】 随着现代软件开发的演变,微服务架构已经成为了企业追求敏捷、可扩展和灵活部署的重要解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。我们还将讨论微服务带来的挑战,如数据一致性、服务发现和网络延迟,并提出相应的解决策略。通过本文,后端开发者将获得构建和维护微服务系统所需的深度知识,并了解如何在不断变化的技术环境中保持系统的健壮性和可维护性。
39 8
|
1天前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 与微服务架构的结合
【5月更文挑战第11天】微服务架构流行趋势下,选择合适的数据库至关重要。MongoDB作为非关系型数据库,与微服务有天然契合度。其灵活的文档模型、水平扩展性、高性能及局部事务支持,满足微服务对数据模型多样性、高可用性、快速读写的需求。实践中,需注意数据划分、索引优化、监控调优和版本控制。未来,MongoDB在微服务中的应用将更广泛,新技术将提升其在微服务架构中的价值。
【MongoDB 专栏】MongoDB 与微服务架构的结合