OpenStack管理-nova计算

发布时间:2026/5/28 14:28:26

OpenStack管理-nova计算 OpenStack管理-nova计算nova负责•虚拟机生命周期管理•其他计算资源生命周期管理nova不负责•承载虚拟机的物理主机自身的管理•全面的系统状态监控nova系统架构•DB用于数据存储的SQL数据库。•API接收 HTTP 请求、转换命令并通过oslo.messaging队列或 HTTP与其他组件通信的组件。•Scheduler为虚拟机选择合适的物理主机。•Compute虚拟机生命周期和复杂流程控制。•Conductor处理需要协调构建/调整大小的请求充当数据库代理或处理对象转换。•Placement跟踪资源提供者的库存和使用情况。nova-apinova-conductorNova-Conductor功能1.数据库操作解耦其他组件(Nova-Compute)数据库访问2.Nova复杂流程控制如创建冷迁移热迁移虚拟机规格调整虚拟机重建3.其他组件的依赖如nova-compute需要nova-conductor启动成功后才能启动4.其他组件的心跳定时写入nova-schedulerNova-Scheduler功能筛选和确定将虚拟机实例分配到哪一台物理机分配过程主要分为过滤和权重两步过滤和权重通过过滤器选择满足条件的计算节点通过权重选择最优的节点Filter schedulerFilter scheduler 是 nova-scheduler 默认的调度器调度过程分为两步通过过滤器filter选择满足条件的计算节点运行 nova-compute上创建 Instance。RetryFilterRetryFilter 的作用是刷掉之前已经调度过的节点。AvailabilityZoneFilter为提高容灾性和提供隔离服务可以将计算节点划分到不同的Availability Zone中。过虑时会将Availability Zone的节点外的实例直接筛选掉。RamFilterRamFilter 将不能满足 flavor 内存需求的计算节点过滤掉。对于内存有一点需要注意 为了提高系统的资源使用率OpenStack 在计算节点可用内存时允许overcommit也就是可以超过实际内存大小。 超过的程度是通过 nova.conf 中 ram_allocation_ratio这个参数来控制的默认值为 1.5倍如果计算节点的内容为 10GBOpenStack 则会认为它有 50GB10*1.5内存。DiskFilterDiskFilter 将不能满足 flavor 磁盘需求的计算节点过滤掉。Disk 同样允许 overcommit通过 nova.conf中 disk_allocation_ratio 控制默认值为 1216 #disk_allocation_ratioCoreFilterCoreFilter 将不能满足 flavor vCPU 需求的计算节点过滤掉。vCPU 同样允许 overcommit通过nova.conf 中 cpu_allocation_ratio 控制默认值为 16cpu_allocation_ratio16.0这意味着一个 8 vCPU 的计算节点nova-scheduler 在调度时认为它有 128 个 vCPU。 需要提醒的是nova-scheduler 默认使用的 filter 并没有包含 CoreFilter。 如果要用可以将 CoreFilter 添加到nova.conf 的 scheduler_default_filters 配置选项中。ComputeFilterComputeFilter 保证只有 nova-compute 服务正常工作的计算节点才能够被 nova-scheduler调度。ComputeFilter 显然是必选的 filter。ComputeCapabilitiesFilterComputeCapabilitiesFilter 根据计算节点的特性来筛选。例如我们的节点有 x86_64位 和 ARM 架构的如果想将 Instance 指定部署到 x86_64 架构的节点上就可以利用 ComputeCapabilitiesFilter。ImagePropertiesFilterImagePropertiesFilter 根据所选 image 的属性来筛选匹配的计算节点。ServerGroupAntiAffinityFilter(反亲和性)ServerGroupAntiAffinityFilter 可以尽量将 Instance 分散部署到不同的节点上。例如有 inst1inst2 和 inst3 三个 instance计算节点有 A,B 和 C。调度时 ServerGroupAntiAffinityFilter 会将 inst1, inst2 和 inst3 部署到不同计算节点 A, B 和 C。ServerGroupAffinityFilter亲和性与 ServerGroupAntiAffinityFilter 的作用相反ServerGroupAffinityFilter 会尽量将 instance 部署到同一个计算节点上。Weight经过前面一堆 filter 的过滤nova-scheduler 选出了能够部署 instance 的计算节点。Scheduler 会对每个计算节点打分得分最高的获胜。 打分的过程就是 weight翻译过来就是计算权重值。目前 nova-scheduler 的默认实现是根据计算节点空闲的内存量计算权重值 空闲内存越多权重越大instance 将被部署到当前空闲内存最多的计算节点上。日志整个过程都被记录到 /var/log/nova-scheduler.log的日志文件中。[rootcontrollernova(keystone_admin)]#cat/var/log/nova/nova-scheduler.log|grepFilternova-compute•虚拟机生命周期操作的真正执行者会调用对应的hypervisor的driver。•底层对接不同虚拟化的平台KVM/VMware/XEN/Ironic等。•内置周期性任务完成资源刷新虚拟机状态同步等功能。•资源管理模块resource_tracker配合插件机制完成资源的统计。RabbitMQ性能查看开源的消息队列中间件把服务A的消息发送rabbitmq再由它转给服务BA和B不用直接对接不用互相等查看RabbitMQ服务状态[rootcontroller ~]# systemctl status rabbitmq-server.service● rabbitmq-server.service - RabbitMQ broker Loaded: loaded(/usr/lib/systemd/system/rabbitmq-server.service;enabled;vendor preset: disabled)Drop-In: /etc/systemd/system/rabbitmq-server.service.d └─90-limits.conf Active: active(running)since Thu2024-09-26 09:06:19 CST;18min ago Main PID:1721(beam.smp)Status:InitializedTasks:91(limit:100416)Memory:118.7M CGroup: /system.slice/rabbitmq-server.service ├─1721 /usr/lib64/erlang/erts-10.7.2.1/bin/beam.smp-Ww-A64-MBasageffcbf-MHasageffcbf-MBlmbcs512├─2144 /usr/lib64/erlang/erts-10.7.2.1/bin/epmd-daemon├─3100 erl_child_setup16384├─7806 inet_gethost4└─7807 inet_gethost4RabbitMQ 有一个管理 plugin提供了图形管理界面可以在运行 RabbitMQ 的节点一般是控制节点执行下面的命令启用。[rootcontroller ~]# rabbitmq-plugins enable rabbitmq_managementEnabling plugins onnoderabbitcontroller: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbitcontroller... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch started3plugins.创建一个 用户用来登录管理控制台[rootcontroller ~]# iptables -F[rootcontroller ~]# rabbitmqctl add_user user_admin passwd_admin #创建用户名密码Adding useruser_admin...[rootcontroller ~]# rabbitmqctl set_user_tags user_admin administratorrabbitmqctl set_permissions-p/ user_admin.*.*.*#授权Setting tagsforuseruser_adminto[administrator, rabbitmqctl, set_permissions, user_admin, .*, .*, .*]... 以用 user_admin密码 passwd_admin登录 地址是http://192.168.108.10:15672创建虚拟机过程客户向 APInova-api发送请求“帮我创建一个 Instance”API对请求做一些必要处理后向 MessagingRabbitMQ发送了一条消息“让 Scheduler 创建一个 Instance”Schedulernova-scheduler从 Messaging 获取到 API 发给它的消息然后执行调度算法从若干计算节点中选出节点 A。Scheduler 向 Messaging 发送了一条消息“在计算节点 A 上创建这个 Instance”计算节点 A 的 Computenova-compute从 Messaging 中获取到 Scheduler 发给它的消息然后通过本节点的 Hypervisor Driver 创建 Instance。在 Instance 创建的过程中Compute 如果需要查询或更新数据库信息会通过 Messaging 向Conductornova-conductor发送消息Conductor 负责数据库访问。

相关新闻