OpenStack 使用者適用的 Google Cloud Platform

無論您是考慮要遷移還是實作混合式部署作業,本文都可為熟悉 OpenStack 的使用者提供開始使用 Google Cloud Platform (GCP) 的重要概念。

總覽

本文會先對 OpenStack 與 GCP 上的 3 層網路應用程式架構進行比較,然後對 OpenStack 與 GCP 的功能進行比較,並提供快速參考表來說明 GCP 和 OpenStack 兩者的對應用語和概念。

本文不會對 OpenStack 與 GCP 提供的 SDK、API 或指令列工具進行比較。

如需 Google Cloud Platform 產品的完整清單,請參閱產品與服務一文。

雲端運算服務

雲端運算服務提供一系列基本服務,包括運算、儲存空間、網路、存取管理,通常還有資料庫服務。

OpenStack 的基本服務包括以下項目:

  • 運算:OpenStack Compute (Nova 與 Glance)
  • 儲存空間:OpenStack Block Storage (Cinder)
  • 網路:OpenStack Networking (Neutron)
  • 身分與存取權管理:OpenStack Identity Service (Keystone)

Cloud Platform 的基本服務包括以下項目:

Google Cloud Platform 的定價

GCP 上的大多數服務都按照即付即用的定價模式提供,其中包括以秒或以分鐘計費以及增加使用量後自動折扣。 與自訂機器類型等彈性資源分配結合之後,GCP 定價模式可協助提升應用程式效能,藉以符合成本效益。

如需快速估價工具與詳細資料,請參閱 Pricing Calculator 一文。

選用 Google Cloud Platform 的理由

過去 15 年來,Google 努力不懈地打造全球最快速、功能最強大,且最優質的雲端基礎架構。 Google 內部也使用這個基礎架構開發了多項高流量的全球性服務,包括 Gmail地圖YouTube搜尋。 GCP 也在您的服務中提供了這個基礎架構。

比較架構範例

本節對您在 OpenStack 與 GCP 建構的 3 層網路應用程式系統進行比較。

  • OpenStack 設定會產生「主動式備份設定」
  • GCP 設定會利用代管服務來產生「雙主動式設定」

標準的 3 層網路應用程式包含下列元件:

  • 負載平衡器
  • 網路伺服器
  • 應用程式伺服器
  • 資料庫伺服器

OpenStack:主動備份設定

圖 1 中顯示的 OpenStack 設定範例特性如下:

  • 您在兩個地區將資源部署為兩個用於備援的單獨失敗網域。
  • 網路會針對每個地區的所有層級使用單一子網路,所有伺服器都是虛擬機器 (VM) 執行個體。
  • 您可為四個伺服器角色定義安全性群組,並為適當的執行個體指派這些群組。
  • Cinder 磁碟區會以資料磁碟區的形式連接到資料庫伺服器。為了確保跨失敗網域的備援功能正常執行,系統會將主動地區的資料庫備份到物件儲存空間,並於必要時還原到備份地區的資料庫。(這個架構並不使用即時資料庫複製功能,因為地區之間的頻寬有限。)
  • 這個架構提供「主動備份設定」。將服務容錯移轉至其他地區時,您會將最近的備份還原到備份地區的資料庫伺服器。

三層網路應用程式

圖 1:OpenStack 上的 3 層網路應用程式系統

GCP:雙主動設定

圖 2 的 GCP 設定範例具有下列特性:

  • 您會在單一子網路中部署資源,這個子網路包含單一地區中的多個區域以用於備援。
  • 您會以 VM 執行個體的形式部署網路伺服器與應用程式伺服器。
  • 您定義防火牆規則時,會使用標記來指定封包目的地。
  • 您設定資料庫連線的存取權控管時,會以來源 IP 位址為基礎,做為 Cloud SQL 設定的一部分。Cloud SQL 是 GCP 的 MySQL 資料庫代管服務,提供在多區域之間複製資料的功能。排程資料備份與容錯移轉程序都會自動進行,您可從同一個地區的多個區域存取資料庫。在 VM 執行個體上執行的應用程式可以看到區域之間的容錯移轉。您可以從多個區域存取單一 Cloud SQL 執行個體。(Cloud SQL 有兩代:第一代 Cloud SQL 與第二代 Cloud SQL。這兩代有不同的特性,在複製與容錯移轉方面的預設行為也不同。)
  • Google Cloud Load Balancing 是一種 HTTP(S) 負載平衡服務,您可以透過這項服務,使用單一的全域 IP 位址 (VIP) 將用戶端存取權分配到多個地區與區域。
  • 這個架構可以跨多個區域提供「雙主動設定」,跨失敗網域提供備援服務。

