從裸機到雲端:OpenStack Neutron 介紹 3

從裸機到雲端:OpenStack Neutron 介紹 3

上一篇介紹了 Neutron 的網路的概念,接下來將會接續介紹 Neutron 的一些名詞。 Neutron 概念 (名詞) Subnets (子網) Subnets 是一組 IP 地址和其相關的設定狀態,其功能是為 provider/project networks 提供 IPAM(IP 地址管理)的功能。 子網用於在網絡上創建連接埠時分配 IP 地址。 Subnet pools 使用者通常可以使用任何有效的 IP 地址創建子網,而沒有其他限制。 但是,在某些情況下,管理員或 project 會希望預先定義一個地址池 (IP address pool),使在創毽子網的時候自動分配一段地址。在一些狀況下管理員可能想避免 IP 地址重複,就可以使用 subnet pools 防止來自同一池的兩個子網的地址重複。 Port (連接埠) 連接埠是將單個設備(例如虛擬伺服器的 NIC)連接到虛擬網路的連接點。 該連接埠還描述了相關的網路設定,例如要在該連接埠上使用的 MAC 和 IP 地址。 路由器 (Router) 路由器提供虛擬的 L3 功能,例如self-service 跟 provider 網路之間或是 […]

從裸機到雲端:OpenStack Neutron 介紹 2

從裸機到雲端:OpenStack Neutron 介紹 3

上一篇介紹了 Neutron 的架構,接下來兩篇將會接續介紹 Neutron 的一些概念和名詞。 Neutron 概念 Neutron 提供使用者創建網路跟其子網域,並可將其他 OpenStack 服務(如 Compute)將虛擬設備連接到這些網路上的端口,通常最常見的就是連接 Instance 到網路。Neutron 支援每個 project 擁有多個私有網絡,並允許 project 選擇自己的 IP addressing 方案,並且不同網路中的 IP 地址與其他 project 使用的 IP 地址重疊。 有兩種類型的網絡,provider network 和 self-service network,這些網路是可以在 project 之間共享的。 Provider Networks Provider networks 為實例 (Instance) 提供 L2 網路連結,並支援 DHCP 和元數據 (metadata) 服務。 這些網路是連接到資料中心現有的 L2 網路,通常使用 VLAN (802.1q) tagging 來識別和隔離它們。 […]

從裸機到雲端:OpenStack Neutron 介紹 1

從裸機到雲端:OpenStack Neutron 介紹 3

昨天為讀者介紹目前 OpenStack 中算是最核心的元件,Keystone,今天來介紹 OpenStack 筆者認為最複雜的原件,Neutron,也是 OpenStack 提供網路服務的元件。 Neutron 架構 OpenStack Networking (neutron) 允許您創建網路介面 (network interface) 並接上其他 OpenStack 元件管理的服務 (如 Nova VM),使其能夠連接到網絡。可以透過不同的後端 plugin 去因應不同的網絡設備和軟體,為 OpenStack 架構和部署提供靈活性。 它包括以下組件: Neutron-server 接受 API 請求並將其路由到適當的 OpenStack Networking 插件以進行操作。 OpenStack Networking 後端 plug-ins 和 agents 插入和拔除端口,創建網絡或子網路,並提供 IP 位置。這些 plug-ins 和 agents 根據不同的雲中使用的供應商和技術而異。常見的 plug-ins 為 OVS, Linux Bridge 和 OVN,後續會介紹其架構。 常見的 agents […]

從裸機到雲端:OpenStack Keystone 介紹

從裸機到雲端:OpenStack Keystone 介紹

上一篇介紹了歷史最悠久的 OpenStack 元件 Nova,這篇要來介紹目前 OpenStack 中算是最核心的元件,Keystone Keystone 是什麼? 官方文件中是這樣敘述的: Keystone 是一個 OpenStack 服務,通過實現 OpenStack 的 Identity API 來提供 API 客戶端認證、服務發現 (service discovery) 和分散式多租戶授權 (distributed multi-tenant authorization)。 簡單來講,你可以把它當成 OpenStack 中的認證服務,並且記錄了所有 OpenStack API 的所在位置 (endpoint)。 Keystone 架構 Keystone 是由多個不同的內部服務 (internal service) 組成,而這些服務通常是組合在一起使用。例如:一個認證的請求首先會透過 Identity 服務驗證使用者提供的 credentials,成功後透過 Token 服務生成一個 token 給使用者。 Keystone 包含了以下服務: Identity Resource Assignment Token Catalog 我們將一一介紹這些服務的功能。 […]

從裸機到雲端:OpenStack 介紹 2

Auto Draft

