nova cell v2原理及流程

為什么要引入nova cells

主要是為了降低數據庫和消息隊列的訪問瓶頸。
對于云端架構來說,它默認擁有非常大的資源池,而這些資源池需要很多的服務器加以支持。OpenStack在架構設計時,就已經充分考慮到了服務的可擴展性。不過,在實際的使用中,用戶經常會遇到問題,主要的問題包括兩個方面,這就是數據庫和消息隊列的瓶頸問題。而Cells正是Nova內部為了解決數據庫、消息隊列瓶頸問題而設計的一種計算節點劃分部署方案。
如果你仔細研究OpenStack的架構,你會發現OpenStack通過不同的項目對不同的資源接口進行抽象和封裝。而在這些資源之間,是通過消息隊列來進行通信的,同時也會有跨項目的通信。事實上,每一個項目都會有數據庫的訪問,以及消息隊列的使用。而數據庫和消息隊列正在成為整個OpenStack擴展的瓶頸。尤其是消息隊列,伴隨著集群規模的擴展,其性能下降是非常明顯的。通常情況下,當集群規模擴展到200個節點,一個消息可能要在十幾秒后才會響應,集群的整體性能大大下降。

cell v2

cell v2 自 Newton 版本引入 ,Ocata 版本變為必要組件 。 以后默認部署都會初始化一個單 cell 的架構 。cell v2 的架構圖如下 , 看著比 cell v1 清爽不少 。

image.png

從架構圖上 , 可以看到 :
1、api 和 cell 有了明顯的邊界 。 api 層面只需要數據庫 , 不需要 Message Queue。
2、nova-api 現在依賴 nova_api 和 nova_cell0 兩個數據庫 。
3、nova-scheduler 服務只需要在 api 層面上安裝 ,cell 不需要參數調度 。 這樣實現了一次調度就可以確定到具體在哪個 cell 的哪臺機器上啟動
4、這里其實依賴 placement 服務 , 以后的文章會提到
5、cell 里面只需要安裝 nova-compute 和 nova-conductor 服務 , 和其依賴的 DB 和 MQ
6、所有的 cell 變成一個扁平架構 。 比之前的多層父子架構要簡化很多 。
7、api 上面服務會直接連接 cell 的 MQ 和 DB, 所以不需要類似 nova-cell 這樣子的額外服務存在 。 性能上也會有及大的提升

nova_api & nova_cell0

自 Newton 版本 ,nova 就一直拆分 nova 數據庫 , 為 cell v2 做準備 。 把一些全局數據表從 nova 庫搬到了 nova_api, 下面是現在 nova_api 里面的所有表 。

image.png

可以看到像 flavor, instance groups, quota 這些表已經遷移了過來 。nova_cell0 數據庫的 schema 和 nova 是一樣的 , 他存在的只要用途是 : 當 instance 調度失敗時 , instance 的信息不屬于任何一個 cell, 所以放到 cell0 上面 。 因此里面的數據并不是太重要 。

Cell Related Tables

Cell 相關的數據庫表都在 nova_api 里面 , 包括 cell_mappings, host_mappings, instance_mappings。 其表結構如下 :

image.png

1、cell_mappings 表 cell 的 Database 和 Mesage Queue 的連接 。 用于和子 cell 通訊
2、host_mappings 是用于 nova-scheduler, 可以確認分配到的機器 。 這里其實也有一個坑 , 之前 nova-compute 啟動起來 , 就可以直接使用了 ,cell v2 之后 , 就需要手動運行 nova-manage cell_v2 discover_host , 把 host mapping 到 cell_mappings 表里面 , 那臺計算節點才會加入到調度中 。
3、instance_mappings 表里有所有 instance id, 這樣在查詢 instance 時 , 就可以從這個表里查到他所在的 cell, 然后直連 cell 拿到 instance 具體信息 。

cell 流程

image.png

當想要獲取一個機器的詳細信息時 :
1.nova-api 先從 instance_mappings 表拿到 instance 的 cell_id
2.再從 cell_mappings 表拿到所在 cell 的 DB connection
3.直接連接 cell 的 DB 拿到機器的詳細信息

image.png

當要重啟一臺機器時 :
1.nova-api 先從 instance_mappings 表里拿到 instance 所在的 cell_id
2.從 cell_mappings 里拿到所在 cell 的 message queue 連接
3.nova-api 直接給 mq 的相關隊列發重啟機器的消息

當新建機器時 :
1.nova-api 接到用戶的請求信息 , 先轉發到 nova-scheduler 進行調度 , nova-scheduler 通過 placement service, 直接確定分配到哪臺機器上
2.nova-api 把 instance 的信息存入 instance_mappings 表
3.nova-api 把機器信息存到目標 cell 的 database
4.nova-api 給 cell 的 message queue 的相關隊列發消息 , 啟動機器

Cell v2 的優點

?數據庫和消息隊列作為 nova 的一等公民 。
?在 cell 的數據庫里沒有冗余數據 , 所有共享數據都在 nova-api 中
?全局數據和 cell 數據有一條清晰的界線
?非 cell 用戶很容易的就可以遷移到 cell v2 上面 。 不需要更改現在的部署架構
?cell v1 的用戶也可以遷移到 cell v2 上 。 只要手動建立起所有的 mapping, 關掉現在存在的 nova-cell 服務 , 清掉最上層 cell 的數據庫 。 但是最上層 cell 本質上和其它 cell 是不同的 。 所以需要調整架構
?增減 cell 變的十分簡單 , 而且在把某個 cell 加入之前 , 可以在其它環境進行測試

Cell v2 相關命令

因為 cell v2 完全靠 database 的操作為建立 , 所以也沒有相關的 api 接口 。 主要靠 nova-manage cell_v2 命令 。 詳細說明參見REF
nova-manage cell_v2
create_cell
delete_cell
list_cells

map_cell0
discover_hosts
simple_cell_setup

map_cell_and_hosts
map_instances
verify_instance

其它

計算節點自動發現
上面提到了現在 nova-compute 服務上線后 , 不會自動加到 nova-api 的 host_mappings 里面 , 也就不會加到 nova-scheduler 的調度中 。 需要手動運行 nova-manage cell_v2 discover_hosts 命令 。 這顯示略顯繁瑣 。
在小型一些的環境上 , 推薦打開自動發現功能 , 就不用手動跑命令了 。

image.png

性能分析為了拿到 instance 的詳細信息 , 需要查詢 nova_api 數據庫 , 相比之前要多查詢一次數據庫 ( 雖然是有三個表 , 但是可以用多表連接查詢 , 一次就可以拿到所有的結果 )。 但是一來數據相當少 , 而且很容易加上一層 cache, 并不會對性造成什么影響 。

Kolla 實現

現在 Kolla 已經支持自動部署一個基本的 cell 環境 , 而且支持從沒有 cell 的 Newton 升級到有 cell 的 Ocata 版本 。

cells創建流程,例子。
https://docs.openstack.org/developer/nova/cells.html

來源:

http://www.99cloud.net/html/2017/jiuzhouyuanchuang_0306/301.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容