三層網路應用程式 2

圖 2:GCP 上的 3 層網路應用程式系統

比較功能

本節對架構範例中使用的功能細節進行比較。

網路架構

本節對 OpenStack 與 GCP 網路在地區與區域中的運作方式進行比較,並對專案與用戶群、IP 位址與容錯移轉,以及防火牆規則進行討論。

地區與區域

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP 附註
地區 地區 在 OpenStack,地區可以跨越多個資料中心。在 GCP,地區對應至資料中心園區,園區中通常會有多棟獨立的建築物。
供應區域 區域 在 OpenStack,供應區域常用來識別一組具有通用屬性的伺服器。

在 GCP,區域對應於資料中心內的叢集。

在 OpenStack,「地區」的定義是由專用控制器節點代管的單一叢集。地區由「供應區域」組成。定義多個資源群組 (例如運算節點與儲存場地) 時,您會使用供應區域。

在 GCP,「地區」是獨立的地理區域,由「區域」組成。地區內位置的往返網路延遲時間有 95% 的機率會低於 5 ms。就像 OpenStack 供應區域一樣,區域也是地區內 GCP 資源的部署區域。您應將區域視為單一失敗網域。

GCP 跨所有地區提供專用的內部網路,因此同一地區中不同區域之間的頻寬與延遲時間相當於單一地區中的頻寬與延遲時間。您可以跨多個區域部署緊密結合的叢集應用程式,而不用擔心區域間的頻寬與延遲問題。

在這兩個平台中,跨多個區域或地區部署應用程式有助於預防發生意外失敗的情形。在 GCP,區域被視為獨立的失敗網域。相較之下,OpenStack 的地區 (非供應區域) 則被視為獨立的失敗網域,因為單一地區的供應區域會共用相同的控制器節點。如需 GCP 地區與區域的清單,請參閱 Cloud 據點一文。

專案與用戶群

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP 附註
用戶群 專案 GCP 的所有資源都必須屬於專案。使用者可以建立自己的新專案。

在 OpenStack,只有管理員可以建立新用戶群。

您必須設定 Google 帳戶,才能使用 GCP 服務。GCP 會按專案為您的服務使用情形分組。 您可以在同一個帳戶之下建立多個完全區隔的專案,而您的使用者則可在他們自己的帳戶之下建立他們自己的專案。單一專案中的資源可藉由多種方式 (例如透過內部網路進行通訊) 順利共同運作,實際情況要依地區和區域的規則而定。各專案之間彼此的資源都各自獨立;您只能透過外部網路連線互連這些資源。

這種設計可以讓您為公司內的不同部門或群組建立專案空間。進行測試時,這種設計也很實用:不再需要特定專案時,只要刪除專案,該專案建立的所有資源都會一併遭到刪除。

OpenStack 使用「用戶群」一詞來指為不同群組隔離資源的類似功能。在 OpenStack,只有系統管理員可以建立新用戶群。

網路設定

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP 附註
Neutron Cloud Virtual Network Cloud Virtual Network 是一種代管網路服務。在 GCP,您可在專案中定義各自獨立的多個網路。
虛擬私人網路
虛擬私人網路 一個 GCP 虛擬私人網路可以跨越透過 GCP 內部網路連接的所有地區。Neutron 虛擬私人網路則可跨越一個地區的所有供應區域。

