上一篇介紹了 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 網路之間或是 […]
Cloud
從裸機到雲端: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 […]
從裸機到雲端:高層架構介紹
我們在前幾篇文章介紹了 NIST 對雲端的定義,從今天開始文章將會進入正題,教你一步一步從裸機蓋出雲端。首先我將會大致介紹一下筆者預計蓋出雲端的架構。 IaaS Layer 本次雲端的 IaaS Layer 將會使用 OpenStack 來提供服務,選擇的原因如下: 目前最常見的私有雲都是使用 OpenStack 發展成熟,使用者多,規模小到大皆有 Open Source Open Source Open Source Open source 最為重要所以列了三次。由於是 open source,軟體將容易取得並且免費使用 (Apache License)。讀者們能夠容易地跟著筆者腳步實作。 PaaS Layer PaaS Layer 將會選擇 Kubernetes 來提供服務,選擇的原因如下: 目前最常見的 container orcherstration 平台 各大公有雲都有提供 managed service 基本功能發展成熟,使用者多,規模從小到大都有 Open Source Open Source Open Source 相信很多讀者應該皆有 Kubernetes 的經驗,本次主題也會有教學如何將 Kubernetes 架設在 OpenStack 上並且使用 […]
從裸機到雲端:雲端定義 3
昨天我們介紹了雲端的三種服務模式,今天要接續昨天的雲端定義,來介紹雲端服務的三種部屬模式。 部屬模式 NIST 所定義的雲端的部屬模式主要以下這幾種 私有雲 (Private Cloud) 公有雲 (Public Cloud) 混合雲 (Hybrid Cloud) 社群雲 (Community Cloud) 有些人也會將混合雲稱之為多雲 (Multi Cloud) 在這裡的介紹同樣會引用部分中興大學樂齡學習網的翻譯 私有雲 雲基礎設施專為組織而運作,這可能是由組織本身或第三方管理者就地部署(On premise)或遠端部署(Off premise)。其中,私有雲除具備公用雲環境的彈性優點,還能因網路與使用者受到特殊限制,且資料與程序皆在組織內部管理,較不受網路頻寬、安全疑慮、與法規限制等影響,讓雲端供應者及使用者更能掌控雲端基礎架構並改善安全與彈性。 簡單來講,公司自己建置的雲端通常都會是私有雲,使用者通常為公司內部其他開方部門。 社群雲 雲基礎設施由眾多利益相仿的組織掌控及使用,社群成員可共同使用雲端資料及應用程式,他們擁有共同的關注問題,例如特定任務、安全要求、政策和合規性考量等。可能由組織或第三方管理,且可以就地部署與遠端部署。 此種模式目前應該比較少見。 公用雲 雲基礎設施提供給一般大眾或一個大產業集團,由銷售雲服務的組織所擁有,除彈性之外,又能具備成本效益。這讓公有雲使用者可以省下管理實體機器以及其機房、電力、散熱設施的成本以及技術。另外「公用」並不表示使用者資料可供任何人查看,雲供應者通常會對使用者實施使用存取控制機制。 公有雲也是大眾最為廣泛認知的雲端。目前國際上公有雲三大業者為 AWS, Google GCP, Microsoft Azure,另有其他比較小規模的如 Oracle Cloud, Tencent, Alibaba, IBM Cloud 等等業者。 混合雲 雲基礎設施是由兩個或兩個以上組成的雲(私有、社群或公用),此種雲維持單一實體,但是藉由標準或專有技術聯繫在一起,使資料和應用程序具可移植性。 此類這個模式中,使用者通常將非企業關鍵資訊外包,並在公用雲上處理,但同時掌控企業內部機敏服務及資料。 現在有些廠商為了避免將雞蛋放在同一個籃子裡,也開始規劃同時使用多個公有雲,避免因單一公有雲發生問題而造成服務中斷。 通常要架設混合雲會需要工程師對各個雲端有一定了解,並且混合雲比較難使用個公有雲獨有服務,因為需要程式在各個不同雲端都能正常運作。 以上為 NIST 定義的四種雲端部屬模式。 小結 雲端部屬模式應該同樣相較於必要條件來的易懂,相信很多讀者應該也有使用公有雲的經驗。 本次鐵人賽將會專注於私有雲的概念,帶領大家一步一步從一台實體的 server […]