资源隔离调度算法测试(isolated_scheduler)及openstack集群开发环境搭建

本文主要是介绍资源隔离调度算法测试(isolated_scheduler)及openstack集群开发环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!

如有转载,请保留源作者博客信息。

Better Me的博客:blog.csdn.net/tantexian

如需交流,欢迎大家博客留言。


1、环境:
centos6.5
openstack icehouse

2、集群
nova-manage service list

3、测试虚拟机生成:

一切正常。(原生默认的虚拟机调度策略为:生成到逻辑剩余内存最大的计算节点。)


4、安装samba环境,请参考相应博文。



将源码重定向到samba文件中(ln -s)

5、windows中共享samba中的代码



6、访问页面:


解决,出现下面错误:

开发环境搭建完成:

7、无密码scp、rsync:
在主节点node31:
ssh-keygen -t rsa

scp .ssh/id_rsa.pub root@192.168.10.31:/root/.ssh/authorized_keys(分别复制到node32/33/34/35节点)

8、安装同步工具:(同步的所有节点都需要安装)比scp效率高
yum install rsync -y
rsync -avzP /home/samba/nova-2014-1-1/nova/  root@192.168.10.32 :/usr/lib/python2.6/site-packages/nova/
第一次同步时间比较长,后续则是差分同步

node31同步脚本:
vi rsyncNova.sh

rsync -avzP --exclude ".pyc" /home/samba/nova-2014-1-1/nova/ root@192.168.10.32:/usr/lib/python2.6/site-packages/nova/ 
rsync -avzP --exclude ".pyc" /home/samba/nova-2014-1-1/nova/ root@192.168.10.33:/usr/lib/python2.6/site-packages/nova/ 
rsync -avzP --exclude ".pyc" /home/samba/nova-2014-1-1/nova/ root@192.168.10.34:/usr/lib/python2.6/site-packages/nova/ 
rsync -avzP --exclude ".pyc" /home/samba/nova-2014-1-1/nova/ root@192.168.10.35:/usr/lib/python2.6/site-packages/nova/


9、远程重启compute服务脚本:
ssh 192.168.10.32 "service openstack-nova-compute restart"

编写脚本:
vi allcompute-restart.sh

service openstack-nova-compute restart
ssh 192.168.10.32 "service openstack-nova-compute restart"
ssh 192.168.10.33 "service openstack-nova-compute restart"
ssh 192.168.10.34 "service openstack-nova-compute restart"
ssh 192.168.10.35 "service openstack-nova-compute restart"



每次同步完代码,执行此脚本重启所有节点的compute服务,使代码生效。



10、接下来使用pycharm在windows上同步linux开发:





11、重启服务,访问页面
将计算节点分区域和主机集合:




12、nova数据库中增加数据库计算资源隔离数据库表:(详情参考博文: http://blog.csdn.net/tantexian/article/details/39156803



数据库字段注释:
user_id:用于扩展、暂且保留
tenant_id #租户id,表示该租户只能使用某些zone、aggregate、host的计算节点生成虚拟机
isolated_type = Column(String(36))##0==host, 1 ==aggregate,2==zone
isolated_name = Column(String(255))#zone or aggregate or host name
isolated_id = Column(Integer)#zone or aggregate or service tables'id
status = Column(Integer) #0 == down 1==active,用于扩展、暂且保留

13、验证增删字段到isolated_schedule数据库表中:
获取token值,加入到环境变量:

vi .bashrc
添加内容:

环境变量生效:
source .bashrc
验证TOKEN变量是否生效:


发布操作隔离资源的api:


查看下keystone的租户信息表:
查看所有可用zone:

查看所有可用aggregate:



查看所有可用host:



添加一个host到数据库:
(其中第一个值2a4fe5e733e44982b1d576c5a0fe4bfd为当前用户属于的tenant_id主要用来做权限认证,
   第二个值2a4fe5e733e44982b1d576c5a0fe4bfd为所操作计算资源隔离的对象,本次环境为admin租户)
curl -i ' http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/ os-isolation-hosts/ 2a4fe5e733e44982b1d576c5a0fe4bfd /action' -X POST -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{"add_host": {"isolated_name": "node31","tenant_name":"admin"}}'


api测试成功。



删除一个host从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/action' -X POST -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{"remove_host": {"isolated_name": "node32","tenant_name":"admin"}}'


添加一个aggregate从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/action' -X POST -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{"add_aggregate": {"isolated_name": "ag1","tenant_name":"admin"}}'


删除一个aggregate从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/action' -X POST -H client" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{"remove_aggregate": {"isolated_name": "ag1","tenant_name":"admin"}}'



添加一个zone从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/action' -X POST -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{"add_zone": {"isolated_name": "zone1","tenant_name":"admin"}}'


删除一个zone从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/action' -X POST -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{"remove_zone": {"isolated_name": "zone1","tenant_name":"admin"}}'



根据tenant_id获取数据库表isolated_schedule host、aggregate、zone:
获取host从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/get_isolated_scheduler_host_list' -X GET "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN"




获取aggregate从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/get_isolated_scheduler_aggregate_list' -X GET "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN"



获取zone从数据库:

curl -i 'http://192.168.10.31:8774/v2/2a4fe5e733e44982b1d576c5a0fe4bfd/os-isolation-hosts/2a4fe5e733e44982b1d576c5a0fe4bfd/get_isolated_scheduler_zone_list' -X GET "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN"


所有API测试通过

14、测试计算资源过滤调度算法:
scheduler.filter增加过滤算法:

要使用该算法,则应该在/etc/nova.conf增加配置项:
scheduler_default_filters配置项修改为:
scheduler_default_filters=IsolatedscheduleFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

重启服务生效。

调度算法具体分析,更多详情请参考博文:http://blog.csdn.net/tantexian/article/details/39156829


15、测试限制admin 租户只能将虚拟机生成到node31、node35上:
数据库增加两条记录:


开启远程debug,更多详情请参考之前博文。



根据调试结果,与预期一致。(注,由于遵循opentack原生的调度过滤算法架构,此处有个明显的问题就是,每判断一次host都要走一次数据库,因此比较耗性能,后续考虑优化)


如果修改配置提示_member_不存在则修改:
vim /usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py


在页面生成虚拟机:
由上述结果可以知道,生成的8个虚拟机能够生成到指定的node31、node35上。



16、测试限制admin 租户只能将虚拟机生成到ag1和ag3上:
数据库信息:

与预期结果一致。
有上述结果可以知道,生成的8个虚拟机能够生成到指定的ag1、ag3上。


17、测试限制admin 租户只能将虚拟机生成到zone2上:

与预期一致:
有上述结果可以知道,生成的8个虚拟机能够生成到指定的zone2上。


18、测试限制admin 租户只能将虚拟机生成到ag2和node31及zone2上:



调度算法验证完毕。

这篇关于资源隔离调度算法测试(isolated_scheduler)及openstack集群开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815238

相关文章

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.