在一般的 OpenStack Neutron 部署中,每個用戶群的虛擬網路都位於自己的私人網路空間中。如圖 1 所示,您不必使用多個子網路,但是如有需要也可設定多個子網路。圖 3 顯示了一個 OpenStack 虛擬網路,其中包含一個虛擬路由器和三個虛擬交換機。 有兩個虛擬交換機透過虛擬路由器連接到外部網路。AZ-1 與 AZ-2 則是供應區域。

虛擬網路

圖 3:OpenStack 網路設定範例

GCP 提供兩種類型的網路:「傳統」和「子網路」

傳統網路提供一個私人子網路,跨越全球所有地區,如圖 4 所示。

如圖 5 所示,子網路中的虛擬交換機對應至 OpenStack Neutron 虛擬路由器,而虛擬交換機之間則透過內部網路連接。所有子網路之間都會透過私人 IP 位址連接,因此您不需要在跨地區通訊時使用全域 IP 位址或網際網路。

您可以在 GCP 的專案中混合使用傳統網路與子網路。 每個新建立的專案都包含名為「預設」的預先定義網路,這個網路中又包含每個地區中名為「預設」的子網路。

傳統網路

圖 4:Google Cloud Platform 傳統網路設定範例

子網路

圖 5:Google Cloud Platform 子網路設定範例

IP 位址

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP
執行個體擁有私人內部 IP 位址。如有必要,可以指派全域 IP 位址 (浮動 IP 位址)。

執行個體擁有私人內部 IP 位址。此外,使用「gcloud」指令列工具建立執行個體時,系統會自動指派暫時 IP 位址。如有必要也可指派靜態 IP 位址。
對於不同地區或者不同虛擬路由器之下的執行個體,彼此間通訊時必須要有全域 IP 位址。 所有地區的子網路之間都可以透過私人 IP 位址相連,因此執行個體之間的通訊不需要使用全域 IP 位址或網際網路。

在 Neutron,私人網路中的 VM 執行個體會使用啟動時指派的私人 IP 位址,透過虛擬交換機與路由器通訊。根據預設,系統不會指派全域 IP 位址。

虛擬路由器會處理從 VM 執行個體存取外部網路的工作,讓執行個體可以共用為虛擬路由器指派的通用全域 IP 位址。 如要向外部網路公開執行個體,並允許外部使用者連線,您可將浮動 IP 位址指派給某一全域 IP 位址範圍內的執行個體。

由於虛擬網路位於單一地區中,不同地區的執行個體必須使用浮動 IP 位址來透過外部網路通訊。

單一網路可以包含多個虛擬路由器。連接到不同路由器的 VM 執行個體無法直接與私人 IP 位址通訊,但是可以使用浮動 IP 位址透過外部網路通訊。

GCP 的所有 VM 執行個體在啟動時都有內部 IP 位址與外部 IP 位址。如有必要,您可以卸離外部 IP 位址。

根據預設,外部 IP 位址是暫時的,這表示這些 IP 位址會與執行個體的生命週期相連結。如果您關閉執行個體,然後再啟動該執行個體,則可能會為該執行個體指派不同的外部 IP 位址。您也可以要求為執行個體附加一個永久 IP 位址,這又稱為「靜態 IP」。在您決定釋放靜態 IP 位址,並將靜態 IP 位址指派給 VM 執行個體之前,該 IP 位址都為您所有。如有需要,您可將靜態 IP 位址附加至執行個體,也可以從執行個體上卸離靜態 IP 位址。

如 3 層網路應用程式架構範例所示,在 OpenStack 進行容錯移轉時,由於您無法在不同的地區使用相同的全域 IP 位址,因此您必須使用其他機制 (例如動態 DNS) 來讓用戶端繼續使用同一個網址存取服務。

另一方面,您可以在 GCP 使用 Cloud Load Balancing 提供的單一、全域 IP 位址 (VIP),將用戶端存取權分配給多個地區與區域。這樣就可以在地區與區域間提供容錯移轉功能,而這對用戶端而言是公開透明的。

防火牆

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP 附註
透過安全性群組強制執行防火牆規則。 透過規則與標記強制執行防火牆規則。 OpenStack 安全性群組包含多個 ACL,您可依執行個體角色定義這些 ACL,並將 ACL 指派給執行個體。

