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。這代表了兩件事: 省空間 — 因為只會建立相對原本 […]

Container vs VM: When and Why?

Container vs VM: When and Why?

Container 跟 Virtual Machine 的使用時機在網路上已經被討論了很久。每個人都有自己的看法和意見,有些人支持純 Container,有些支持純 VM,也有些支持 Container on VM。本篇文章將以個人看法針對 Container vs VM 做介紹跟其適用的使用時機做論述。 Container Container 在這 5 年來快速竄紅,憑的是其輕量化和快速部署的彈性。與其虛擬化整個硬體,Container 透過 cgroups 跟 namespace 將 host OS 的資源做隔離,也有人稱之為 OS 的虛擬化。 Container 共用 host 上的 kernel,只有其獨立的 binary 跟 libraries,所以比起 VM 在 image 大小跟啟動速度都快的許多。 Container 的優點: Image 很小:因為跟 host 共用 kernel,只需要提供需要的 OS 元件跟 libraries。 速度:部署極快,通常花數秒就可以生成一個 container。 可攜性:在正確的 kernel […]

部署 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 […]

利用 Ceph-Ansible 部署 Ceph Cluster

Ceph logo

Ceph 是一個 open source 的分散式儲存系統,能夠同時提供物件、區塊跟檔案系統的儲存,所以被大量使用在 OpenStack 部署中,提供 Swift,、Cinder 跟 Manlia 的 backend。本篇文章將介紹如何透過 Ceph-Ansible 去部署一個 Production Ready, High-availability 的 Ceph Cluster。 基本架構 一個基本的 Ceph Cluster 基本上包含了 3 個 元件:Ceph Monitor, Ceph OSD, Ceph Manager Daemon Ceph Monitor Ceph Monitor 是 Ceph 的核心元件,它負責維護整個集群的狀態映射,包含 monitor、manager、OSD 跟 CRUSH 的狀態,這些資料是維持 Ceph 運作的必要元件。此外,Monitor 也負責進行 daemons 跟 clients 中的認證。一個 High-availability 的 Ceph […]

在 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。每個 […]