2013-08-02 98 views
1

我计划创建一个服务,在openstack环境中休眠/唤醒未使用的计算节点,以便我需要计算节点的ip地址。 是否有任何API或命令可用于获取OpenStack网络中存在的IP地址(不是计算节点的名称)计算机?获取openstack网络中计算节点的ip地址

回答

2

在OpenStack云环境设置中使用的IP地址有两种类型。

  1. 修正:

    只能从OpenStack的网络来访问,也就是虚拟机之间。

  2. 浮动:

    能否从OpenStack的云网络外部访问,基本的工作原理不同的接口上,一般是由该IP提供给公众从外部netwrok访问该虚拟机。

现在,你知道这一点,按照这里给出的API。 http://api.openstack.org/api-ref.html#ext-os-ext-ips

在通过JSON响应获取IP地址时,首先必须检查它是固定的还是浮动的。

这应该回答你的问题,我希望。如果不是的话请通知。

+0

固定和浮动IP被分配给创建的实例,我需要的是主机的IP,即运行这些实例的计算节点。 – R45c4l

+0

http://api.openstack.org/api-ref.html#identity-v2.0。向“v2.0 /令牌”发出POST请求,并且它应该返回包含服务目录的JSON。在服务目录字段中输入“type”:“compute”,您将获得计算模块的公共URL。实例运行在这个公共URL的计算。(一般) –

0

您可以查询nova数据库并获取compute_node表中所有计算节点的ip。我在python中编写了一个小函数来完成我的一个测试。

def get_compute_nodes(parameters): 
    try: 
     password = parameters['password'] 
     db=_mysql.connect(user="root",passwd=password, db="nova") 
     query = """select host_ip from compute_nodes where deleted=0""" 
     db.query(query) 
     r=db.use_result() 
     results = r.fetch_row(maxrows=0) 
     return results 
    except Exception as exp: 
     print "Error in accessing the Nova database" 
     print exp 
+0

嗨,是否有一个“官方的方式”如何查询数据库?我的意思是,Nova Conductor处理所有的数据库请求,没有什么应该直接进入数据库,对吧? – RichArt

+0

嗨!不,不幸的是,OpenStack没有推荐查询数据库的“官方方式”。他们公开了这些API,以便用户不必查询数据库。您也可以使用OpenStack Python SDK,但此时该方法只返回计算的名称。因此,该方法必须进行修改,否则您可以编写一个调用REST API的新方法。你可以在python中使用httplib库来做到这一点。我会尝试写和添加它作为答案。 –