每個地區都必須定義 OpenStack 安全性群組。

GCP 規則與標記可以定義一次,然後在所有地區使用。

在 OpenStack,一個安全性群組包含多個獨立於 VM 執行個體的存取控制清單 (ACL)。您可為 VM 執行個體指派安全性群組,藉以將 ACL 套用至執行個體。通常您會根據 VM 執行個體角色 (例如「網路伺服器」或「資料庫伺服器」) 定義安全性群組。

舉例來說,對於架構範例,您可為每個地區定義下列安全性群組:

安全性群組 來源 通訊協定
load-balancer 不限 HTTP/HTTPS
管理子網路 SSH
web-server load-balancer HTTPS
管理子網路 SSH
web-application web-server TCP 8080
管理子網路 SSH
database web-application MYSQL
管理子網路 SSH

您可為封包來源指定子網路範圍或安全性群組的名稱。在上表中,管理子網路是指系統管理員因維護目的登入至訪客 OS 的來源子網路範圍。

這個架構假設用戶端安全資料傳輸層 (SSL) 會在負載平衡器終止,並透過 HTTPS 與網路伺服器通訊。網路伺服器會使用 TCP 8080 與應用程式伺服器通訊。MySQL 則用於資料庫伺服器。

定義這些安全性群組之後,您可以將這些群組指派給每個執行個體,方式如下:

執行個體 安全性群組
負載平衡器 load-balancer
網路伺服器 web-server
應用程式伺服器 web-application
資料庫伺服器 database

透過「規則」與「標記」的組合,您可在 GCP 使用 Cloud Virtual Network 定義適用於所有地區的防火牆規則。標記是與 VM 執行個體相關的任意標籤,您可以為單一 VM 執行個體指派多個標記。「規則」是一個 ACL,允許封包在以下條件之下流動:

  • 來源:IP 範圍、子網路、標記
  • 目的地:標記

例如,您可以先定義一個規則,允許將目的地通訊埠為 TCP 80 的封包從任何 IP 位址傳送至「網路伺服器」標記。然後,您可將網路伺服器標記新增至任何 VM 執行個體,以允許 HTTP 連線至 VM 執行個體。 您可以管理標記以指定執行個體角色,並可管理規則來指定分別對應於角色的 ACL。

圖 6 顯示了新建專案中預設網路的一些預先定義的規則。例如,10.128.0.0/9 是一個子網路範圍,其中包含所有地區的基本子網路。每個專案中的這個子網路範圍可能都不同。從開始到結束,規則都允許下列網路連線:

  • 來自任何外部來源的網際網路控制訊息通訊協定 (ICMP) 封包。
  • 連線至預設網路的所有執行個體之間的任何封包。
  • 來自任何外部來源的遠端桌面通訊協定 (RDP) 連線。
  • 來自任何外部來源的安全殼層 (SSH) 連線。

預先定義的防火牆規則

圖 6:虛擬雲端網路中預設網路的預先定義防火牆規則

詳情請參閱使用網路與防火牆一文。

在 GCP 防火牆規則中,您可以使用標記指定封包目的地,並使用子網路範圍或標記指定封包來源。在本情境中,您會定義下列規則:

來源 目的地 通訊協定
130.211.0.0/22 web-server HTTP、HTTPS
web-server web-application TCP 8080
管理子網路 web-server, web-application SSH

在上表中,130.211.0.0/22 是負載平衡器與健康狀態檢查系統用來存取網路伺服器的子網路範圍。管理子網路是指系統管理員因維護目的登入至訪客 OS 的來源子網路範圍。web-serverweb-application 是分別為網路伺服器與應用程式伺服器指派的標記。您不必像您要使用安全性群組一樣指派規則,而是可以根據角色來為執行個體指派標記。

設定資料庫連線的存取權控管時,會以 Cloud SQL 設定中的一部分來源 IP 位址為基礎。

儲存空間

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP 附註
Cinder 磁碟區 永久磁碟 執行個體連接的永久儲存空間

有了 GCP 永久磁碟,便可在資料從執行個體移至永久磁碟儲存空間之前自動加密資料。

