2013-08-02 99 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庫來做到這一點。我會嘗試寫和添加它作爲答案。 –