OpenStack nova-scheduler 是如何運作的

OpenStack nova-scheduler 是如何運作的

最近在工作上因為某些緣由看了很多關於 OpenStack nova 的 code,因而打算來寫一些文章記錄一下 nova 是如何運作的。首先第一篇將由 nova-scheduler 的部分開始。會帶讀者從 code level 了解 conductor 如何 call scheduler 到 scheduler 怎麼做決定流程。 本篇文章以撰寫時最新 stable 版本 victoria 為基礎。 nova-scheduler 簡介 nova-scheduler 是設計成一個 plugin based 的 scheduler,使用者可以根據自己的需求撰寫自己的 scheduler driver。在 nova 中預設會啟用的是本身 nova code base 中提供的 filter scheduler。 Filter scheduler 的運作原理非常的簡單,基本上會將所有的 host 經過一系列的 "filter",如果不符合 filter 的條件就會被剔除,符合的就會通過,並且進入最後的選擇的 pool。這些通過 filter 的 host 會在做 […]

Ceph and OpenStack – Best Practices Part II

Ceph and OpenStack – Best Practices Part II

上個禮拜介紹了 Ceph and OpenStack – Best Practices Part I,而這次要接續之前的建議再多介紹幾個 Ceph 跟 OpenStack 整合的最佳實踐。額外使用這些設定可以更加的整合 OpenStack and Ceph。 使用 RAW Image 在前一篇 Ceph and OpenStack – Best Practices Part I 中介紹了 RBD 本身有 layering 的功能,不過這個功能是有些限制的。上傳到 OpenStack 的 Image 必須是 RAW 格式才會利用到 RBD layering。所以會建議所有上傳上去的 image 都先轉成 RAW 格式。透過 qemu-img 指令可以很容易的轉換各種格式: qemu-img convert image.qcow2 image.raw 之後將 RAW 格式的 image […]

Ceph and OpenStack – Best Practices Part I

Ceph and OpenStack – Best Practices Part I

Ceph and OpenStack 現在已經是 IaaS 中成雙成對的一個組合。根據 2017 年 6-12 月的 OpenStack User Survey,在所有 OpenStack Deployment 中,有 57% 的部署使用的 Cinder backend 為 Ceph RBD。當然在使用 Ceph 作為 OpenStack Glance, Cinder 的 backend 會有一些能夠在設定上調整的最佳實踐。本篇文章將會介紹這些如何調整以及為什麼要進行這些設定。 在 Glance 中使用 show_image_direct_url 使用 Ceph RBD 時,預設會開啟 RBD Layering 這個功能,可以把它想像成一個可以讀寫 snapshot。這會建立一個原本 image 的 clone,而 Ceph 就只會建立跟原本 image 不同部分的 RADOS Objects。這代表了兩件事: 省空間 — 因為只會建立相對原本 […]

部署 Kolla-Ansible 使用 External Ceph

Ceph logo

在部署 Kolla-Ansible 時,雖然能夠同時部署 Ceph Cluster,但是在一些情況下,維運人員會希望將 Ceph 跟 OpenStack 分開管理,可是又想要利用 Ceph 當儲存的 Backend。這時可不用擔心,Kolla-Ansible 可以運用之前提過的 config override 的功能來使用 External Ceph Cluster。本篇文章將會介紹如何使用 Kolla-Ansible 和其 config override 的功能部署 OpenStack 並使用外部的 Ceph。 事前準備 既然要使用外部的 Ceph Cluster,首相需要部署出一個 Ceph 集群。部署 Ceph 的方法有很多選擇,也可以參考之前介紹過的 Ceph-Ansible 進行部署。 另外我們也需要一些使用 Kolla-Ansible 的基礎跟相關知識,可以參考這篇文章:透過 Kolla-Ansible 跟 Container 部署 OpenStack Ceph 設定 RBD Pool OpenStack Nova, Cinder (Cinder Backup), Glance […]

在 Kolla-Ansible 使用 Custom Config

Kolla Mascot

在上篇文章介紹了 Kolla 跟 Kolla-Ansible 部署 OpenStack 的方法。在設定的部分全部都是在 globals.yml 中設定,其他則交由 Kolla-Ansible 中的 template 處理。不過這樣的方式不免在部署中顯得稍失彈性,無法根據特殊環境做客製化,於是就誕生出了 config override 的方式來進行 custom config 的設定。本篇文章將會介紹如何使用 config override 來更改 Kolla-Ansible 部署 OpenStack 的設定檔。 設定方法 同樣在 globals.yml` 中我們可以找到一行設定 config overrides 檔案的資料夾。預設值是 `/etc/kolla/config ,可以更改為自己想要的資料夾。 # Location of configuration overrides #node_custom_config: "/etc/kolla/config" Kolla-Ansible 會在尋找在 /etc/kolla/config/<< 服務名稱 >>/<< 設定檔 >> 的檔案。設定檔 override 基本上可以 override 整個 OpenStack […]

透過 Kolla-Ansible 跟 Container 部署 OpenStack

透過 Kolla-Ansible 跟 Container 部署 OpenStack

OpenStack 早期在部署方面相當複雜也難以維護,但是在近期 DevOps 跟 Container 的概念熱門起來後,OpenStack Community 中也出現了透過 Container 跟 Ansible 部署 OpenStack 的方式。這種方式就是透過 Kolla 跟 Kolla-Ansible 實現。Kolla 提供可 Dockerfile 來 build OpenStack 所需要的 Docker images,Kolla-Ansible 則提供了一個部署這些 Container 所需要的 Ansible playbook。本篇文章將會介紹如何透過這個專案快速部署一個 Production Ready, High-availability 的 OpenStack 環境(目前版本為 Queens) 基本架構 一個 High-availability 的 OpenStack 環境基本上最少需要 4 個 node,3 個 controller node (ceph node) 加上至少一台的 compute node。每個 […]