暫時磁碟 不適用 執行個體連接的暫時儲存空間
OpenStack Swift Cloud Storage 物件儲存服務
暫時磁碟與 Cinder 磁碟區

OpenStack 為執行個體連接的磁碟提供兩種選項:暫時磁碟與 Cinder 磁碟區。

暫時磁碟專為內含作業系統檔案的系統磁碟使用所設計,Cinder 磁碟區則專為儲存永久應用程式資料所設計。但是,由於即時遷移不適用於暫時磁碟,使用者也會經常將 Cinder 磁碟區當成系統磁碟來使用。

將暫時磁碟做為系統磁碟使用時,會將 OS 範本映像檔複製到運算節點的本機儲存空間,本機映像檔則會連接至執行個體。刪除執行個體時,也會刪除連接的映像檔。

Cinder 磁碟區提供位於外部儲存裝置的永久磁碟區域。在標準部署作業中,區塊裝置會使用 iSCSI 通訊協定連接至運算節點,然後以虛擬磁碟的形式連接至執行個體。 刪除執行個體時,連接的磁碟區會保留在外部裝置中,並且可由其他執行個體重複使用。

在執行個體上執行的應用程式軟體也可以存取 OpenStack Swift 提供的物件儲存空間。

暫時磁碟與 Cinder 磁碟區

圖 7:比較 OpenStack 中的暫時磁碟與 Cinder 磁碟區

永久磁碟

GCP 提供以永久磁碟形式連接至執行個體的永久儲存空間,這與 OpenStack 中的 Cinder 磁碟區類似。您可將永久磁碟當成系統磁碟使用,永久磁碟中包含作業系統檔案,並可儲存永久應用程式資料。資料會在從執行個體移至永久磁碟儲存空間之前自動加密。您可將單一永久磁碟擴充至最大 64 TB,但連接磁碟的總容量上限則受限於執行個體大小。詳情請參閱儲存空間選項一文。

如果需要高效能本機儲存空間,您也可以使用本機固態永久磁碟 (SSD)。每個本機 SSD 的大小為 375 GB,但每個執行個體最多可連接八個本機 SSD 裝置,總計有 3TB 的本機 SSD 儲存空間。請注意,即時遷移適用於連接本機 SSD 的執行個體。由於即時遷移期間會在執行個體之間複製本機 SSD 中的資料,儲存效能可能會暫時降低。

在執行個體上執行的應用程式軟體可以存取 Cloud Storage 提供的物件儲存空間,這是一種託管服務,可儲存及存取大量不同大小的二進位物件或 Blob。

VM 執行個體

OpenStack 和 GCP 兩者的對應用語和概念如下:

OpenStack GCP 附註
執行個體類型 機器類型 在 OpenStack,一般使用者無法建立自訂執行個體類型。

在 GCP,任何使用者都能建立自訂機器類型。
中繼資料服務 中繼資料伺服器 OpenStack 只提供執行個體的相關資訊。

GCP 也提供專案的相關資訊。

在 OpenStack 啟動新 VM 執行個體時,您可以選擇「執行個體類型」來指定執行個體大小,例如 vCPU 數目與記憶體數量。如果系統管理員為您指派了適當的存取權,您便可定義其他執行個體類型。一般使用者無法新增自訂執行個體類型。

在 GCP,執行個體大小會定義為「機器類型」。除了從預先定義的機器類型中選擇以外,使用者可以單獨變更 vCPU 數目與記憶體數量,藉以建立「自訂機器類型」。 詳情請參閱機器類型一文。

中繼資料

OpenStack 提供中繼資料服務以從執行個體「訪客作業系統」(訪客 OS) 擷取 VM 執行個體資訊,例如執行個體類型、安全性群組與指派的 IP 位址。您也能夠以鍵值格式新增自訂中繼資料。OpenStack 提供一種稱為「使用者資料」的中繼資料類型。啟動新執行個體時,您可以將可執行的文字檔指定為 user-data,讓在訪客 OS 中執行的 cloud-init 代理程式根據安裝應用程式套件等內容啟動設定工作。您會使用 http://169.254.169.254/latest/meta-data 底下的網址存取訪客 OS 的中繼資料。

