上篇介紹了 Open vSwitch with Provider Networks 的架構及封包流向,今天這篇會來介紹 Open vSwitch with self-serivce networks。 Open vSwitch: Self-service Networks 架構 上圖為 Open vSwitch – Self-service networks 架構下的整個架構總覽,可以看到那些元件是跑在 controller node 上,哪些是在 compute node 上,哪些是在 network node 上。 這張圖畫出了在單一 untagged (flat) provider network 和單一 self-service networks 下其中所使用的的元件是怎麼串接的。在這個範例中 Instance 跟 DHCP agent 是在同一台的,但是在實際狀況下 DHCP agent 有可能是在其他 compute node 上。 Traffic Flow […]
OpenStack
從裸機到雲端:OpenStack Neutron 介紹 — Linux Bridge Provider Networks
上篇介紹了 Neutron 的架構,再接下來幾天會介紹 Neutron 使用 Linux Bridge 跟 OVS plug-in 時的架構以及流量是怎麼流的。首先第一篇筆者會先來介紹 Linux Bridge with Provider Network。 Linux bridge: Provider networks Provider network 架構示例使用 VLAN (802.1q) tagging 在實例 (instance) 和實體網路基礎設施之間提供 L2 連接。 它支援一個 non-tagged(扁平)網路和多達 4095 個 tagging (VLAN) 網路。 VLAN 網路的實際數量取決於物理網絡基礎設施。 架構 上圖為 Linux Bridge – Provider Networts 架構下的整個架構總覽,可以看到那些元件是跑在 controller node 上,哪些是在 compute node 上。 這張圖畫出了在單一 […]
從裸機到雲端: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
上一篇介紹了 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 中算是最核心的元件,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 元件 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
前一篇文章以比較非技術角度介紹了 OpenStack 這個專案。今天開始要以比較技術的角度來介紹 OpenStack。首先本篇會先來大致介紹 OpenStack 所組成的元件,後續幾篇將會是各個元件的深入介紹。
從裸機到雲端:OpenStack 介紹 1
我們在前幾一篇文章敘述本次鐵人賽所會架出的雲端架構了,今天開始的文章將會介紹使用的 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
上一篇文章我們介紹了 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 的架構一個大致的介紹,今天要來開始深入介紹各個元件。我們首先將由 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 […]