前一篇文章以比較非技術角度介紹了 OpenStack 這個專案。今天開始要以比較技術的角度來介紹 OpenStack。首先本篇會先來大致介紹 OpenStack 所組成的元件,後續幾篇將會是各個元件的深入介紹。 OpenStack 核心功能 OpenStack 是由非常多的服務構成的,每個服務會由一個元件所提供,而這個元件底下又可以切割成不同的 microservice。 其中有部分服務被 OpenStack 官方標記為核心功能,為上圖中粗體的專案,我們在這裡列出核心功能的元件名稱以及其提供的服務: Nova:運算服務 (Compute Service) Neutron:網路服務 (Networking) Keystone:身分服務 (Identity Service) Cinder:區塊儲存服務 (Block Storage) Glance:映像檔服務 (Image Service) Ironic:裸機部屬服務 (Baremetal Provisioning Service) Horizon:儀錶板 (Dashboard) Heat:編排服務 (Orchestration) Swift:物件儲存服務 (Object Storage) 以上官方列出的核心功能 根據筆者經驗,多數 OpenStack 部屬都會有這些服務,但是 Swift 和 Ironic 比較少見。 其他常見服務 另外根據筆者經驗有部分非核心功能在 OpenStack 部屬還蠻常見的,例如: Designate:DNS 服務 Octavia:負載平行服務 (Load […]

從裸機到雲端:OpenStack 介紹 1

Auto Draft

我們在前幾一篇文章敘述本次鐵人賽所會架出的雲端架構了,今天開始的文章將會介紹使用的 IaaS Layer: OpenStack,本次文章將會從 overview 開始,之後的文章將會針對一個個 OpenStack 元件做細部介紹。 Reference 本系列文章會大量利用到 OpenStack 自己本身的 Document 作為 reference 跟圖片來源。 想更了解 OpenStack 概念的可以去官方文件直接閱讀 OpenStack 是什麼? 要討論 OpenStack 是什麼我們可以從三個面向: 軟體 (Software) 社群 (Community) 群組 (Group) 軟體 OpenStack 基本上是一個能夠提供私有雲跟公有雲服務的軟體套件,其中包含了多種不同的應用狀況如一般企業、電信商、高效能運算等。 從軟體的角度看,OpenStack 是由多個微服務 (micro service) 組成,而使用者可以根據其應用情境去組合這些服務以達到自己的需求。這些服務基本上是透過 REST API 提供,另外也有提供不同程式語言的程式開發套件 (Software Development Kit) 來取用服務。 這些軟體可以透過官方提供的 tarball 進行安裝,另外在各大 Linux 發行版的套件管理工具中也都有包好的套件。 OpenStack 軟體地圖: 社群 在軟體之外,OpenStack 其實也是個龐大的社群,而這個社群的目標是: […]

從裸機到雲端:OpenStack Nova 介紹 2

從裸機到雲端:OpenStack Nova 介紹 2

上一篇文章我們介紹了 Nova 的功能與其使用方法,本篇文章將會繼續介紹 Nova 的架構 OpenStack Nova 系統架構 Nova 包含多個伺服器進程 (process),每個進程執行不同的功能。 面向用戶的界面是 REST API,而內部 Nova 的不同元件透過 RPC 來進行溝通運作。 API 服務器處理 REST 請求,這通常涉及資料庫讀/寫、或是 RPC 消息發送到其他 Nova 服務,並生對應的 REST 回應 (response)。 RPC message 傳遞是通過 oslo.messaging 完成的,它是一個 OpenStack 元件共用的 RPC message 抽象層,讓 OpenStack 元件可以不用在意底下 RPC 的實作。 大多數主要的 nova 元件都可以在多台伺服器上運行,並且有一個 manager 來監聽 RPC message,達到高可用性和附載平衡的目的。一個主要的例外是 nova-compute,它只在每一個其管理的 hypervisor 上運行單一個進程(使用 VMware 或 […]

從裸機到雲端:OpenStack Nova 介紹 1

從裸機到雲端:OpenStack Nova 介紹 2

昨天的文章給予了讀者 OpenStack 的架構一個大致的介紹,今天要來開始深入介紹各個元件。我們首先將由 OpenStack 提供的最核心功能:運算功能 (Compute Service),也就是開虛擬機器 (Virtual Machine) 功能的元件開始,也就是 Nova。 什麼是 Nova? Nova 是 OpenStack 其中一個專案,它負責提供一個方式來生成 (provision) 運算機器,目前主要同時支援虛擬機器和實體主機 (透過 Ironic)。Nova 作為一組 daemon 運行在現有 Linux 服務器之上,以提供該服務。在稍後的章節會介紹 Nova 各個 daemon 所負責的工作。 目前 Nova 的基本功能需要搭配以下的 OpenStack 服務才能使用: Keystone Glance Neutron Placement 在上一篇中沒有介紹的 Placement,這裡快速的簡介一下。 Placement 是從 Nova 中拆分出來的服務,主要功能是追蹤不同類別的可用資源和其使用量,例如:CPU, RAM 等等。 對使用者來說 你可以透過 Nova 所提供的工具或 API 來建立和管理運算資源 使用 Nova […]

MicroStack — 30 分鐘內建立 OpenStack 環境

Auto Draft

近幾年仍然有很多人認為 OpenStack 是個很難安裝的軟體,但是事實並不是這樣的。在 Kolla-Ansible, TripleO, OpenStack-Ansible 等計畫出現後,OpenStack 的安裝跟設定其實成為一件非常容易的事情。而這次就來要介紹一個將 OpenStack 安裝更為簡化的專案,MicroStack。 MicroStack 是甚麼? An OpenStack Environment in 2 commands MicroStack 是個讓你下兩個指令就能夠生成一個基本 OpenStack 環境的專案。能夠大大減輕 OpenStack 使用的入門門檻。 其擁有以下特點: 安裝快速 筆者自己實際測試過,在一個 4 core 16GB RAM 100GB SSD 的機器內,大概總共只需要花 30 分鐘就能夠建立一個 MicroStack 的安裝,安裝的速度非常快速。 Upstream MicroStack 安裝的 OpenStack 都是上游未經修改的 OpenStack 程式碼,不需要擔心有廠商自己加入的功能造成系統不穩。 完整 MicroStack 建立的環境包含了大部分主要的 OpenStack 元件,其中有: Keystone Nova Glance Neutron Cinder […]

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 會在做 […]