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

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

文章总目录


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、位置顺序


image.png

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


2、Nova内部沟通


image.png


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


image.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 |        |
+--------------------------------------+---------------------+--------+--------+

相关文章
|
14天前
|
运维 Cloud Native 持续交付
探索云原生架构:构建现代应用的基石
【7月更文挑战第9天】本文深入探讨了云原生架构的核心概念、关键技术组件以及实施的最佳实践。通过分析云原生技术如何促进微服务架构的实现,容器化技术的利用,以及持续集成与持续部署(CI/CD)流程的自动化,本文旨在为读者提供一个全面的云原生技术框架视图,并揭示其在加速企业数字化转型过程中的关键作用。
|
6天前
|
Ubuntu 网络协议 Android开发
使用ruri快速构建跨架构chroot容器
【7月更文挑战第3天】使用ruri在x86_64系统上构建arm64 Ubuntu容器的简要步骤: 1. 确认binfmt_misc支持,检查/proc/filesystems。 2. 安装qemu-user-static以模拟arm64指令。 3. 通过rootfstool脚本获取arm64的Ubuntu rootfs。 4. 下载最新版的ruri二进制文件。 5. 解压rootfs,将qemu-aarch64-static复制进去,用ruri启动容器。 6. 在容器内配置DNS(如设置resolv.conf)。 注意:需以root权限运行ruri,并根据系统环境调整步骤。
35 20
|
5天前
|
监控 前端开发 JavaScript
构建高效实时应用:Python WebSocket在前后端分离架构中的实践
【7月更文挑战第18天】WebSocket助力实时Web应用,通过一次握手建立持久连接,解决HTTP实时性问题。Python中可用Flask-SocketIO创建WebSocket服务器,前端JavaScript使用Socket.IO库连接。确保安全可采用HTTPS、认证及跨域限制。示例代码展示如何实现双向实时通信。
21 4
|
8天前
|
消息中间件 API 数据库
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
|
11天前
|
消息中间件 Java 开发者
Spring Cloud微服务框架:构建高可用、分布式系统的现代架构
Spring Cloud是一个开源的微服务框架,旨在帮助开发者快速构建在分布式系统环境中运行的服务。它提供了一系列工具,用于在分布式系统中配置、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等领域的支持。
49 5
|
14天前
|
Prometheus 监控 Kubernetes
如何构建一个可伸缩的微服务架构?
如何构建一个可伸缩的微服务架构?
|
3天前
|
存储 负载均衡 开发者
深入理解微服务架构中的服务发现机制
【7月更文挑战第19天】在微服务架构的海洋中,服务发现是一艘至关重要的航船,它指引着各个微服务之间的通信与协作。本文将揭开服务发现的神秘面纱,探索其工作原理、实现方式及面临的挑战,为开发者提供清晰的导航,确保服务间的顺畅航行。
|
3天前
|
监控 负载均衡 API
探索微服务架构下的API网关设计
【7月更文挑战第19天】在云原生时代,微服务架构以其灵活性和可扩展性成为企业数字化转型的优选。本文将深入探讨API网关在微服务架构中的核心角色,包括其设计原则、关键功能以及面临的挑战。我们将通过实例分析API网关如何提升系统的可维护性、安全性和性能,并讨论如何在复杂环境中实现高效的API管理策略。
70 9
|
22小时前
|
弹性计算 负载均衡 监控
探索微服务架构下的API网关模式
在现代的分布式系统中,微服务架构已经成为了主流。随着服务的不断增多,如何高效地管理这些服务之间的通信成为了一个关键问题。本文将深入探讨API网关模式,一种有效的解决方案,它能够提供请求路由、负载均衡、认证授权和监控等功能。我们将通过对比分析、案例研究以及数据统计来展示API网关模式的优势,并讨论其在实际部署中的最佳实践和可能面临的挑战。
13 5
|
21小时前
|
设计模式 存储 运维
微服务架构中的服务发现与注册中心设计模式
在现代软件工程实践中,微服务架构已成为构建灵活、可扩展系统的首选方案。本文将深入探讨微服务架构中至关重要的服务发现与注册中心设计模式。我们将从服务发现的基本原理出发,逐步解析注册中心的工作机制,并以Eureka和Consul为例,对比分析不同实现的优劣。文章旨在为开发者提供一套清晰的指导原则,帮助他们在构建和维护微服务系统时做出更明智的技术选择。