混合雲之虛擬機器建立映象

2021-08-19 05:09:01 字數 3515 閱讀 6115

混合雲的做法,現在一般都是api適配得做法。比如nova或者cinder,都是在driver層增加乙個對接aws或者vmware的driver來調公有雲或者私有雲的api,從而達到在私有雲裡管理公有雲的目的。

現在有很多公司做混合雲管理多個私有雲或者公有雲,那今天我講的就是虛擬機器建立映象的乙個優化操作。

測試環境:私有雲openstack a,公有雲openstack b,openstack為l版本,現在很多公司做的公有雲都是用openstack做的,那我的測試環境就全部用openstack來測試。

寫乙個openstack driver,在nova.conf 配置一下driver為openstack driver,在私有雲a中建立虛擬機器,就會經過openstack driver調到公有雲b上去建立虛擬機器了。

在優化建立映象之前,建立映象的流程是啥呢,如下圖所示:

我們來看一下driver層的步驟,就當你已經看過nova製作映象的**了。

步驟:

1、呼叫novaclient介面create image 到公有雲b上建立映象

2、等待instance的task_state 為none,就說明虛擬機器這邊建立映象完成。

3、等待image的status為active狀態,說明在公有雲b上映象真正的建立完成

5、呼叫 本地glance 介面upload到本地的glance服務上,刪除臨時檔案tmp.raw

6、寫入私有雲映象與公有雲映象的對應關係。

這樣整個在私有雲的glance上就會有你建立的映象,如果你的私有雲還管理其他的私有雲或者公有雲,也可以用你剛才製作的映象了。

那問題來了,在第4步的步驟中,有乙個download映象和寫入到本地檔案的過程,那這個過程是否可以優化呢?

在呼叫glance image_download介面時,是直接返回的乙個生成器,for迴圈把所有的資料讀取上來存到檔案中的,

上傳映象時,glance upload介面時會傳入乙個檔案的fd,upload的時候for迴圈在檔案中讀取出檔案資訊傳送到glance服務的。

那我的優化點就在這,download檔案時,不寫入臨時檔案,直接把生成器傳入到upload介面中,從而達到乙個proxy過程,這樣就節省了寫入檔案與讀取檔案的操作了。

優化的整個流程圖如下:

1、呼叫novaclient介面create image 到公有雲b上建立映象

2、等待instance的task_state 為none,就說明虛擬機器這邊建立映象完成。

3、等待image的status為active狀態,說明在公有雲b上映象真正的建立完成

5、寫入私有雲映象與公有雲映象的對應關係。

**如下:

首先我們需要自己定義個生成器,我們有乙個read介面,在upload的時候就是呼叫read介面來讀取資料。

classdef__iter__(self):

returnself

defnext(self):

trydata

exceptstopiteration:

raise

defread(self, length):

returnself.next()

def__next__ = next

defdata(self, image_id):

py_logging.getlogger('keystoneauth1').setlevel(py_logging.warning)

image_data = self.client().images.data(image_id)

returndatafile(image_data)

log.debug(" begin to download image(%s)",

provider_image_id)

image_data = self.os_glanceclient(context).data(

provider_image_id)

log.debug("+++hw, image length = %s", len(image_data))

self._image_api.update(context,

image_id,

metadata,

image_data)

未來可能優化的流程圖如下:

這個方案可能需要修改一下公有雲openstack的glance配置,配置項:

show_image_direct_url = true

show_multiple_locations = true

修改此連個選項之後,就可以返回direct_url,這個可能對glance後端為swift或者ceph做為儲存的,有可能實現這個方案。

**部分的實現:

建立虛擬機器

建立虛擬機器時難點在於安裝作業系統上,其他地方沒難度我就不一步一步說了。要點 1 硬體相容性一般情況下選最高的那個,但有時候,最高的那個會存在不穩定的現象。儘管我是道聽途說,但保險起見,我選擇workstation 12.x。這個相容性可在後面隨時調整,不影響虛擬機器內的資料。2 主要難點在於安裝作...

建立虛擬機器

第一步點選新建虛擬機器,選擇自定義 高階 第二步預設選項,進入下一步。第三步,選擇稍後安裝作業系統。進入下一步。第四步,選擇安裝linux系統,下面版本選項選擇oracle liunx 7 64位。第五步,虛擬機器名稱自己命名。檔案位置,建議建立在自己能找到的磁碟裡。第六步,處理器數量推薦選擇2個,...

openstack 虛擬機器映象製作

準備 伺服器作業系統 centos 7 準備一台安裝了vnc viewer客戶端的windows作業系統用於訪問伺服器裡啟動的虛擬機器介面 前提是windows系統能訪問伺服器 sle 12 sp2 sap x86 64 gm 1.iso複製到伺服器 home 下 qemu img create f...