想实现这样一个功能:自定义一个add命令,在controller端命令行中输入nova add 5 6,然后把5和6作为参数传递给实例(假设我现在只有一个实例),让实例计算5+6,并将结果11返回给controller,需要改写哪些py,求大牛help!nova-api自定义

解决方案 »

  1.   

    想法很特异啊。
    这个应该是由具体的服务来完成,而不是由instance来完成
      

  2.   

    OpenStack不是IaaS层的吗?那它应该是要提供计算资源能力的。所以我想像HADOOP那样能把大任务分解成小任务交给实例去完成,然后再将结果返回。所以我得完成最基本的让一个实例把我分配的任务给完成啊。
      

  3.   

    OpenStack是提供Nova API Extension的,只不过我我总感觉nova的架构太复杂了,想不到用什么方法和我创建的实例进行通信
      

  4.   

    OpenStack不是IaaS层的吗?那它应该是要提供计算资源能力的。所以我想像HADOOP那样能把大任务分解成小任务交给实例去完成,然后再将结果返回。所以我得完成最基本的让一个实例把我分配的任务给完成啊。OpenStack不是IaaS层的吗?那它应该是要提供计算资源能力的。所以我想像HADOOP那样能把大任务分解成小任务交给实例去完成,然后再将结果返回。所以我得完成最基本的让一个实例把我分配的任务给完成啊。hadoop俺不懂,不过我个人觉得即使将任务分块,交给不同的实例去完成,最后接任务的也是服务而不是机器。也许我错了 :-)。
      

  5.   

    唉,看了很久OpenStack的架构,对我这种初学OpenStack的菜鸟而言,感觉它的消息通信(AMQP)以及用WSGI去实现还是太困难了,改源码也无从下手,都不知道该改哪儿所以就只能低端地利用socket通信去实现了,在实例那儿开机启动一个占用特定端口的后台server来处理host那儿发来的请求,以此来暂时达到目的但这方法感觉还是太低端了,都没有用到scheduler,任务没有经过任何的路由。
      

  6.   

    openstack的AMQP通信是用于各个管理组件之间的通信,好像不是用于VMinstance之间通信的,最多是在VMinstance在做迁移时候会发生一点点关系;WSGI也是Openstack各个管理组件的实现之之基础,与VM的instance也几乎没什么关系。
    你的解决方案是在VMinstance上启用一个server端口监听来host请求。你的这个server不还一个服务吗。
    还是回到原来的真正的接任务的还是服务。
    个人理解你应该是先将你的任务分解,根据分解的实际情况调用scheduler来检索已经存在相关的VMinstance,如果VMinstance不存在或者不能满足你的任务分解要求,那么就调用响应的scheduler启动相应的VMinstance,当然这些VMinstance默认部署了你的任务处理器。
      

  7.   

    我不太清楚你所说的服务的概念到底有多大,可能当时没理解到你的意思(这个应该是由具体的服务来完成,而不是由instance来完成),但是我这个任务确实是转发到我的instance上,让instance启动相关的后台server进程来完成的,host仅起到一个转发任务的作用,而没有对数据进行处理(姑且算一个中继服务吧)。
    而且这个只是我为了短期内解决任务,暂时想到的解决方法,但我总觉得能用它提供的消息通信机制来完成任务的分配才是最佳的方法,而且host也应该是有控制实例的功能,而不是每次都先去实例上部署相关的服务。
    至于你后面说的分解任务及用scheduler那块,我是赞同的,不过目前只是实验小任务,所以暂时不考虑,但是我觉得如果是一个比较大的,麻烦的任务,如果人工去分解任务,并部署相关任务到instance上,最后再将结果整合后返回,我就觉得有点麻烦了。之前有提到过hadoop,尽管不是很了解它的实现机制,但是确实听说它有提供这么一个接口,来完成分解、部署以及整合的功能,这是我的个人见解,不一定正确,敬请指教
      

  8.   

    对了,最近比较纠结这个问题,我希望能改些他的源代码,但是那个可能需要有debug environment,你们有进过Openstack的Debug Mode吗?我看网上的教程全都是用devstack什么的,但是我之前用devstack配环境失败过所以不敢再试了
      

  9.   


    其实不用devstack,github取代码,用eclipse+pydev+git  简单配置一下即可做debug。