GCP 提供中繼資料伺服器來從執行個體訪客 OS 擷取執行個體與專案的相關資訊。專案中的所有執行個體會共用專案中繼資料。您可為執行個體中繼資料與專案中繼資料新增鍵值格式的自訂中繼資料。GCP 提供名為 startup-scriptshutdown-script 的特殊中繼資料,這些中繼資料分別會在您啟動或關閉執行個體時執行。

與 OpenStack user-data 不同的是,startup-script 會在您每次重新啟動執行個體時執行。startup-script 與 shutdown-script 這兩個指令碼由預先安裝在 OS 範本映像檔中的 compute-image-packages 其中的代理程式處理。詳情請參閱儲存和擷取執行個體中繼資料一文。

您可以使用以下任一網址存取訪客 OS 的中繼資料:

  • http://metadata.google.internal/computeMetadata/v1/
  • http://metadata/computeMetadata/v1/
  • http://169.254.169.254/computeMetadata/v1/
訪客作業系統代理程式
OpenStack GCP 附註
cloud-init 設定工作代理程式套件 compute-image-packages 設定工作代理程式套件 OpenStack 代理程式只會處理初始啟動設定。

GCP 代理程式可處理初始啟動設定,動態設定會在執行個體執行時變更。

在 OpenStack,名為 cloud-init 的代理程式套件預先安裝在標準訪客 OS 映像檔中。該代理程式套件會在初次啟動時處理初始設定工作,例如擴充啟動檔案系統空間、儲存 SSH 公開金鑰,以及執行做為使用者資料提供的指令碼。

在 GCP,名為 compute-image-packages 的代理程式套件預先安裝在標準訪客 OS 映像檔中。該代理程式套件會在初次啟動時透過 startup-script 處理初始設定工作,也會在訪客 OS 執行時處理動態系統設定,例如為 HTTP 負載平衡新增 SSH 公開金鑰及變更網路設定。您可在啟動執行個體後,透過 Google Cloud Platform 主控台gcloud 指令列工具產生及新增 SSH 金鑰。

Google Cloud SDK 預先安裝在 GCP 的標準訪客 OS 映像檔中。您可以使用 SDK,透過根據預設取得特定權限的服務帳戶,從訪客 OS 存取 GCP 的服務。

存取權控管

GCP 中的存取權控管是由 Google Cloud IAM 為每個執行個體強制執行。例如,如果您希望在執行個體上執行的應用程式將資料儲存在 Google Cloud Storage 中,則可以為執行個體指派讀取/寫入權限。有了 Cloud IAM,您就不需要為執行個體上執行的應用程式手動準備密碼或憑證碼。詳情請參閱建立和啟用執行個體的服務帳戶一文。

OpenStack Keystone 可根據使用者帳戶對服務 API 進行存取權控管,但無法對應用程式 API 進行執行個體型存取權控管。如有必要,您可以實作應用程式 API 的自訂存取權控管。

IaaS 之外:平台式服務

本文對 OpenStack 與 Google Cloud Platform 提供的元件與服務進行比較,這些內容對 IaaS 都非常重要。但是為了在可用性、擴充性及營運效率上發揮 GCP 的最高效用,您應將代管服務結合為完整系統的建構區塊。

GCP 服務的完整範圍遠超出 IaaS 平台的傳統概念,其中包含下列項目及更多內容:

後續步驟

  • 進一步瞭解如何在 GCP 中整合 Google Cloud Dataproc 與儲存空間、運算及監控服務,藉以建立完整的資料處理平台。
  • 瞭解如何使用 Google Stackdriver 監控、記錄及診斷。
  • 進一步瞭解 Google BigQuery,這是適用於分析的全代管資料倉儲,並且提供無伺服器平台,讓您專注於使用 SQL 進行資料分析,即使是 PB 規模的資料集也沒有問題。
  • 進一步瞭解 Google Cloud Platform 產品與服務
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
適合 OpenStack 使用者的 Google Cloud Platform