Quantcast
Channel: 不自量力 の Weithenn
Viewing all 590 articles
Browse latest View live

146 期 - 參數架構設定考驗功力 Docker 效能調校有眉角

$
0
0

網管人雜誌

本文刊載於 網管人雜誌第 146 期 - 2018 年 3 月 1 日出刊,NetAdmin 網管人雜誌為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。






文章目錄

前言
VMware Photon 容器平台
裸機 vs VM 虛擬主機 vs 容器
Weathervane 效能測試工具
效能測試環境
          VM 虛擬主機測試環境
          裸機測試環境
          效能測試(Docker 容器未最佳化)
          Docker 容器最佳化 – VM 虛擬主機
          Docker 容器最佳化 – 裸機
          效能測試(Docker 容器最佳化)
結語





前言

自從 2013 年 dotCloud這間原本提供 PaaS 服務的公司,將自家開發用於管理 PaaS 服務的容器技術「Docker」貢獻給開放源始碼,並將所有源始碼內容上傳至 GitHub之後,由於 Docker 容器管理技術能夠快速且有效解決,過往開發環境在建構 / 測試 / 佈署上的種種困擾及問題。因此,Docker 容器技術便迅速在業界開始廣為流傳,甚至演變成 Docker 就是容器技術的代名詞。

時至今日,Docker 容器管理技術能夠如此迅速發展,並非僅是能夠巧妙的利用「容器」(Container)技術來管理過往開發環境的困擾,主要原因在於 Docker 容器技術在推廣時期,同時也營造出非常良好的生態系統(如圖 1 所示),讓社群、開放源始碼、商業公司……等大家都能夠互惠且互助合作,所以 Docker 容器技術在魚幫水且水幫魚的情況下,短短幾年的時間便改變整個業界佈署應用程式及服務的型態。

圖 1、Docker 生態系統運作示意圖

此外,隨著新興的「微服務」(MicroService)佈署架構的盛行,Docker 容器技術也被許多管理人員推薦為佈署微服務架構的首選。因此,隨著 Docker 容器技術的盛行,企業及組織對於應用程式及服務的建構和佈署模式也隨之改變,管理人員開始思考如何將既有的應用程式及服務「容器化」(Containerization),以便在建構的微服務架構下搭配 Docker 容器技術佈署企業及組織的營運服務。

同時,當企業及組織的 IT 團隊,開始使用 Docker 容器技術管理應用程式及服務後,也能夠讓企業及組織當中的軟體開發人員團隊及 IT 維運管理人員之間的 DevOps 流程更加順暢(如圖 2 所示),並且也讓軟體團隊的「CI/CD 持續整合及發佈」(Continuous Integration / Continuous Delivery)自動化流程更加緊密,讓開發人員能夠更加專注在開發及維護程式碼的品質上,進而打造出提升企業競爭力的產品和服務。

圖 2、CI/CD 持續整合及發佈流程示意圖





VMware Photon 容器平台

有鑑於 Docker 容器技術日漸風行,VMware 官方也在 2015 年 4 月時,推出 Photon OSProject Lightwave這 2 項開放原始碼專案,並且也上傳到知名的開放原始碼專案平台 GitHub 上,讓所有對於 VMware Photon 容器平台感興趣的管理人員能夠方便下載使用,同時在 2016 年 10 月 VMworld 歐洲大會上也正式發佈 VMware Photon Platform,希望能夠幫助企業及組織輕鬆打造出「雲端原生應用程式」(Cloud Native Applications)的運作環境(如圖 3 所示)。

圖 3、VMware Photon Platform 容器平台運作架構示意圖

簡單來說,在 VMware Photon Platform 容器平台解決方案中,Photon OS 負責擔任輕量級的容器作業系統(儲存空間僅佔用約 300MB),雖然 Photon OS 也是源至於 Linux 作業系統,但是已經移除不必要的 Linux Kernel 程式碼,以及與 vSphere Hypervisor 之間重複的核心快取機制,因此在 VMware vSphere 虛擬化基礎架構中,運作 Photon OS 容器平台將能夠更加充分發揮 Docker 容器的運作效能。此外,Photon OS 容器平台在佈署方面不但能夠與 K8S 容器調度平台協同運作,就連管理人員對容器技術最為在意的安全性方面,甚至能夠直接與 VMware NSX 網路虛擬化技術的「微分段」(Micro-Segmentation)機制協同運作,輕鬆為 Docker 容器加強整體安全性(如圖 4 所示)。

圖 4、Photon Platform 及 NSX 協同運作有效提升容器安全性





裸機 vs VM 虛擬主機 vs 容器

過去,企業及組織佈署營運服務的方式,通常是採用「實體伺服器」直接運作應用程式或服務,或者是以實體伺服器為基礎建立「虛擬化基礎架構」之後,在虛擬化基礎架構之上的 VM 虛擬主機中運作應用程式或服務。

目前,由於 Docker 容器技術輕量化的應用方式並搭配新興的微服務架構,因此越來越多企業及組織在佈署營運服務時,開始將 Docker 容器技術的佈署方式加入至營運服務的環節當中。下列,便是目前企業及組織佈署營運服務時主要的 4 種應用情境(如圖 5 所示):

  • 裸機:直接在 x86 實體伺服器上,安裝應用程式或服務所需的作業系統之後,直接運作相關的應用程式及服務。
  • VM 虛擬主機:以 x86 實體伺服器為基礎在其上建構虛擬化基礎架構(例如,VMware vSphere),為 VM 虛擬主機安裝好 Guest OS 客體作業系統之後,運作所需的應用程式或服務。
  • 裸機 + Docker 容器:在 x86 實體伺服器上安裝作業系統並組態設定 Docker 容器運作環境後,透過 Docker 容器技術運作所需的應用程式和服務。
  • VM 虛擬主機 + Docker 容器:除了採用虛擬化基礎架構建構最佳化的 VM 虛擬主機之外,待 VM 虛擬主機安裝好 Guest OS 客體作業系統之後,組態設定 Docker 容器運作環境後運作所需的應用程式和服務。

圖 5、目前企業及組織佈署營運服務時主要的 4 種應用情境





Weathervane 效能測試工具

那麼企業及組織在佈署營運服務時,究竟是佈署在「裸機、VM 虛擬主機、Docker 容器」三者當中何者的運作效能最佳? 因此,本文將說明及實作在裸機以及 VMware vSphere 6.5虛擬化平台上,測試裸機原生運作應用程式及 VM 虛擬主機運作應用程式,和 VM 虛擬主機搭配 Docker 容器環境運作應用程式這三者之間的效能差異。

首先,在效能測試工具方面採用開放源始碼 Weathervane 1.0.15 效能測試工具,它能夠模擬典型的拍賣網站工作負載,並且這些工作負載可以佈署在作業系統上或 Docker 容器環境中,在 Weathervane 效能測試項目中包括可擴充的多層 Web 應用程式(如圖 6 所示),主要由下列服務項目所組成:

  • Java Application Server:負責執行拍賣網站工作負載中核心應用程式服務。
  • 前端 Web 服務:負責提供 Web 網頁服務以及網頁請求負載平衡,同時必須支援 HTTP-Level 快取機制以便將前端網頁請求,正確的遞送到後端服務當中。
  • 應用程式支援服務:負責為不同服務之間提供訊息及協調服務。
  • 資料服務:負責提供關聯式資料庫以及 NoSQL 非關聯式資料庫服務。

圖 6、Weathervane 效能測試工具可擴充多層應用程式架構示意圖





效能測試環境

在本文效能測試環境中,採用 4 台實體伺服器進行整個效能測試作業(如圖 7 所示),其中 2 台擔任 Driver Servers 角色,負責運作相關工作負載的 VM 虛擬主機,另外 2 台則是擔任 Test Server 角色,這 2 台當中有 1 台是安裝 VMware vSphere 6.5 虛擬化平台,然後在 VM 虛擬主機中安裝 CentOS 7.3 客體作業系統以提供 Docker 容器環境,另 1 台則是直接裸機安裝 CentOS 7.3 作業系統以提供 Docker 容器環境。

圖 7、Weathervane 效能測試環境示意圖



VM 虛擬主機測試環境

在 Test Server 角色中,其中 1 台 x86 伺服器為安裝 VMware vSphere 6.5 虛擬化平台,第 1 項測試項目直接以 VM 虛擬主機安裝 CentOS 7.3 作業系統後,以「VM 虛擬主機」為單位執行不同的 Weathervane 角色進行效能測試(如圖 8 所示),相關項目如下:

  • vSphere 6.5 電力選項:調整為 High Performance
  • CentOS 7.3 客體作業系統:安裝 VMware Tools 為 open-vm-tools 10.0.5-4.el7_3
  • 硬體資源:總共建立 13 台 VM 虛擬主機,共使用 32 vCPU150GB vRAM


在第 2 項測試項目中,vSphere 6.5 及 VM 虛擬主機採用的硬體配置同上,在每台 VM 虛擬主機上僅運作「1 個容器」,也就是以「容器」為單位執行不同的 Weathervane 角色進行效能測試。每台 VM 虛擬主機,安裝 CentOS 7.3客體作業系統後安裝 Docker 容器運作環境(Docker 版本 17.05.0-ce),在容器虛擬網路的部分則是採用預設跨主機的「Overlay Driver」

圖 8、VM 虛擬主機和 VM 虛擬主機搭配 Docker 容器的效能測試角色



裸機測試環境

在 Test Server 角色中,另 1 台 x86 伺服器為直接安裝 CentOS 7.3 作業系統,然後安裝 Docker 容器運作環境(Docker 版本 17.10.0-ce),在容器虛擬網路的部分則是採用預設跨主機的「Overlay Driver」,以「裸機」的方式進行 Weathervane 效能測試作業。

圖 9、效能測試環境採用的 Docker 容器技術版本

值得注意的是,在 Weathervane 的 OS Performance 效能選項中,採用「Latency-Performance Profile」選項為根據 Weathervane 最佳建議作法,並且我們在裸機 Docker 運作環境中,運作 13 個 Docker 容器並使用 32 vCPU 及 150 GB vRAM 的硬體資源(如圖 10 所示)。

由於每個 Docker 容器使用的硬體資源不同,因此在執行「docker run」指令運作 Docker 容器時,將會搭配「--cpus --memory」參數選項,定義每個 Docker 容器所能使用的硬體資源。

圖 10、裸機測試環境中 Docker 容器的效能測試角色及硬體資源配置示意



效能測試(Docker 容器未最佳化)

在目前「容器」(Container)的應用情境中,共有 3 種主流應用情境分別是直接將 x86 硬體伺服器使用的「裸機」(Bare-Metal)佈署方式,也就是直接將實體伺服器安裝容器平台之後,直接在其上運作數量眾多的容器以便提供應用程式及服務。

第 2 種及第 3 種主流應用情境,則是企業或組織已經建構好整個虛擬化基礎架構,所以透過以 VM 虛擬主機隔離方式提供應用程式及服務,或者是索性在 VM 虛擬主機當中提供容器平台後運作多個容器,以便提供營運需要的應用程式及服務。

圖 11、裸機 vs VM 虛擬主機 vs 容器佈署模式示意圖

或許,讀者在許多網路文章中會看到「容器」(Container)所訴求的輕量級,而認為將應用程式或服務運作在 VM 虛擬主機可能會顯得效能不彰。因此,在本文當中將採用開放源始碼效能測試工具 Weathervane,針對剛才上述 3 種主流佈署應用程式或服務的情境進行效能測試,以便幫助讀者了解應用程式及服務在不同應用情境中的效能表現:

  • VM 虛擬主機:採用 vSphere 6.5 虛擬化平台中的 VM 虛擬主機,直接運作 Weathervane 開放源始碼效能測試工具,並未在 VM 虛擬主機當中運作 Docker 容器。在測試結果中,直接以 VM 虛擬主機運作 Weathervane 效能測試工作負載為最佳表現,最多同時支援 40,062個使用者,相當於每秒回應 25,000個 HTTP 服務請求。
  • VM 虛擬主機 + Docker 容器:採用 vSphere 6.5 虛擬化平台中的 VM 虛擬主機,並且在 VM 虛擬主機當中運作 Docker 容器環境後,運作 Weathervane 開放源始碼效能測試工具。採用 VM 虛擬主機搭配 Docker 容器環境後,效能測試工作負載最多同時支援 35,969個使用者,大約是直接採用 VM 虛擬主機的 90%的效能表現。
  • 裸機運作 Docker 容器:在裸機運作環境中提供 Docker 容器環境後,運作 Weathervane 開放源始碼效能測試工具,效能測試工作負載最多同時支援 30,657個使用者,大約是直接採用 VM 虛擬主機的 77%的效能表現。

圖 12、效能測試– Docker 容器未最佳化



Docker 容器最佳化 – VM 虛擬主機

上述效能測試結果,可能會讓許多管理人員感到困惑,因為對於 Docker 容器技術的印象便是輕量級並且能夠充份使用硬體資源,但是測試結果確是由 VM 虛擬主機直接運作工作負載,反而得到最佳運作效能。

事實上,影響 Docker 容器運作效能的因素很多,例如,執行 docker run 及 docker create 建立容器時,應該如何配置 Docker 容器能夠使用的 CPU 及記憶體硬體資源,此外 Docker 容器採用的虛擬網路驅動程式類型,以及 Docker Engine 使用的儲存驅動程式類型,也都會影響 Docker 容器整體的效能表現。

首先,在本文效能測試環境中由於統一採用儲存設備提供儲存資源,所以在 Docker 容器中採用的儲存驅動程式類型,並未影響到效能測試的結果。但是,在「網路」類型方面則是影響效能表現的原因之一,在預設情況下 Docker 容器會採用「Bridge」虛擬網路類型,好處是在「同 1 台」Docker 主機中的容器彼此溝通非常快速,同時外部的存取需求也能透過 TCP/UDP 對應的方式存取容器服務。

但是,在本文效能測試環境中,由於每台 VM 虛擬主機僅會運作 1 個容器,因此容器與容器之間的通訊必須「跨 Docker 主機」,最直接的影響是除了「網路延遲時間拉長」之外,也會增加 Docker 主機的「CPU 工作負載」,所以便會影響 Docker 容器整體的效能表現。

最簡單的效能改善方式,便是讓 Docker 容器採用不同類型的虛擬網路驅動程式類型,將原本預設採用的 Bridge虛擬網路類型,變更為直接使用 Docker 主機網路堆疊的「host」虛擬網路類型,雖然會有容器使用連接埠對應的限制,但是在本文測試環境中 1 台 VM 虛擬主機只運作 1 個容器,因此並不會受到此限制所影響。
在執行 docker run 指令運作 Docker 容器時,請搭配「--network=host」參數指定 Docker 容器採用 Docker 主機網路堆疊。
調整 Docker 容器虛擬網路類型之後,再次進行效能測試可以發現先前採用 Bridge虛擬網路類型時,最多僅能同時支援 35,969個使用者,將 Docker 容器更改為 host虛擬網路類型後,最高同時支援使用者數量提升至 39,109

圖 13、Docker 容器採用不同虛擬網路類型對於整體效能表現的影響



Docker 容器最佳化 – 裸機

事實上,在先前的效能測試結果中,許多讀者應該會感到困惑的部分在於就一般認知來說,採用裸機的方式運作 Docker 容器和工作負載的效能測試應該最佳才對,但是在效能測試結果中卻反而是表現最差的運作環境。

主要原因在於,未經過效能調校的 Docker 容器僅會運作在「單顆」CPU 處理器上,所以整體運作效能會受到限制,然而運作在 VMware vSphere 6.5 虛擬化平台上的 Docker 容器,因為受惠於 vSphere 6.5 的最佳化排程演算法而能充分使用實體伺服器的「多顆」CPU 處理器運算效能。

圖 14、裸機運作環境中,未經過效能調校之前 Docker 容器無法充分利用運算資源

值得注意的是,與剛才在 VMware vSphere 6.5 虛擬化平台上運作的 Docker 容器不同,雖然在裸機運作環境中的 Docker 容器採用預設的 Bridge 虛擬網路類型,但是因為所有的 Docker 容器都運作在「同 1 台」裸機伺服器當中,所以並沒有受到 Bridge 虛擬網路類型的影響,至於儲存資源也因為直接採用硬體儲存設備而未受到任何影響。

所以,在裸機運作環境中 Docker 容器整體的效能表現,主要受到 CPU 處理器運作資源是否能夠妥善利用所影響。首先,我們可以針對每個 Docker 容器在運作時,配置「CPU 親和性」(CPU Affinity)並且搭配使用 NUMA Node 的「記憶體親和性」(Memory Affinity)機制,此舉可以讓裸機運作環境中 Docker 容器的效能表現,由先前最多僅能同時支援 30,625個使用者,提升至最高同時支援 35,516個使用者,舉例來說,在透過 Docker 容器技術啟動 PostgreSQL 時請執行下列指令 (建立及運作 Docker 容器時,請搭配 --cpuset-cpus--cpuset-mems參數使用):
docker run -d -v /mnt/dbLogs/postgresql:/mnt/dbLogs/postgresql -v /mnt/dbData/postgresql:/mnt/dbData/postgresql -p 5432 --cpus=4.00 --cpuset-cpus=12,32,14,34 --cpuset-mems=0 --memory=16G --name IsoW1I1Db1D localRegistry:5000/weathervane-postgresql:1.0.15

倘若,我們在配置 CPU 親和性機制後,再搭配 Docker 容器配置相同數量的邏輯 CPU 處理器,達到 CPU 執行緒數量相同的最佳化配置時,可以讓裸機運作環境中 Docker 容器的效能表現,再提升至最高同時支援 36,952個使用者,舉例來說,在透過 Docker 容器技術啟動 PostgreSQL 時請執行下列指令 (建立及運作 Docker 容器時,使用的 --cpuset-cpus參數必須搭配邏輯 CPU 處理器數量):
docker run -d -v /mnt/dbLogs/postgresql:/mnt/dbLogs/postgresql -v /mnt/dbData/postgresql:/mnt/dbData/postgresql -p 5432 --cpus=4.00 --cpuset-cpus=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38 --cpuset-mems=0 --memory=16G --name IsoW1I1Db1D localRegistry:5000/weathervane-postgresql:1.0.15
圖 15、裸機運作環境中,經過效能調校後 Docker 容器整體效能提升許多



效能測試(Docker 容器最佳化)

從上述 3 種主流應用情境運作 Weathervane 開放源始碼效能測試工具的結果可知,在 VMware vSphere 6.5 虛擬化平台中,採用 VM 虛擬主機直接運作 Weathervane 開放源始碼效能測試工具,或者是採用 VM 虛擬主機加上 Docker 容器環境後,再運作 Weathervane 開放源始碼效能測試工具後,所測試出來的效能結果二者幾乎相同。

此外,還可以看到在 VMware vSphere 6.5 虛擬化平台中,不管直接採用 VM 虛擬主機或是 VM 虛擬主機加 Docker 容器環境,相較於裸機運作 Docker 容器的效能表現都要提升約 5%的效能數據,主要便是受益於 vSphere 6.5 內建的工作負載調度演算法所帶來的好處。

圖 16、3 種主流應用情境運作 Weathervane 開放源始碼效能測試工具的結果





結語

透過本文的說明及實作相信讀者已經了解,Docker 容器技術雖然以輕量級且容易建構及佈署等特色,迅速擄獲廣大開發人員及管理人員的目光,然而將過實際工作負載的效能測試後證實,倘若未經過正確的效能調校作業,那麼實際表現出來的運作效能並不理想,值得所有管理人員在導入 Docker 容器技術時深思。

北非花園 - 摩洛哥之旅 - Day10 - 艾本哈杜 / 提吉恩提洛卡山谷

$
0
0

LE Berbere Palace Hotel

因為,每天的行程都非常豐富,所以到達飯店的時間通常已經晚了無法好好欣賞飯店的美,只好趁早餐前或早餐後仍有一點時間好好體驗一下。這裡就是昨晚住宿的  LE Berbere Palace Hotel 飯店,一早起來天氣非常好帶動整個好心情,加上飯店的美景,讚啦 👍。



昨天有說過,因為 歐札札特 (Ouarzazate) 有許多好萊塢經典電影在此拍攝,許多電影中的的場景及道具隨著影片拍攝結束後,就會擺置在飯店當中。




此次我們來時,很巧的剛好碰上拉力賽事,所以在路上都會看到這些拉力賽車。剛好,飯店門口也停了一台拉力賽車,當然就成了大家相機的焦點了。




離開歐札札特

在離開摩洛哥好萊塢之稱的 歐札札特 (Ouarzazate) 之前,導遊及領隊也帶我們到另一處好萊塢經典電影的拍攝場景朝聖一下。





艾本哈杜

艾本哈杜 (Aït Benhaddou),在 1987 年入選世界文化遺產,艾本哈杜是由摩洛哥原居民柏柏爾人建成的古城村落,也是摩洛哥當中最具特色且保存完成的 「Kasbah」(舊城堡、堡壘的意思),這裡最知名的,應該就是由 羅素·克洛 主演的 神鬼戰士 (Gladiator) 在此取景。

在進入艾本哈杜築壘村之前,導遊及領隊同樣帶我們到制高點,以方便大家拍攝艾本哈杜築壘村的全景。



終於到達艾本哈杜築壘村,大家開始慢步前往艾本哈杜築壘村的最高點。



首先,要進入艾本哈杜築壘村必須要渡過小溪才行。在這裡,大家手牽手一步踩穩後才走下一步,所有的旅遊同伴們都順利渡過小溪,準備登頂艾本哈杜築壘村 💪。




在登頂艾本哈杜築壘村的途中,因為這裡已經變成觀光勝地所以當然會有許多小店及小販,其中吸引我目光的就是這個「柏柏語拼音字板」(就像我們的ㄅㄆㄇㄈ一樣)。




好不容易擺脫一些小店/小販的吸引後,我們真的要準備開始攻頂了。沒錯,就是下圖中的最高點。




當然,在登頂艾本哈杜築壘村的延路還是有小店及小販不斷吸引著大家的目光,所幸導遊及領隊非常有經驗,知道大家很容易在此處走走停停,所以在這個景點安排充足的時間,讓大家能夠登頂又能夠快速逛逛小店。




在登頂艾本哈杜築壘村半路中,巧遇開店的帥哥咖啡店老板。稍後,在下山的途中就來喝杯咖啡再走吧 😘。


不知不覺當中,我們已經到了艾本哈杜築壘村的半山腰了,此時雖然還沒到達最佳制高點但也能順便拍攝一下,並且讓自己喘息一下 (想休息就說,哪來那麼多廢話 XD)。





在這個制高點,已經可以看到山下也有遊客陸續準備登頂艾本哈杜築壘村,當然也必須先渡過小溪。



登頂艾本哈杜築壘村,成功!! 廢話不用多說,在這麼棒的制高點,隨便拍一定都漂亮的 (還真敢說 😁)。通常,在這種制高點拍完照之後,我會盡量讓自己靜下心來用眼睛好好的記下這美好一刻,因為有些體會是無法事後再用照片或影片還原的。





下山時,偶然看到路邊小販採用非常先進的設備「太陽能板收音機」,這真的是非常適合這裡使用的產品啊。




下山時,還有一些時間,當然就是回到剛才登頂過程中巧遇到的帥哥老板咖啡店中喝杯咖啡再走了 (在艾本哈杜築壘村這裡,只有二間咖啡店隨君挑選了)。





摩式香料串燒

今日午餐是摩洛哥式的香料串燒,嫌少嗎? 在導遊及領隊的幫助下,像我這種「美食家 (Foodie)」(吃貨等級) 的還可以在要求多來幾串香料串燒,吃到飽吃到撐為止 😝。




用過午餐後,我們要開始準備翻越大亞特拉斯山脈,延路還是陸續看到拉力賽車,搭配著大亞特拉斯山脈的美景,雖然有些許突兀但也不會有太大的違合感。





提吉恩提洛卡山谷

在翻越大亞特拉斯山的中途,我們來到了 提吉恩提洛卡山谷 (Tizi n'Tichka) 暫時休息一下,順便逛逛這裡的小店。




翻越大亞特拉斯山之後,在前往馬拉喀什之前我們在個小景點休息一下 (導遊及領隊真的非常貼心,讓我們不用在遊覽車上坐那麼久,每隔一小段時間就會讓大家放風一下 XD)。當然,只要休息店有賣咖啡我一定不會錯過的,美麗的山景搭配咖啡,人生幾何 ~~




在享受咖啡之餘,看著遠處有當地人騎著驢子,還真能感受到鄉間原野的生活步調。





馬拉喀什

傍晚我們抵達摩洛哥四大皇城之一的 馬拉喀什 (Marrakesh),在摩洛哥原住民的柏柏爾語當中,馬拉喀什的意思是「上帝的故鄉」。剛好,我們今晚住宿的飯店附近有個大型商場,我到異國時最喜歡的就是逛超市,剛好有熟悉的家樂福怎麼可能錯過呢?



這些草莓就是在家樂福買的,多少錢呢? 27.30 DH (摩洛哥幣 27.3 迪拉姆,大約新台幣 82 元)。




北非花園 - 摩洛哥之旅




旅程

旅行」對我來說,是個能夠讓我的眼界開闊、心境轉換、釋放負能量、補充正能量……等。而我的旅行習慣是跟團,因為我喜歡有人在陌生的國度幫我打點好旅行時的 吃 / 住 / 行,而我只需要盡情放鬆好好享受這個難得的假期,並且聽著導遊/領隊說明這個國家的人文、歷史、地理、風情……等即可。其實,不管你是跟團或者自助行甚至不用出國也行,只要找到專屬於你自己能夠放鬆再出發方式就好,對吧!! 😁

此次的行程,我們選擇參加晴天旅遊 - 皇城、古都、撒哈拉-神奇迷幻摩洛哥全覽之旅行程。整趟行程下來,很幸運能夠由認真負責晴天玩家領隊 Michael以及熱情導遊 Fedi-雅馨,讓整個 15 天的北非花園摩洛哥之旅留下難忘的回憶 (領隊/導遊,對於當次旅遊的品質影響真的非常大的)。下列為此次 15 天北非花園摩洛哥之旅的旅程地圖:

北非花園 - 摩洛哥之旅 - Day11 - 馬拉喀什

$
0
0

馬裘黑花園

今天的行程,我們將一整天在 馬拉喀什 (Marrakesh)進行深度旅遊。首先,我們參觀的是 馬裘黑花園 (Majorelle Garden),這座花園的由來是法籍畫家 雅克.馬裘黑 (Jacques Majorelle),來馬拉喀什時便在這裡興建私人花園別墅,並且種滿各式各樣的仙人掌和熱帶植物。



這座花園的特色之一,就是相關建築都採用藍色的色調。




除了,法籍畫家 雅克.馬裘黑 (Jacques Majorelle) 鐘情於馬拉喀什之外,法國時裝設計師 聖羅蘭 (Yves Saint Laurent),在 1980 年時買下馬裘黑花園,之後這個花園便成為法國遊客來馬拉喀什必去朝聖景點。下列,是聖羅蘭在每年都會畫下的名信片,可以找找看是否有你的生日年在裡面。




今天的天氣依然美好,在陽光的照射下搭配馬裘黑花園的藍色色調建築,雖然參觀遊客很多但也透出一股不同的寧靜氣息。





特色民宿料理

今天的午餐用餐地點非常特別,剛進來時還以為是要提早到飯店 Check-In 😁。




今天的午餐是花園式午餐,前菜是各式各樣的沙拉,主菜則是摩式香料串烤,最利害的就是飯後甜點。第一次享用這樣的花園式午餐,為摩洛哥之行再添加另一個難忘的回憶。






薩丁王朝墓園

用過令人難忘的花園式午餐後,我們來到了 薩丁王朝墓園 (Saadian Tombs)。同樣的,在摩洛哥都可以隨時看到 鸛鳥 (Ciconiidae) 築巢及令人印象深刻的叫聲。




在進入 薩丁王朝墓園 (Saadian Tombs) 之前,先經過一個小市集,覺得街景的畫面很有意思就拍下了。



進入 薩丁王朝墓園 (Saadian Tombs) 之後,便可以開始感覺到強烈的阿拉伯式建築工藝 👳。




剛好在拍照時,阿訇 (波斯語 آخوند‎) 正在宣禮塔通知穆斯林禮拜的時間到了。所以,身處這樣的建築及阿訇的聲音,是不是特別有感覺呢?


這裡是 薩丁王朝墓園 (Saadian Tombs) 主殿,也是薩丁王朝近 200 位歷代國王及眷屬的墓室,所以一進到薩丁王朝墓園後便要趕緊排隊,即便排到後也無法觀看太久當然也是無法進入的。







巴迪皇宮

接著,我們參觀 巴迪皇宮 (Badi Palace)



進入巴迪皇宮後,心中只有個疑問這真的是皇宮嗎? 原來,是因為在 17 世紀末時要遷都至 梅克尼斯 (Meknes),所以這裡只要可以當建材的部份都直接拆走搬移。因此,現在只能在這個廣場遙想當年皇宮的盛況了 😂。






在皇宮內當然會有「地下監牢」,當然一邊參觀地下監牢的同時,只能慶幸我們生活在自由的年代及國度,否則實在很難以想像被打入這種地下監牢該如何生活/生存 (回去後,還不更努力工作?)




在摩洛哥行程中,發現這裡的「」真的非常幸福,因為在伊斯蘭的世界中貓咪是一種聖潔的動物,這個由來是先知穆罕默德非常愛貓,據說有天他準備要出門時,他的愛貓睡在他的祈禱長袍袖子之上,但是他不忍心吵醒他的愛貓睡覺,於是就把祈禱長袍袖子割斷,穿著少一邊袖子的長袍出門。所以,在摩洛哥很常看到貓,但卻很少看到狗。


在離開巴迪皇宮之前,我們來到巴迪皇宮的制高點看看馬拉喀什的市區及巴迪皇宮。







巴西亞皇宮

嚴格來說,這並不是皇宮而是豪宅的 巴西亞皇宮 (Bahia Palace),因為這間是當時蘇丹王的大臣 Si Moussa所居住的官邸。但這裡的建築工藝,反而讓我覺得這裡才是皇宮吧?








德吉瑪廣場

傍晚我們來到今天馬拉喀什的重頭戲 德吉瑪廣場 (Jemaa el-Fnaa),這裡又稱為「不眠廣場」,雖然人聲頂沸然而只要人多的地方而我們又是遊客,在探索新奇之餘還是要小心一點比較好 😱。





在德吉瑪廣場旁,就是庫圖比亞宣禮塔


老實說,我並沒有在德吉瑪廣場停留太久,在導遊/領隊帶我們繞一圈德吉瑪廣場之後,由於裡面的晚餐 (羊頭、蝸牛......等) 這些不並是我個人喜歡的食物,所以當導遊/領隊讓大家可以自由活動時,我們就自行走路回飯店了 (因為距離才 2.2 公里),當然也可以坐坐馬車體驗一下,但我選擇用走路的方式來體驗馬拉喀什的街景。



Radisson Blu Hotel

回到晚我們住宿的 Radisson Blu Hotel 飯店後,導遊先前有分享她的經驗,喜歡吃冰的人可以試試飯店附近的這間冰品店,身為美食家 (吃貨) 的我當然一定要嘗嘗看了 (難忘,在義大利時每天吃冰的感覺啊)。





北非花園 - 摩洛哥之旅




旅程

旅行」對我來說,是個能夠讓我的眼界開闊、心境轉換、釋放負能量、補充正能量……等。而我的旅行習慣是跟團,因為我喜歡有人在陌生的國度幫我打點好旅行時的 吃 / 住 / 行,而我只需要盡情放鬆好好享受這個難得的假期,並且聽著導遊/領隊說明這個國家的人文、歷史、地理、風情……等即可。其實,不管你是跟團或者自助行甚至不用出國也行,只要找到專屬於你自己能夠放鬆再出發方式就好,對吧!! 😁

此次的行程,我們選擇參加晴天旅遊 - 皇城、古都、撒哈拉-神奇迷幻摩洛哥全覽之旅行程。整趟行程下來,很幸運能夠由認真負責晴天玩家領隊 Michael以及熱情導遊 Fedi-雅馨,讓整個 15 天的北非花園摩洛哥之旅留下難忘的回憶 (領隊/導遊,對於當次旅遊的品質影響真的非常大的)。下列為此次 15 天北非花園摩洛哥之旅的旅程地圖:

北非花園 - 摩洛哥之旅 - Day12 - 艾索維拉

$
0
0

離開馬拉喀什

一早用過早餐後,我們將離開馬拉喀什前往  艾索維拉 (Essaouira)。同樣的貼心舉動,導遊及領隊在出發一陣子之後讓我們到休息站放風一下,此時當然要配上「咖啡、薄荷茶、蜂蜜煎餅」啦 (重點還是領隊請大家吃的哦 😘)。







山羊上樹

在來摩洛哥之前有看過山羊上樹的照片,在路途上導遊及領隊有說明,這個要看到山羊上樹是要靠運氣的 (是的,出來旅遊後深深發覺,有時老天也要很幫忙才行)。

就在說著說著,就突然聽到大家驚呼看到山羊上樹了。旅行就是如此,不管事前看過多少照片多少影片,當你真正站在那個地點身處於當地的環境就是不一樣,這就是旅行帶給我的最大滿足 😊。












是的,山羊上樹指的「樹」,就是摩洛哥聞名於世的「阿甘樹 (Argan)」,正好在為山羊們拍各種角度的特寫時,在樹下撿到一顆阿甘樹果實就來張特寫吧 😇。




阿甘油製作

為何摩洛哥的阿甘油聞名於世? 主要是因為地理及天候的關係,在目前全世界只有二處地方能生長出 阿甘樹 (Argan),而摩洛哥就是其中之一。因此,這也是阿甘油 (甚至又稱摩洛哥油) 聞名的原因,因為世界其它地方是生長不出阿甘樹,當然也無法大量生產這種「可食用 / 美容」的聖品。

我們來到了阿甘油合作社,看看阿甘油的製作過程。首先,第一階段是由摩洛哥媽媽們用著純熟的手藝敲開阿甘樹果實。可以直接拿一顆來吃看看,整個口感一開始是甘到後勁時非常的苦 (苦味久久不散啊 ~~ 😭)。




第二階段,摩洛哥媽媽們則是把敲開的阿甘樹果實進行分類的動作。




經過前面二道作業程序的處理後,再把分類好的阿甘樹果實研磨成油,後續再進行過濾等動作。最後,就是我們所看到的阿甘油成品了 💃。





艾索維拉

艾索維拉 (Essaouira),在 2001 年時入選世界文化遺產,是在 18 世紀晚期時所發展起來的北非防禦性港口城市,因為瀕臨大西洋的地理位置同時連接摩洛哥及撒哈拉內陸地區,以及歐洲和世界其他國家貿易往來,所以成為摩洛哥的重要國際貿易海港。




在享用午餐之前,導遊及領隊帶我們逛逛艾索維拉這迷人的海港城鎮。同樣的,天公作美給我們一個很棒的豔陽天,讓我們能夠盡情領略艾索維拉大西洋海港城鎮的美 😎。




今天午餐吃什麼呢? 在艾索維拉這座海港城市,當然是「炸海鮮拼盤」了 😛。




享用完豐富的午餐後由於餐館的位置極佳,直接到餐館的頂樓就可以眺望大西洋,也同時看到艾索維拉在古時所建立的防衛城牆炮台





當然,目前的艾索維拉已經變成摩洛哥迷人的觀光海港小鎮,所以用完午餐後導遊及領隊帶著我們小逛一下艾索維拉市集,之後就讓大家自由活動直到晚餐時間再集合即可,愛怎麼逛就怎麼逛了。






Le Medina Thalassa Sea & Spa Hotel

這裡就是我們在艾索維拉住宿的 Le Medina Thalassa Sea & Spa Hotel飯店,非常豪華對吧。在剛才的市集逛累了,可以回到飯店後非常隨性的在泳池旁躺椅上休息曬曬太陽,這就是人生啊 ~~。





北非花園 - 摩洛哥之旅




旅程

旅行」對我來說,是個能夠讓我的眼界開闊、心境轉換、釋放負能量、補充正能量……等。而我的旅行習慣是跟團,因為我喜歡有人在陌生的國度幫我打點好旅行時的 吃 / 住 / 行,而我只需要盡情放鬆好好享受這個難得的假期,並且聽著導遊/領隊說明這個國家的人文、歷史、地理、風情……等即可。其實,不管你是跟團或者自助行甚至不用出國也行,只要找到專屬於你自己能夠放鬆再出發方式就好,對吧!! 😁

此次的行程,我們選擇參加晴天旅遊 - 皇城、古都、撒哈拉-神奇迷幻摩洛哥全覽之旅行程。整趟行程下來,很幸運能夠由認真負責晴天玩家領隊 Michael以及熱情導遊 Fedi-雅馨,讓整個 15 天的北非花園摩洛哥之旅留下難忘的回憶 (領隊/導遊,對於當次旅遊的品質影響真的非常大的)。下列為此次 15 天北非花園摩洛哥之旅的旅程地圖:

北非花園 - 摩洛哥之旅 - Day13 - 薩菲 / 瓦力迪亞 / 傑迪達

$
0
0

離開艾索維拉

這次的旅程一直非常幸運,舉例來說,我們來到摩洛哥到今天是第 13 天才遇到下雨天,真的很幸運 (大家都知道,下雨天不管做什麼事情都非常不方便,而且景點的美也通常會被破壞,無法呈現最美的景致)。希望,好運能夠持續,在稍後的景點雨停然後放晴吧 👻。







薩菲

薩菲 (Safi),在摩洛哥是以「陶藝」聞名的,這幾天在摩洛哥吃到各式各樣的 塔琴鍋 (Tajine)料理,那麼一定要跟摩洛哥「最大」的塔琴鍋合影留念一下 😁。在摩洛哥每個城市都會有個主題,舉例來說,在薩菲因為陶藝聞名,所以在市區正中心就會以塔琴鍋為代表,之前在 歐札札特 (Ouarzazate)時因為電影聞名就會是以「電影膠卷」為代表。







貝多烏薩岬角

在前往 瓦力迪亞 (Oualidia)的路途上,我們可以看到大西洋的景色 (很幸運的,天氣放晴了,不然下雨天站在這裡相信一定是霧茫茫一片),隨後導遊及領隊讓我們在 貝多烏薩岬角 (Cape Beddouza)這裡稍稍停留,看看這大西洋的美 (不是太平洋哦)。






瓦力迪亞

中午時分我們到達 瓦力迪亞 (Oualidia),因為這裡的地理環境關係非常適合生蠔/龍蝦的生長。所以,今天午餐我們會享用到「生蠔」大餐,非常貼心的是如果像我一樣不愛吃「生的」生蠔的話,也可以選擇「烤熟」的生蠔搭配檸檬同樣也非常的對味 😛。



Oh! My God!!各位觀眾「義大利名師設計 Sit Down Please」出場啦。人生中,第一次個人吃到「整隻龍蝦」完整體驗到龍蝦吃到飽的感受,太好吃啦 ~~ 😭。



最後,來個美味甜點為今日午餐劃下完美句點。


這裡是餐館外的風景,所以我們一邊享用著「生蠔 / 龍蝦」一邊吃著迷人的海風,加上天空作美再度放晴,我想這種感動當我日後只要看到這些圖片,閉上眼晴應該就能夠回想這段旅遊的美好回憶吧 (每當我被生活瑣事搞到負能量滿點時,看看過往的旅遊照片閉目回想,就能夠讓我再度燃起重新出發的動力。因為,我希望在有生之年能夠走遍世界每一處) 💪。







傑迪達

傍晚時分我們抵達了 傑迪達 (El Jadida),這裡在 2004 年時入選世界文化遺產舊稱為「馬札甘城 (Mazagan)」,過去這裡為葡萄牙的殖民地。因此,在城內留下許多葡萄牙殖民時的建築,首先我們參觀的是「地下蓄水池」(這跟先前去土耳其時,所參觀的羅馬地下水宮殿的建築結構非常類似,相信應該也是相同的功用才對)。剛好下了點雨,所以在地下蓄水池中有些微積水,也讓整個倒影的感覺可以輕易呈現。




走在 傑迪達 (El Jadida) 的街道上,可以感覺到當初葡萄牙殖民時的相關建築氣氛。




同樣的,傑迪達 (El Jadida) 因為地理位置的關係,所以在葡萄牙殖民時期也修建了許多城牆炮台。






Mazagan Beach Resort

今天我們所要住宿的 馬札甘海灘度假村 (Mazagan Beach Resort),是全摩洛哥最大最豪華的渡假飯店,裡頭不但有賭城、泳池、水療館、各式餐廳……等 (老實說,我有去賭城花 20 DH 體驗一下拉霸機,但是裡頭煙味實在太重非常不能適應,再待下去的話我應該又會頭痛發作了,所以體驗一下之後就趕緊離開),重要的是緊臨海灘稍後我們就要去觀賞無限好夕陽。從一進飯店就可以感受到此飯店的豪華氣息,真的有錢就可以任性啊。




順利 Check-In 放下行李後,馬上往飯店外的海灘去趕著看看無限好的夕陽。可惜,剛好天候又要轉陰起風,夕陽被一大片陰雲擋住,在等待一小段時間後因為海灘風大直覺看不到夕陽就回到飯店內了 (後續有團友是有拍到夕陽的)。







北非花園 - 摩洛哥之旅




旅程

旅行」對我來說,是個能夠讓我的眼界開闊、心境轉換、釋放負能量、補充正能量……等。而我的旅行習慣是跟團,因為我喜歡有人在陌生的國度幫我打點好旅行時的 吃 / 住 / 行,而我只需要盡情放鬆好好享受這個難得的假期,並且聽著導遊/領隊說明這個國家的人文、歷史、地理、風情……等即可。其實,不管你是跟團或者自助行甚至不用出國也行,只要找到專屬於你自己能夠放鬆再出發方式就好,對吧!! 😁

此次的行程,我們選擇參加晴天旅遊 - 皇城、古都、撒哈拉-神奇迷幻摩洛哥全覽之旅行程。整趟行程下來,很幸運能夠由認真負責晴天玩家領隊 Michael以及熱情導遊 Fedi-雅馨,讓整個 15 天的北非花園摩洛哥之旅留下難忘的回憶 (領隊/導遊,對於當次旅遊的品質影響真的非常大的)。下列為此次 15 天北非花園摩洛哥之旅的旅程地圖:

北非花園 - 摩洛哥之旅 - Day14/15 - 卡薩布蘭卡 / 伊斯坦堡 / 台灣

$
0
0

離開傑迪達

今天是我們在摩洛哥的最後一天了,早晨起來後開窗一看天公依然作美,在 15 天的摩洛哥之行我們僅僅半天遇到下雨,真的非常的幸運。在離開全摩洛哥最大最豪華的渡假飯店 馬札甘海灘度假村 (Mazagan Beach Resort) 之前,來個最後的全場環場吧。







好朋友的家

在前往 穆罕默德五世國際機場 (Mohammed V International Airport)之前,導遊及領隊幫我們加上個 Bonus 行程。話說,這幾天我們在摩洛哥用餐時,偶爾會在傳統豪宅改建的餐廳用餐,那麼傳統摩洛哥住家是否真的也是如此呢? 導遊帶我們來好朋友的家中親眼看看,是否摩洛哥一般人家是否也真的是這樣,沒錯,完完全全的就跟我們在豪宅中所看到的相同。



在 摩洛哥 (Morocco) 的最後一天,我們參觀 好朋友 的家並且在門口留念。最後,在好朋友家門口大家一起合影留念並大聲唸出「Allah, Al Watan, Al Malik」,其實這幾天在摩洛哥到處都會看到摩洛哥的「國家格言」也就是我們剛才所唸的含意:
لله، الوطن، الملك  (Arabic)
Allah, Al Watan, Al Malik (唸法)
真主,國家,國王 (意思)



旅行的意義之我見

15 天的摩洛哥之行,其實說長不長說短不短,但是可以肯定的是我的人生旅遊地圖又加上 1 筆記錄了。每個人生長在這個地球村當中,相信許多人跟我之前的觀念一樣「直線人生」,每天工作的目標就是提升生活品質、趕快繳清房貸、退休、環遊世界……等,但是事實上真的是如此嗎? 難保不會有任何意外發生? 或是等到老時有錢有閒 (其實也不一定有錢?) 還有體力環遊世界嗎? (現在的我對於長途飛行,其實已經感到相當痛苦了)

那麼,我為何會在這幾年之間突然看開不想過直線人生呢? 其實,只要體會到人生無常,相信你也很容易能夠看開這些事情 (舉例來說,突然有朋友或長輩離開這人世間,或努力打拼一輩子卻每天悶悶不樂,或是到醫院急診室了解人生無常的無奈……)。

我想要表達的是,請盡情過好你所選擇的每一天,而我在思考後發現我在有生之年最想要的是踏遍世界,所以我努力工作和生活的同時都是為了要往「旅行世界」這個目標來努力,所以對我來說旅行就是我盡情放鬆重新再出發的最好動力,你呢? 你最佳放鬆再出發的方式是什麼?

圖、Weithenn 的旅行世界地圖



北非花園 - 摩洛哥之旅




旅程

旅行」對我來說,是個能夠讓我的眼界開闊、心境轉換、釋放負能量、補充正能量……等。而我的旅行習慣是跟團,因為我喜歡有人在陌生的國度幫我打點好旅行時的 吃 / 住 / 行,而我只需要盡情放鬆好好享受這個難得的假期,並且聽著導遊/領隊說明這個國家的人文、歷史、地理、風情……等即可。其實,不管你是跟團或者自助行甚至不用出國也行,只要找到專屬於你自己能夠放鬆再出發方式就好,對吧!! 😁

此次的行程,我們選擇參加晴天旅遊 - 皇城、古都、撒哈拉-神奇迷幻摩洛哥全覽之旅行程。整趟行程下來,很幸運能夠由認真負責晴天玩家領隊 Michael以及熱情導遊 Fedi-雅馨,讓整個 15 天的北非花園摩洛哥之旅留下難忘的回憶 (領隊/導遊,對於當次旅遊的品質影響真的非常大的)。下列為此次 15 天北非花園摩洛哥之旅的旅程地圖:

Storage Replica 使用 25Gb / 100Gb iWARP RDMA 運作效能

$
0
0

前言

我們已經知道在 S2D (Storage Spaces Direct) 軟體定義儲存環境中,建議採用 RDMA (RoCE / iWARP / infiniband) 確保可以獲得  ultra-low latency, low-CPU, low-memory, high throughput SMB and workload performance好處 。


因此,在這樣的運作架構中,由 SMB Direct機制搭配實體支援 RDMA技術的網路介面卡,在都可以在 S2D HCI 超融合運作架構中受惠:
  • Storage Spaces Direct
  • Storage Replica
  • Hyper-V Live Migration
  • Windows Server and Windows 10 Enterprise client SMB operations



S2D with Storage Replica 測試環境

在本文當中將討論在採用 Chelsio iWARP RDMA運作環境中,採用 Storage Replica 機制時可以獲得怎麼樣的運作效能。下列便是本文的測試環境:
  • OS: Windows Server 2016
  • System Model: 2x Supermicro X10DRG-Q
  • CPU: Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz (2 sockets, 24 cores) per node
  • RAM:128GB per node
  • INTEL NVME SSD Model: SSDPECME016T4 (1.6TB) – 5x in source node
  • Micron NVME SSD Model: MTFDHAX2T4MCF-1AN1ZABYY (2.4TB) – 5x in destination node
  • RDMA NIC: 2x Chelsio T6225-CR 25Gb iWARP RNICs
  • RDMA NIC: 2x Chelsio T62100-CR 100Gb iWARP RNICs
圖、Chelsio T6225-CR 25Gb iWARP RNICs

圖、Chelsio T62100-CR 100Gb iWARP RNICs



25 Gb - Storage Replica 效能測試

在本文測試環境中儲存空間為 2 TB Volume,透過 25Gb RDMA 網路並啟用 Storage Replica進行兩端主機之間的傳送。

圖、兩端主機 Storage Replica 資訊

從下列圖中可以看到,即便網路衝到全速的情況下 (近乎 25Gb傳輸速度),仍不會影響主機的 CPU / Memory等運算資源。

圖、兩端主機 Storage Replica 複寫時 CPU使用率

圖、兩端主機 Storage Replica 複寫時 Memory使用率

圖、兩端主機 Storage Replica 複寫時 iWARP RDMA網路卡傳輸速率

因此,兩端主機之間透過 Storage Replica 機制同步 2 TB Volume 僅僅花費 12 分鐘便完成工作任務。





100 Gb - Storage Replica 效能測試

在本文測試環境中儲存空間為 2 TB Volume,透過 100 Gb RDMA 網路並啟用 Storage Replica進行兩端主機之間的傳送,同步 2 TB Volume 僅僅花費 198 秒便完成工作任務。




參考資源

147 期 - 試玩單機 ASDK 混合雲動手體驗 Azure Stack

$
0
0

網管人雜誌

本文刊載於 網管人雜誌第 147 期 - 2018 年 4 月 1 日出刊,NetAdmin 網管人雜誌為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。




文章目錄

前言
Microsoft Azure Stack 簡介
Azure Stack 運作架構
實戰 – 佈署 ASDK 混合雲平台
          建立 AAD(Azure Active Directory)環境
          佈署 Dv3 或 Ev3 Azure VM 虛擬主機
          MAS-Host 基礎設定
          下載 Azure Stack Development Kit
          建立 MAS-VM 巢狀式虛擬主機
          佈署 ASDK 混合雲平台
          登入 ASDK 管理者入口網站
          登入 ASDK 租用戶入口網站
結語





前言

根據 RightScale 市調單位最新發表的雲端運算發展趨勢調查結果顯示,企業或組織採用雲端運算技術的比例從 2015 年的 93 % 上升至 95 %,在自建「私有雲」(Private Cloud)的部分,從 2015 年的 63 % 到 2016 年的 77 % 及最新 2017 年的 72%。

同時,因為「公有雲」(Public Cloud)的運作環境已經非常成熟,加上企業及組織自建私有雲的比例不斷提升,也連帶讓「混合雲」(Hybrid Cloud)的佔有比例,從 2015 年的 58 % 到 2016 年的 71 % 及最新 2017 年的 67 %(如圖 1 所示),可以明顯感覺到佔有比例逐漸上升的趨勢。

圖 1、2017年雲端運算趨勢–混合雲佔有比例明顯上升





Microsoft Azure Stack 簡介

MAS(Microsoft Azure Stack),是微軟專為新世代混合雲運作架構所設計的雲端平台,並且微軟在 DEVintersection 2017 Orlando 大會上,由 PowerShell 之父 Jeffrey Snover介紹 MAS 混合雲平台,在經過 2 個月之後微軟於 2017 年 7 月正式發佈 MAS 混合雲平台。

簡單來說,目前公有雲運作環境及相關技術都已經非常成熟,但是企業及組織對於內部的機敏資料(例如,營運報表、顧客資料及採購項目……等),在存放至公有雲環境時,雖然已經預先將機敏資料加密後才上傳至雲端環境,然而 CIO 們仍然會覺得機敏資料並非存放在內部資料中心來得安心,不過在審視自家內部資料中心時,卻又會發現內部的資料中心缺少公有雲等級的靈活性及擴充性。

現在,企業及組織可以透過 Microsoft Azure Stack 混合雲平台,自行打造出如同 Microsoft Azure 公有雲的靈活性及大型企業等級運作規模,同時這樣高可用性高靈活性的混合雲平台掌控權,又可以完全由企業及組織的 IT 人員所管控,並且在需要時能夠輕鬆與公有雲環境介接達成混合雲的運作架構(如圖 2 所示)。

圖 2、Azure Stack 混合雲平台提供與 Azure 公有雲一致的操作體驗

在 Microsoft Azure 公有雲管理介面的部分,早期 Azure 傳統入口網站(Azure Classic Portal)管理介面,採用的是 ASM(Azure Service Management)管理模式,只要瀏覽 https://manage.windowsazure.com網址並鍵入 Azure 訂閱帳戶資訊即可。
請注意,ASM 入口網站管理介面已經正式於 2018 年 1 月 8 日退役。現在,瀏覽 ASM 入口網站將會自動導向至新版 ARM(Azure Rights Management)入口網站管理介面。
此外,企業或組織在內部資料中心內,也可以透過 Windows Server 2012 R2 及 Windows Server 2016,自行打造 IaaS 私有雲平台 Microsoft Azure Pack,同樣採用 Azure 傳統入口網站管理介面(如圖 3 所示),並使用 ASM(Azure Service Management)管理模式。
有關採用最新 Windows Server 2016 雲端作業系統,打造內部 IaaS 私有雲平台 Microsoft Azure Pack 的詳細資訊,請參閱本雜誌《第 143 期 - WS 2016 免費整合私有雲快速建置 Azure Pack》專欄內容。

圖 3、Microsoft Azure Pack 採用 Azure 傳統入口網站管理介面

為了更符合雲端操作習慣及因應 HTML5 管理介面的潮流,微軟在 2015 年 12 月 2 日推出新版的 Azure 入口網站管理介面(如圖 4 所示),採用新式的 ARM(Azure Resource Manager)管理模式,只要瀏覽 https://portal.azure.com網址,並於登入畫面鍵入 Azure 訂閱帳戶資訊即可登入,並且在 2018 年 1 月 8 日正式淘汰舊有的 ASM(Azure Service Management)管理模式。

圖 4、新式 Microsoft Azure 入口網站採用 Azure Resource Manager 管理模式

因此,微軟為了提供給企業及組織 IT 管理人員一致的操作體驗平台,以及 Dev 開發人員一致的程式碼撰寫平台(只要撰寫一次上傳至公有雲環境中便可立即使用),屆時企業或組織自行打造的 Azure Stack 混合雲平台,也同樣採用 Azure Resource Manager 管理模式(如圖 5 所示)。

圖 5、Microsoft Azure Stack 混合雲平台,同樣採用 Azure Resource Manager 管理模式





Azure Stack 運作架構

目前,企業及組織要佈署 Azure Stack 混合雲平台時,倘若是用於「正式營運環境」的話,建議採用 Azure Stack Integrated Systems解決方案。簡單來說,用於正式營運環境的 Azure Stack 運作架構,其最小規模的運作架構設計原則為「1、1、4 ~ 12」,分別是「1 Region」、「1 Scale Unit」、「4 ~ 12 Nodes」

圖 6、Azure Stack 運作架構設計原則示意圖

倘若是用於「研發測試環境」的話,建議採用 ASDK(Azure Stack Development Kit)解決方案。簡單來說,ASDK 解決方案會將 Azure Stack 所有功能、元件、角色以及運作環境,都部署在「1 台」實體伺服器當中進行運作,所以適合企業及組織在評估初期試用 Azure Stack 混合雲平台,以及導入後期用於研發測試環境中。

下列為 Azure Stack 混合雲平台運作架構中,相關運作元件所擔任的角色及功能說明:

  • AzS-ACS01:負責 ACS(Azure Consistent Storage)儲存資源服務。
  • AzS-ADFS01:負責 ADFS(Active Directory Federation Services)身份驗證服務。
  • AzS-BGPNAT01:擔任 Edge Router 角色,負責提供 Azure Stack 運作架構中 NAT(Network Address Translation),以及 VPN(Virtual Private Network)連線服務。
  • AzS-CA01:負責 CA(Certificate Authority)憑證服務。
  • AzS-DC01:負責 ASDK 運作環境的基礎架構,例如,Active Directory、DNS、DHCP…… 等服務。
  • AzS-ERCS01:負責 ASDK 運作環境中,VM 虛擬主機的 ERC(Emergency Recovery Console)服務,例如,停止整個 Azure Stack 運作架構時依序關閉相關運作元件。
  • AzS-GWY01:擔任 Edge Gateway 角色,負責提供 Azure Stack 運作架構中 Site-to-Site VPN 至租用戶網路服務。
  • AzS-NC01:擔任網路控制器(Network Controller,NC)角色,負責整個 Azure Stack 運作架構中 SDN 軟體定義網路的部份。
  • AzS-SLB01:擔任 SLB(Software Load Balancer)與Network Multiplexing Service 角色,負責整個 Azure Stack 運作架構中有關網路流量負載平衡的部分。
  • AzS-SQL01:擔任 Azure Stack 運作架構中,儲存基礎架構角色中需要資料庫服務的部分。
  • AzS-WAS01:負責建立 Azure Stack 管理者(Administrative Portal),入口網站的 Azure Resource Manager 管理模式服務。
  • AzS-WASP01:負責建立 Azure Stack 租用戶(Tenant Portal),入口網站的 Azure Resource Manager 管理模式服務。
  • AzS-XRP01:負責 Azure Stack 運作架構中,所有資源如 Compute / Network / Storage 等核心資源提供者(Core Resource Provider)服務。

圖 7、ASDK(Azure Stack Development Kit)運作架構示意圖





實戰 – 佈署 ASDK 混合雲平台

開始實戰佈署 ASDK(Azure Stack Development Kit)混合雲平台吧  !本文採用 ASDK 佈署方式進行實作,也就是只要 1 台實體伺服器便能佈署 Azure Stack 混合雲平台並且實作所有功能。原則上,只要採用通過 Windows Server 2012 R2 硬體認證的伺服器即可。

那麼,讓我們來看看這台佈署 ASDK 混合雲平台實體伺服器的硬體需求(詳細資訊請參考 Microsoft Docs - Azure Stack Development Kit deployment prerequisites):

  • CPU 處理器:採用 2 顆 CPU 處理器,總運算核心至少應有 12 Cores,建議採用 16 Cores 運算核心。同時,必須支援硬體輔助虛擬化技術,例如,Intel VT-x / EPT 或 AMD AMD-V / NPT。
  • 記憶體空間:至少配置 96 GB 記憶體空間,建議採用 128 GB 記憶體空間或更多。
  • BIOS:啟用硬體輔助虛擬化技術,以便支援及運作 Hyper-V 虛擬化平台及巢狀式虛擬化技術。
  • 網路卡:配置通過 Windows Server 2012 R2 硬體認證的網路卡即可,無須其它額外特色功能。
  • 作業系統磁碟:配置「1 顆」SSD 固態硬碟或 SAS / SATA 機械式硬碟,磁碟空間大小至少應有 200 GB 可用空間。
  • 資料磁碟:配置「4 顆」SSD 固態硬碟 SAS / SATA 機械式硬碟,磁碟空間大小至少應有 140 GB 建議配置 250 GB 可用空間。這些磁碟可用空間,屆時將會存放 Azure Stack 運作環境中的所有資料。值得注意的是,若採用混合硬碟類型時硬碟介面的格式必須一致才行,否則屆時佈署過程將會產生錯誤而停止佈署作業,舉例來說,採用 SATA SSD 固態硬碟便必須搭配 SATA 機械式硬碟才行。
  • 硬碟控制器:建議採用 Simple HBA 硬碟控制器(例如,LSI 9207-8i、LSI 9300-8i、LSI 9265-8i),倘若採用 RAID HBA 硬碟控制器時,必須支援「Pass-Through」模式,或是可以針對「每顆硬碟」建立「RAID-0」的硬碟控制器才行,否則屆時將因為 Azure Stack 的 SDS 軟體定義儲存技術,無法將資料磁碟建立成儲存資源而導致佈署作業失敗。
  • 硬體配置檢查工具:在佈署 ASDK 混合雲平台之前,建議至 TechNet Gallery 下載 Deployment Checker for Azure Stack Development Kit硬體配置檢查工具,以便確認實體主機硬體資源是否適合佈署 ASDK 混合雲平台。


除了上述硬體配置需求之外,在開始佈署 ASDK 混合雲平台之前還有幾個小細節值得注意:

  • ASDK 實體主機,可以採用 Windows Server 2012 R2 或 Windows Server 2016 作業系統。
  • ASDK 實體主機「」需預先加入網域環境,屆時 ASDK 實體主機將會加入 AzS-DC01虛擬主機,所建立的「StackAzure.local」網域環境中。
  • ASDK 實體主機,請避免使用這些網段「192.168.102.0/24、192.168.200.0/24、192.168.103.0/25、192.168.104.0/25、192.168.101.0/26、192.168.100.0/27」,因為這些網段必須保留給 Azure Stack 運作環境中,相關運作角色的 VM 虛擬主機使用。同時,這台 ASDK 實體主機必須可以透過 Port 80、443,存取 graph.windows.net、login.windows.net 及 vortex-win.data.microsoft.com網際網路站台。




建立 AAD(Azure Active Directory)環境

目前,在佈署 Azure Stack 混合雲平台時,必須搭配 AAD(Azure Active Directory)ADFS(Active Directory Federation Services)身份驗證機制才行。

在本文實戰環境中,採用 AAD(Azure Active Directory)身份驗證機制,建立的網域名稱為「weithennmas.onmicrosoft.com」,並建立網域使用者帳號「mas-admin」後,指派目錄角色為「全域管理員」以便具備管理者權限(如圖 8 所示)。

圖 8、建立 Azure Active Directory 網域及網域管理者帳號



佈署 Dv3 或 Ev3 Azure VM 虛擬主機

雖然,ASDK 混合雲平台只要 1 台硬體伺服器即可佈署,但是對於 IT 預算不多的中小企業來說可能仍無法準備妥當。此時,我們可以利用 Azure 公有雲的優勢來安裝及佈署 ASDK 混合雲平台以便進行試用。

從 2017 年 7 月開始,Azure 公有雲新增 Dv3 及 Ev3 規模  的 VM 虛擬主機,簡單來說這 2 種新增的 VM 虛擬主機,底層為 Windows Server 2016 作業系統,並採用 Haswell E5-2673 v3 2.4GHzBroadwell E5-2673 v4 2.3GHz 系列 CPU 處理器,同時支援「巢狀式虛擬化技術」(Nested Virtualization)(如圖 9 所示)。

圖 9、Nested Virtualization on Azure 運作架構示意圖

在本文實作環境中,我們在 Azure 日本東部資料中心內,建立 1 台標準 E16s v3」系列名稱為「MAS-Host」的 VM 虛擬主機(如圖 10 所示),並且額外新增「256 GB、1 TB」的資料磁碟,以便屆時建立的巢狀式 VM 虛擬主機,能夠符合 ASDK 混合雲平台對於磁碟空間的要求。

圖 10、建立標準 E16s v3 系列的 VM 虛擬主機,以支援巢狀式虛擬化技術



MAS-Host 基礎設定

順利在 Azure 公有雲環境中佈署好 MAS-Host 虛擬主機,登入後進行系統基礎設定,例如,系統時區調整為 UTC + 8、安裝 Hyper-V 伺服器角色、格式化剛才新增的 256GB、1TB 資料磁碟。在本文實作環境中,將 256 GB資料磁碟格式化為「M:」存放 ASDK 混合雲平台的作業系統,而 1 TB資料磁碟格式化為「N:」存放 ASDK 混合雲平台的資料。

重新啟動 MAS-Host 虛擬主機之後,為了稍後佈署的 ASDK 混合雲平台巢狀式虛擬主機,能夠順利存取網際網路,舉例來說,至 Azure AD 進行應用程式的註冊作業。
有關 Windows Server 2016 雲端作業系統,啟用巢狀式虛擬化術及建立 NAT vSwitch 虛擬交換器的詳細資訊,請參閱本雜誌《第 133 期 - 實作 Hyper-V 巢狀虛擬化測試研發效率大提升》專欄內容。

因此,必須在 MAS-Host 上建立 NAT vSwitch 虛擬交換器。請依序執行下列 PowerShell Script 即可建立 NAT vSwitch:
New-VMSwitch -Name "MAS-NATSwitch" -SwitchType Internal
New-NetNat -Name "MAS-VMsNAT" -InternalIPInterfaceAddressPrefix "10.10.75.0/24"
Get-NetAdapter "vEthernet(MAS-NATSwitch)" | New-NetIPAddress -IPAddress 10.10.75.1 -AddressFamily IPv4 -PrefixLength 24


圖 11、在 MAS-Host 虛擬主機上建立 NAT vSwitch 虛擬交換器



下載 Azure Stack Development Kit

請至 Azure Stack Development Kit 探索頁面,填入相關資訊後即可下載 Azure Stack Development Kit Downloader(AzureStackDownloader.exe)執行檔。在本文實作環境中,執行後將會下載最新的 ASDK 混合雲平台「20180103.2 版本」(如圖 12 所示)。

圖 12、執行 Azure Stack Development Kit Downloader 執行檔

下載完成後,請執行「AzureStackDevelopmentKit.exe」執行檔,將會解開稍後要使用的 ASDK 混合雲平台系統磁碟「CloudBuilder.vhdx」(如圖 13 所示),請複製到 MAS-Host 主機的 M:磁碟區,這也是稍後 MAS-VM 巢狀式虛擬主機的系統磁碟。

圖 13、解開稍後 MAS-VM 巢狀式虛擬主機的系統磁碟 CloudBuilder.vhdx



建立 MAS-VM 巢狀式虛擬主機

請在 MAS-Host 中建立 MAS-VM 巢狀式虛擬主機,主要配置包括第 2 世代格式、14 vCPU、110GB vRAM,在虛擬網路的部分除了採用剛才建立的 MAS-NATSwitch 虛擬交換器之外,也請記得啟用「MAC 位址變更」(MAC Address Spoofing)功能,以便稍後佈署的 ASDK 混合雲平台相關角色主機能夠存取網際網路。

至於,系統磁碟則是採用剛才解開的 CloudBuilder.vhdx,然後新增「4 個」250GB 動態磁碟在 MAS-Host 的 N:磁碟區,這也是稍後 MAS-VM 巢狀式虛擬主機的資料磁碟。最後,記得執行「Set-VMProcessor -VMName MAS-VM -ExposeVirtualizationExtensions $true」PowerShell 指令,以便為 MAS-VM 虛擬主機啟用巢狀式虛擬化技術。
有關 Windows Server 2016 雲端作業系統,啟用巢狀式虛擬化術及啟用 MAC 位址變更功能的詳細資訊,請參閱本雜誌《第 133 期 - 實作 Hyper-V 巢狀虛擬化測試研發效率大提升》專欄內容。



佈署 ASDK 混合雲平台

在開始執行佈署 ASDK 混合雲平台之前,建議先查看 ASDK Release Notes以避免佈署作業失敗,舉例來說,本文實作環境採用的 ASDK Build 20180103.2 版本,在佈署指令中必須要指定 NTP Server 時間校對伺服器的 IP 位址才行。

因此,在執行佈署 ASDK 混合雲平台指令前,先查詢「tw.pool.ntp.org」NTP Server 時間校對伺服器的 IP 位址(如圖 14 所示),然後以「系統管理員身分」開啟 PowerShell 指令執行環境,切換至部署 ASDK 混合雲平台的 PowerShell 指令碼路徑「C:\CloudDeployment\Setup」。

圖 14、查詢 NTP Server 時間校對伺服器 tw.pool.ntp.org 的 IP 位址

執行指令「.\InstallAzureStackPOC.ps1 -InfraAzureDirectoryTenantName weithennmas.onmicrosoft.com -NATIPv4Subnet 10.10.75.0/24 -NATIPv4Address 10.10.75.240 -NATIPv4DefaultGateway 10.10.75.1 -TimeServer 61.216.153.106」,開始安裝 ASDK 混合雲平台。值得注意的是,佈署指令中指定 10.10.75.240的 IP 位址便是屆時 AzS-BGPNAT01虛擬主機的 IP 位址。

首先,在佈署過程中將會出現「Supply values for the following parameters AdminPassword」訊息,此時鍵入的密碼便是屆時網域管理者帳號「AzureStack.local\AzureStackAdmin」的管理密碼(如圖 15 所示)。

圖 15、鍵入 AzureStack.local\AzureStackAdmin 網域管理者帳號的管理密碼

由於,在剛才的 ASDK 佈署指令中,我們指派屆時的 AzS-BGPNAT01 虛擬主機採用 10.10.75.240 的 IP 位址,所以佈署程序會先檢查此 IP 位址在網路中是否已經被使用,以及指定的 NTP Server 時間校對伺服器 IP 位址是否能夠順利存取(如圖 16 所示)。

圖 16、確認 NTP Server 時間校對伺服器及 AzS-BGPNAT01 虛擬主機 IP 位址

當 ASDK 佈署程序彈出 Microsoft Azure 身份驗證視窗時,請先別急著鍵入 Azure AD 管理者帳號及密碼。由於,本文實作環境是採用巢狀式虛擬主機的方式,所以請開啟「C:\CloudDeployment\Roles\PhysicalMachines\Tests\BareMetal.Tests.ps1」檔案,將內容中「if(-not $isVirtualizedDeployment)」判斷式改為「if($isVirtualizedDeployment)」後存檔離開,以便將 ASDK 佈署程序中偵測機制關閉(如圖 17 所示)。
預設情況下,ASDK 混合雲平台不允許佈署在 VM 虛擬主機當中,所以必須關閉 ASDK 佈署程序中的偵測機制。
圖 17、將 ASDK 佈署程序中偵測機制關閉

此時,請切換回剛才 Microsoft Azure 身份驗證視窗(如圖 18 所示),鍵入先前建立的 Azure AD 管理者帳號「mas-admin@weithennmas.onmicrosoft.com」及密碼,通過使用者身分驗證程序後,便會繼續 ASDK 佈署程序。

圖 18、鍵入 Azure AD 管理者帳號及密碼

當 ASDK 佈署程序進行至「Step 12 – Validate Physical Machines」時(如圖 19 所示),將會驗證目前的 ASDK 主機是否為 VM 虛擬主機,由於我們已經修改好 BareMetal.Tests.ps1 檔案內容,系統將會略過 ASDK 佈署程序中偵測機制,所以順利繼續佈署作業。

圖 19、略過 ASDK 佈署程序中偵測機制順利繼續 ASDK 佈署程序

倘若,在剛才的操作步驟中,並未修改 BareMetal.Tests.ps1檔案內容將 ASDK 佈署程序中偵測機制關閉的話,那麼將會出現佈署程序錯誤的情況(如圖 20 所示)。

圖 20、ASDK 佈署程序偵測為 VM 虛擬主機而停止佈署作業

整體 ASDK 混合雲平台運作環境的佈署時間,將會依據 ASDK 主機的硬體資源而定(本文實作環境花費 6.5 小時),並且在佈署期間將會重新啟動數次,因為 ASDK 主機將會加入由 AzS-DC01虛擬主機所建立的 StackAzure.local網域環境中,每當 ASDK 主機重新啟動再次登入系統後,將會繼續原有的 ASDK 佈署作業程序(如圖 21 所示)。

圖 21、ASDK 主機重新啟動再次登入系統後,將會繼續原有的 ASDK 佈署作業程序

當 ASDK 混合雲平台佈署作業完畢後,可以看到整個 ASDK 混合雲平台佈署程序共有「302」個步驟,並在完成後看到「COMPLETE:Action 'Deployment'」資訊(如圖 22 所示),此時便可以關閉 PowerShell 佈署程序視窗。

圖 22、ASDK 混合雲平台佈署作業完畢

倘若,在 ASDK 混合雲平台佈署作業期間遭遇錯誤而無法繼續佈署程序時,你可以切換至「C:\CloudDeployment\Logs」路徑,查看日誌檔案中詳細的錯誤訊息資訊以利進行故障排除作業,排除故障發生原因後再次執行「.\InstallAzureStackPOC.ps1 -Rerun」佈署指令即可。



登入 ASDK 管理者入口網站

現在,便可以開啟瀏覽器連結至 https://adminportal.local.azurestack.external網址,然後鍵入 Azure AD 管理者帳號及密碼順利通過使用者身分驗證程序後,便登入 ASDK 混合雲平台管理者入口網站(Administration Portal)(如圖 23 所示)。
目前,ASDK 混合雲平台管理者入口網站僅支援「英文」(English)操作介面。
圖 23、登入 ASDK 混合雲平台管理者入口網站



登入 ASDK 租用戶入口網站

此時,可以再另開 1 個瀏覽器視窗,連結至 https://portal.local.azurestack.external網址,由於尚未建立任何租用戶使用者帳號,因此仍請鍵入 Azure AD 管理者帳號及密碼,順利通過使用者身分驗證程序後,便可以看到 ASDK 混合雲平台租用戶入口網站(Administration Portal)(如圖 24 所示)。
目前,ASDK 混合雲平台租用戶入口網站已經支援「多國語系」操作介面。
圖 24、登入 ASDK 混合雲平台租用戶入口網站





結語

透過本文的說明及實作演練,相信讀者已經了解 Azure Stack 運作角色和基礎架構,以及如何建置及佈署 ASDK(Azure Stack Development Kit)混合雲平台運作環境。在後續的專欄中,我們將會陸續為各位讀者介紹更進階的 ASDK 混合雲平台操作及維運事務。

ASDK Journey (4) - 運作環境及架構概述

$
0
0

前言

在前面系列文章中 ASDK Journey (2) - 實戰 Azure Stack Development Kit on Azure,我們已經將 Azure Stack Development Kit 運作環境安裝完畢。但是,尚未了解整個 Azure Stack Development Kit 的運作環境及架構,本文將概述整個 Azure Stack Development Kit 安裝後的運作環境及架構。

下列為 ASDK 運作架構,詳請參考 Microsoft Azure Stack Development Kit architecture | Microsoft Docs,並在佈署前用 TechNet Deployment Checker for Azure Stack Development Kit 工具檢查一下。

圖、Azure Stack Development Kit 運作架構示意圖





MAS-Host (Azure VM) 網路環境

在前面系列文章中 ASDK Journey (2) - 實戰 Azure Stack Development Kit on Azure,我們建立 Azure VM (MAS-Host)透過 Nested Virtualization 機制產生 MAS-VM (Nested VM)佈署 ASDK。

Azure VM (MAS-Host)我們有建立 NAT Switch (名稱為 MAS-NATSwitch),以便透過 Nested Virtualization 機制產生 MAS-VM (Nested VM) 能夠存取 Internet。

圖、MAS-Host 網路環境





MAS-VM (Nested VM) 網路環境

至於透過 Nested Virtualization 機制產生 MAS-VM (Nested VM),一開始是單一網卡並且 DNS 指向至 8.8.8.8 (以便安裝過程中正確解析 tw.pool.ntp.org)。

在 ASDK 佈署過程中「Step PhysicalMachineAndInitialConfiguration.13 - Configure Physical Machines networking for POC」,將會調整 MAS-VM 網路環境 (這個安裝程序也會持續較久,一般來說要 1 小時左右),並且會將 MAS-VM 網路環境進行下列改變:

MAS-VM 建立 Hyper-v vSwitch:

  • 建立 PublicSwitch (External) 虛擬交換器 - 10.10.75.0/24
  • 建立 SdnSwitch (Internal)虛擬交換器 - 192.168.200.0/24


MAS-VM 網路環境:
  • 將原本的 Ethernet( 10.10.75.241) 名稱改為 Deployment (10.10.75.241),同時清空 DNS伺服器組態設定改為指向 192.168.200.224 (AzS-DC01),以便 MAS-VM 稍後加入 vDC (網域 AzureStack.local)
  • 新增 Management虛擬網路卡 (192.168.200.65/24),以便與 vDC 能溝通
  • 新增 Storage1虛擬網路卡 (192.168.100.4/26)






AzS-DC01 組態設定

在 ASDK 運作架構中,基礎架構服務如 Active Directory、DNS、DHCP是由 AzS-DC01所提供。當整個 ASDK 主機啟動時,最先啟動的也是 AzS-DC01 虛擬主機,所以在 Hyper-V VM 的組態設定中可以看到為「Automatic Start Action - Always start this virtual machine automaticcally」

  • SdnSwitch - Infra Traffic - 192.168.200.224
  • 網域: AzureStack.local
  • 網域管理員: AzureStackAdmin







S-Cluster 容錯移轉叢集

在 ASDK 運作架構中,將會建立「S-Cluster.azurestack.local  (192.168.200.66)」的容錯移轉叢集,並且建立 SOFS 高可用性角色「SU1FileServer」,至於儲存資源的部分則是「SU1_Pool、SU1_Volume」

建立 S-Cluster.azurestack.local  (192.168.200.66) 容錯移轉叢集:


建立 SU1FileServer 的 SOFS 高可用性角色





建立 SU1_Pool、SU1_Volume儲存資源:







Azure Stack 應用程式註冊

當 ASDK 佈署作業完畢後,切換到 Azure AD 網域 (weithennmas.onmicrosoft.com)頁面後,將會發現共有 18 個註冊的應用程式。






Azure Stack Development Kit 攻略系列文章

S2D (Storage Spaces Direct) 更換故障硬碟

$
0
0

前言

簡單來說,不管在怎麼高品質的硬體設備都會有損壞的一天,本文將說明在 S2D (Storage Spaces Direct)運作環境中,當硬碟損壞時如何進行更換作業。


原則上,整個故障損壞硬碟的更換程序如下:
  • 確認故障硬碟:確認故障損壞的硬碟在哪台 S2D 主機中,而又是 S2D 主機眾多硬碟中的哪顆硬碟 (硬碟序號)。
  • 設定故障硬碟為 Retire:透過 PowerShell 指令,將故障損壞的硬碟使用狀態由 Auto-Select 設定為 Retire。
  • 從 Storage Pool 中移除故障硬碟:在 S2D Storage Pool 當中,將該顆故障損壞硬碟移除。
  • 拔除故障硬碟:至 S2D 主機,將故障損壞硬碟拔除。
  • 新硬碟加入至 Storage Pool:將新的硬碟插入至 S2D 主機後,執行 PowerShell 指令將新硬碟加入至 Storage Pool 當中。




確認故障硬碟

在本文測試環境中,S2D Cluster 由 2 Nodes節點主機所組成,每台節點主機配置 4 顆 960 GB SSD 及 12 顆 6 TB 機械式硬碟。首先,我們透過「Get-StoragePool *S2D* | Get-PhysicalDisk」指令,可以發現有顆硬碟發生故障損壞的情況,從 PowerShell 指令的執行結果可以看到,有問題的硬碟狀態為「Lost Communication、Warning」(有關運作狀態的詳細資訊,請參考 Storage Spaces health and operational states | Microsoft Docs)。

圖、S2D 運作環境中,某顆硬碟發生故障損壞的情況

此時,透過「Get-VirtualDisk」指令可以看到有 S2D Volume 受到這顆故障硬碟損壞的影響,而讓 Volume 的健康狀態由「Healthy」轉變為「Warning」。

圖、Volume 受到故障硬碟損壞的影響健康狀態變為 Warning



設定故障硬碟為 Retire

此時,我們可以透過「Get-PhysicalDisk |? OperationalStatus -Notlike OK」指令,將故障損壞硬碟從 S2D Cluster 眾多硬碟中過濾出來,然後把結果儲存至 $FailDisk變數當中。接著,執行「Set-PhysicalDisk -InputObject $FailDisk -Usage Retired」指令,組態設定該故障損壞硬碟的使用狀態為 Retired
此時,S2D 將會將故障損壞硬碟中相關的 Slab 資料區塊,開始複寫 1 份至不同台 S2D 主機的不同顆硬碟上。這也是 S2D 超融合架構不同於以往傳統 RAID 架構,無須等新硬碟加入便開始複寫新的資料至可用儲存空間確保資料高可用性。
圖、組態設定故障損壞硬碟的使用狀態為 Retired



從 Storage Pool 中移除故障硬碟

確認故障損壞硬碟的使用狀態為 Retired 之後,請執行「Get-StoragePool *S2D* | Remove-PhysicalDisk -PhysicalDisks $FailDisk」指令,將該故障損壞硬碟從 S2D Storage Pool 當中移除。
倘若,此時無法順利從 Storage Pool 當中移除故障損壞硬碟的話,可以嘗試稍後實際拔除故障損壞硬碟之後再次執行看看。

因此,再次執行「Get-StoragePool *S2D* | Get-PhysicalDisk」指令,已經看不到故障損壞硬碟。

圖、將該故障損壞硬碟從 S2D Storage Pool 當中移除



拔除故障硬碟

確認故障損壞硬碟已經從 S2D Storage Pool當中移除後,便可以至該台 S2D 節點主機拔除故障硬碟,倘若你無法確認是哪顆硬碟的話,可以透過「Get-PhysicalDisk |? OperationalStatus -Notlike OK | Enable-PhysicalDiskIdentification」指令,讓故障損壞硬碟亮燈
取消故障硬碟亮燈請執行 Get-PhysicalDisk |? OperationalStatus -like OK | Disable-PhysicalDiskIdentification

或是透過 Server Manager 圖形操作介面,選擇故障損壞硬碟後按下滑鼠右鍵選擇「Toggle Drive Light」項目即可觸發故障損壞硬碟亮燈
取消故障硬碟亮燈,只要再次點選 Toggle Drive Light 項目即可。
圖、透過 Server Manager 圖形操作介面,觸發故障損壞硬碟亮燈



新硬碟加入至 Storage Pool

順利拔除故障損壞硬碟並插入新硬碟之後,此時執行「Get-PhysicalDisk |? CanPool -eq True」指令,可以看到新硬碟的 CanPool狀態為 True
倘若,無法順利偵測到新硬碟的相關資訊時,請嘗試將該台 S2D 主機進入維護模式後重新啟動,讓 S2D 主機再次執行完整的 Disk Identification動作。

同樣的,將新硬碟的過濾結果寫入至 $NewDisk參數中,然後執行「Get-StoragePool *S2D* | Add-PhysicalDisk -PhysicalDisks $NewDisk -Verbose」指令,將新硬碟加入至 S2D Storage Pool 當中。
請確保新硬碟尚未初始化、格式化,否則屆時 S2D 將無法順利宣告及使用此顆新硬碟!!
圖、將新硬碟加入至 S2D Storage Pool 當中

此時,再次執行「Get-StoragePool *S2D* | Get-PhysicalDisk」指令,可以看到新硬碟已經順利宣告並加入至 S2D Storage Pool 當中。

圖、新硬碟已經順利宣告並加入至 S2D Storage Pool 當中

此時,透過 Show-PrettyPool.ps1可以看到,新硬碟目前並沒有 Slab 資料區塊寫入其中,所以硬碟空間的使用率為 0 %
有關 Show-PrettyPool.ps1 請參考站內文章 深入剖析 S2D Storage Pool
圖、新硬碟目前沒有 Slab 資料區塊寫入其中

原則上,S2D Cluster 會在後續適當時機執行 S2D Storage Pool Rebalance 的動作,或者你也可以手動執行「Get-StoragePool *S2D* | Optimize-StoragePool」指令,立刻進行 S2D Storage Pool Rebalance 的動作。

圖、立刻進行 S2D Storage Pool Rebalance 的動作

當 S2D Storage Pool Rebalance 動作執行完畢後,再次執行 Show-PrettyPool.ps1 可以看到,新硬碟已經有 Slab 資料區塊寫入其中,所以硬碟空間的使用率上升為 2.9 %

圖、S2D Storage Pool Rebalance 後,新硬碟已經有 Slab 資料區塊寫入其中



參考資源

[站長開講] 聖約翰科大 - SDDC 軟體定義資料中心

$
0
0

前言

很榮幸的在友人的邀請下,擔任 聖約翰科技大學雲端,人工智慧,物聯網暨大數據之生態與展望,產品行銷策略技術與管理」課程的業師,與該校 40 位老師/教授分享我在 SDDC 軟體定義資料中心的一些經驗談。





活動資訊

  • 日期: 2018 年 4 月 11 日、4 月 18 日、5 月 2 日
  • 時間: 19:00 ~ 21:00
  • 地點:國立臺北商業大學 (德育大樓 504A 研討室)

Storage Network 對於 VMware vSAN HCI 的效能影響

$
0
0

前言

VMware vSAN HCI (Hyper-Converged Infrastructures)運作架構,演變至今已經進入第六代。本文主要焦點將會說明,在 VMware vSAN HCI 超融合運作架構中「Storage Network」的重要性。


一般來說, 在乙太網路運作環境中採用「TCP/IP」通訊協定,做為跨主機時的通訊協定,以避免網路傳輸發生不可靠的情況時能夠確保資料一致性,然而這樣的通訊協定及傳輸方式在VMware vSAN HCI 超融合運作架構中,當發生 Network Packet LossNetwork Latency時會對 vSAN 儲存效能造成非常大的影響!!



Network Packet Loss 影響 IOPS 儲存效能

去年在 Las Vegas 舉辦的 VMworld 當中,VMware 的高級解決方案架構師 Andreas Scherr 提到,在 VMware vSAN HCI 超融合運作架構中,不同的 Network Packet Loss 情況 (例如,ESXi 主機網卡品質、網路卡驅動程式、網路線材品質、網路交換器……等,都可能導致 Packet Loss ),將會造成不同程度的 VMware vSAN IOPS 儲存效能下降:

  • 1 % Network Packet Loss 導致 IOPS 下降 10 %
  • 2 % Network Packet Loss 導致 IOPS 下降 32 %
  • 5 % Network Packet Loss 導致 IOPS 下降 77 %
  • 10 % Network Packet Loss 導致 IOPS 下降 92 %
圖、Network Packet Loss 導致 vSAN HCI IOPS 儲存效能下降



Network Latency 影響 IOPS 儲存效能

同樣的,在 VMware vSAN HCI 超融合運作架構中,不同程度的 Network Latency 情況 (例如,網路堆疊延遲、儲存堆疊延遲),也會導致 VMware vSAN IOPS 儲存效能下降:

  • 5 ms Network Latency 導致 IOPS 下降 30 %
  • 10 ms Network Latency 導致 IOPS 下降 50 %
圖、Network Latency 導致 vSAN HCI IOPS 儲存效能下降



如何觀察 vSAN Storage Network 是否發生 Packet Loss

那麼在 VMware vSAN HCI 超融合運作架構中,是否有簡單的方式可以得知 vSAN Storage Network 發生 Network Packet Loss? 從 vSAN 6.6 版本開始,在 vSAN Performance Service當中便新增 Tracking Packet Loss Rates效能指標,管理人員可以透過 vSphere Web Client 管理介面中,直接查看「ESXi 實體網路卡」或者是「vSAN VMkernel Adapters」當中,有關 Tracking Packet Loss Rates 效能指標的情況。

圖、查看 ESXi 實體網路卡的 Packet Loss Rates 效能指標

圖、查看 vSAN VMkernel Adapters 的 Packet Loss Rates 效能指標



VMware vSAN 支援 RDMA 嗎?

事實上,在最新的 VMware vSphere 6.5版本中,擔任 Hypervisor 角色的 ESXi 已經正式支援 RDMA (Remote Direct Memory Access)當中的 RoCE (RDMA over Converged Ethernet),以便於達到「Kernel Bypass、Zero Copy、CPU Offloading」的目的。

同時,您應該從本文討論的內容可知 Storage Network 的高速及穩定性,對於 VMware vSAN HCI 運作架構的儲存效能影響非常巨大。但是,在目前最新的 vSAN 6.6版本當中「尚未」支援整合 RDMA 機制 (相關資訊請參考站內文章 vSphere 6.5 支援 RDMA (RoCE v1 及 RoCE v2)),個人猜測在下一版本的 VMware vSAN 當中,Storage Network 一定會整合 RDMA 機制,以避免 Storage Network 的不穩定進而影響 VMware vSAN HCI 運作架構的儲存效能 👻。



參考資源

ASDK Journey (5) - ASDK Host 開機和關機

$
0
0

前言

開機和關機有什麼好寫文章的? 看到本文的標題,相信螢幕前的你應該心中會想要碎念一下吧 😂?開機和關機確實沒什麼了不起,但是在 Azure Stack 混合雲運作環境中,由於 Azure Stack Infrastructure Role非常多,因此當 Azure Stack 實體主機必須要「開機 / 關機」時,應該要有「順序性」的將相關角色及 VM 虛擬主機關機,否則屆時將容易引起非預期的錯誤發生。




Azure Stack 關機順序

原則上,Azure Stack 混合雲平台的開機和關機動作,都是透過 Azure Stack ERCS VM虛擬主機 (AzS-ERCS01) 所完成。標準操作 AzS-ERCS01虛擬主機的程序,應該是透過 PowerShell JEA (Just Enough Administration)機制,搭配 PEP (Privileged Endpoint Session)為 Azure Stack 混合雲平台進行關機的動作。但是,考量到還在熟悉及測試 Azure Stack 混合雲平台階段就一切從簡吧 😝。

簡單來說,本文將會透過「AZURESTACK\ AzureStackAdmin」網域管理者帳號,登入至  AzS-ERCS01 虛擬主機後,執行「Stop-AzureStack」指令即可達成 Azure Stack 混合雲平台關機的目的。詳細資訊請參考官方文件 Start and stop Azure Stack | Microsoft Docs

圖、登入 AzS-ERCS01 虛擬主機執行 Azure Stack 關機指令

此時,便可以觀察到目前 Azure Stack 混合雲平台關機順序和階段,舉例來說,可以看到關機程序中已經將 AzS-WAS01、AzS-WASP01、AzS-ADSF01等 3 台 VM 虛擬主機及 Azure Stack Infrastructure Role 相關角色關閉,當所有 Azure Stack 角色及 VM 虛擬主機都關機完成後,最後就會將 ASDK 主機關閉。

圖、Azure Stack 關機程序執行中



Azure Stack 開機順序

那麼該如何執行 Azure Stack 混合雲平台的開機作業呢? 預設情況下,當 ASDK (Azure Stack 混合雲平台主機)開機後,將會自動把 AzS-DC01、AzS-ERCS01這 2 台 VM 虛擬主機啟動。

圖、ASDK Host 開機後自動啟動 AzS-DC01、AzS-ERCS01 這 2 台 VM 虛擬主機

圖、AzS-DC01、AzS-ERCS01 這 2 台 VM 虛擬主機組態設定開機後自動啟動

此時,其它 Azure Stack Infrastructure Role 及 VM 虛擬主機則是仍未啟動的狀態。

圖、其它 VM 虛擬主機尚未啟動

同樣的,透過「AZURESTACK\ AzureStackAdmin」網域管理者帳號,登入至  AzS-ERCS01 虛擬主機後,執行「Start-AzureStack」指令即可達成 Azure Stack 混合雲平台開機的目的。詳細資訊請參考官方文件 Start and stop Azure Stack | Microsoft Docs

圖、透過網域管理者帳號登入 AzS-ERCS01 主機

圖、登入 AzS-ERCS01 虛擬主機執行 Azure Stack 開機指令

此時,便可以觀察到整個 Azure Stack 混合雲平台開機順序及階段,舉例來說,可以看到開機程序中已經將 AzS-NC01 等 1 台 VM 虛擬主機及 Azure Stack Infrastructure Role 相關角色啟動。

圖、觀察 Azure Stack 混合雲平台開機順序及階段

原則上,整個  Azure Stack Infrastructure Role 相關角色及 VM 虛擬主機的啟動時間需要約「2 小時」才會完成 (當然,也必須視 ASDK Host 硬體效能及資源使用情況而定)。

圖、所有 Azure Stack VM 虛擬主機啟動完畢

圖、所有 Azure Stack VM 虛擬主機啟動完畢

當 Azure Stack Infrastructure Role 相關角色及 VM 虛擬主機啟動完畢後,最簡單的方式便是開啟 Azure Stack Administration / User Portal 試試:
  • Azure Stack Administration Portal網址為 https://adminportal.local.azurestack.external
  • Azure Stack User Portal網址 https://portal.local.azurestack.external

圖、Azure Stack Administration Portal

圖、Azure Stack User Portal




Azure Stack 驗證測試

倘若 Azure Stack Infrastructure Role 相關角色及 VM 虛擬主機啟動後,發生相關功能無法順利運作或其它非預期的錯誤情況時,管理人員可以登入至  AzS-ERCS01 虛擬主機後,執行「Test-AzureStack」指令即可。詳細資訊請參考官方文件 Run a validation test in Azure Stack | Microsoft Docs

圖、執行 Azure Stack 驗證測試

圖、 Azure Stack 驗證測試執行完畢



Azure Stack Development Kit 攻略系列文章

[站長開講] VMware vSphere 伺服器虛擬化實戰班

$
0
0

活動資訊

日期: 2018 年 4 月 28 日 ~ 6 月 2 日
時間: 09:00 ~ 17:00
地點:資策會 (台中市南屯區公益路二段51號20樓)
報名:資策會課程 - VMware vSphere 伺服器虛擬化實戰班






課程大綱

VMware 虛擬化平台最佳硬體規劃

虛擬化實作環境建置(Nested VMs)

建置 VMware 虛擬化平台

  • 安裝及初始化 ESXi 虛擬化平台
  • 安裝及管理 vCenter Server
  • 建立 DataCenter、Cluster
  • 納管 ESXi 主機

建置虛擬網路環境

  • vSwitch、Port Group、Network Policy、VMkernel Port、NIC Teaming

VM 虛擬主機管理

  • 虛擬磁碟線上擴充(Disk Online Extend)
  • 記憶體空間熱新增(Memory Hot Add)
  • CPU熱新增(CPU Hot Add)
  • 備份及還原
  • P2V及V2V轉換

計畫性停機解決方案

  • 即時遷移(vMotion / DRS)
  • 儲存即時遷移(Storage vMotion / Storage DRS)
  • 無共用儲存即時遷移(vMotion Enhancements)

非計畫性停機解決方案

  • 高可用性(vSphere HA / Fault Tolerance)

[站長開講] Cloud Summit 2018

$
0
0

活動簡介

十年前,「雲端運算」剛萌芽,人們普遍不知為何物,還在摸索如何讓它落地到商業應用。十年後的今天,雲端運算已徹底邁入「生產性的安定期」,如水電服務般理所當然;在多數人眼中,雲端不僅是運算或儲存工具,更是驅動數位創新的核心引擎。

細數過去十年,所有在市場引領風騷的企業,都靠雲端壯大營運實力。同樣這十年,包括行動、社群媒體、大數據、IoT、AR/VR、機器人直到時下最火紅的AI,各種技術無一可離開雲端而獨自發光發熱。

在這麼多企業已經從雲端獲得各式好處之時,您是否也該了解一下這確實能改變企業經營模式的新科技呢? 此時,企業需要先全面檢視資料中心裡頭的運算、儲存、網路、備援備份等各項軟硬體設施,設法讓每一個環節走向現代化,以便於整合私有資料中心與外部公有雲服務,形成跨雲IT架構,創造極致化的資源調配效率,加速實現數位轉型。

展望下一個十年,如何更快更穩地實踐人工智慧、大數據及雲端運算三位一體戰略,將是商業競爭的決勝關鍵。在轉捩時刻,企業的雲端步伐必須繼續前進,更進一步結合邊緣運算,加快商業反應速度,打通數位創新的最後一哩路。

面對波濤洶湧的數位年代,我們需要一個全新概念的雲端暨邊緣運算大會,幫助大家洞見趨勢、掌握更多的可能性。



活動資訊

  • 日期: 2018 年 5 月 16 日 (星期三)
  • 時間: 8:30 ~ 17:00
  • 地點: 台北國際會議中心 (TICC)
  • 報名活動報名



活動內容



148 期 - 善用 Admiral 圖形介面 Photon OS 容器管理超直覺

$
0
0

網管人雜誌

本文刊載於 網管人雜誌第 148 期 - 2018 年 5 月 1 日出刊,NetAdmin 網管人雜誌為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。




前言
實戰 Project Admiral
          安裝 Photon OS 容器平台
          下載及啟用 Admiral 容器服務
          Photon OS 啟用 Docker Remote API 機制
          Admiral 透過 API 納管 Photon OS 主機
          搜尋容器映像檔
          部署單一容器
          整合 Docker Compose 機制部署多個容器
結語





前言

自從容器(Container)技術在 2013 年,由 dotCloud 原本提供 PaaS 服務的公司,將自家管理 PaaS 服務的容器技術「Docker」貢獻給開放源始碼之後,由於 Docker 容器管理技術能夠解決過往開發環境上的困擾,所以 Docker 容器管理技術便迅速開始蔚為風潮,當然虛擬化技術大廠 VMware 並未在這波容器潮流中缺席。

因此,在 2015 年 4 月時 VMware 官方推出 Photon OSProject Lightwave開放原始碼專案,並且在 2016 年 10 月於 VMworld 歐洲大會上,正式發佈 VMware Photon Platform容器平台解決方案(如圖 1 所示),希望能夠幫助企業及組織輕鬆打造「雲端原生應用程式」(Cloud Native Applications)運作環境。

圖 1、VMware Photon Platform容器平台解決方案運作架構示意圖





實戰 Project Admiral

雖然,在 VMware vSphere虛擬化基礎架構中,透過底層輕量級的 Photon OS容器作業系統,能夠更充分發揮容器的運作效能。然而,企業及組織當中的 IT 管理人員,倘若並未熟悉 Linux 運作環境及容器相關指令等實務操作時,可能會無法隨心所欲的管理眾多容器而產生困擾並增加管理成本。

因此,VMware 官方推出容器管理工具 Project Admiral,讓 IT 管理人員可以輕鬆透過 GUI 圖形化介面的方式達到管理容器的目的,包括容器的自動部署及生命週期管理等維運事務。本文便要為讀者詳細說明及實作演練,如何透過 Project Admiral 容器管理工具,輕鬆執行下載、部署、管理、刪除……等工作任務。下列為 Project Admiral 的特色功能:

  • 透過規則機制管理資源:透過 Admiral 容器管理平台以「規則機制」(Rule-Based)的方式,部署容器並管理相關資源。
  • 即時更新運作狀態:採用即時更新的方式提供系統運作資訊,方便 IT 管理人員透過容器平台即時了解容器的運作狀態。
  • 多樣化容器範本管理機制:支援多樣化的容器範本管理機制,以便企業及組織能夠進行邏輯化多容器應用程式部署。

圖 2、Project Admiral 容器管理工具



安裝 Photon OS 容器平台

在本文實作環境中,由於 Project Admiral 容器管理工具是建構在 Photon OS 容器平台之上,所以必須先建立 Photon OS 容器平台運作環境。在本文實作環境中,我們採用新版 Photon OS 1.0 Revision 2版本容器作業系統(如圖 3 所示),並且採用完整的「Photon Full」安裝選項來建構 Photon OS 容器平台。
有關 Photon OS 安裝及組態設定和效能調校的詳細資訊,請參考本刊《第 138 期 - VMware 自家容器作業系統,實戰 Photon OS 基礎安裝》《第 146 期 - 參數架構設定考驗功力,Docker 效能調校有眉角》技術專欄內容。
圖 3、採用新版 Photon OS 1.0 Revision 2 版本容器作業系統

當 Photon OS 容器平台順利安裝完成後,首先以管理者身份帳號登入 Photon OS 容器平台,為 Photon OS 容器平台組態設定網路連線資訊(本文實作環境 IP 位址設定為 10.10.75.31),同時啟用 Docker 容器服務。如圖 4 所示,可以看到目前在 Photon OS 容器平台運作環境中,採用的 Docker 容器服務為 1.12.1版本。
Admiral 支援的 Docker 容器服務版本為 1.12或後續版本,而支援的 Docker Remote API則為 1.24或後續版本。
圖 4、Photon OS 1.0 Revision 2 版本容器平台,預設採用的 Docker 容器服務版本



下載及啟用 Admiral 容器服務

順利為 Photon OS 容器平台組態設定網路連線並啟動容器服務後,由於稍後將會下載及啟用 Admiral 容器管理服務,同時下載的 Admiral 容器服務容器映像檔,來自於網際網路上的 Docker Hub容器映像檔倉庫網站,所以請確保 Photon OS 容器平台主機能夠接觸到網際網路,以避免因為無法下載 Admiral 容器服務的容器映像檔,而發生下載及啟用 Admiral 容器服務失敗的情況。

請在 Photon OS 指令視窗中,鍵入「docker run -d -p 8282:8282 --name admiral vmware/admiral」指令,其中「docker run -d」指令表示稍後下載 Admiral 容器映像檔完成後,啟動的 Admiral 容器服務將會以「背景」(Detach)的方式運作,而「-p 8282:8282」參數則是指定將 Photon OS 主機的 Port 8282 連接埠,對應至啟動 Admiral 容器服務的 Port 8282 連接埠。

至於「--name admiral」則指定啟用的 Admiral 容器服務名稱為 admiral,最後「vmware/admiral」則是指定由 Docker Hub 容器映像檔倉庫網站中,下載的 Admiral 容器映像檔名稱,由於未指定版本號碼所以系統將會自動 latest 版本
本文實作環境中,Admiral 容器映像檔 latest 版本為 0.9.1
上述下載及啟用 Admiral 容器服務的指令執行完成後,請執行「docker ps」指令確認 Admiral 容器服務是否啟用完成,並且 Photon OS 主機及 Admiral 容器服務的連接埠對應服務是否正確(如圖 5 所示)。

圖 5、下載及啟用 Admiral 容器管理服務並確認是否運作正常

下載及啟用 Admiral 容器管理服務後,此時請開啟瀏覽器連結至 Photon OS 主機的 Port 8282 連接埠,本文實作環境的 URL 網址為「http://10.10.75.31:8282」,此時應該能夠順利看到 Admiral 容器服務的管理介面(如圖 6 所示)。

預設情況下,Photon OS 容器平台在下載及啟用 Admiral 容器服務後,已經自動為 Admiral 容器服務的 Port 8282 連接埠,開啟 IPTables 防火牆允許規則,倘若無法順利連結至 Admiral 容器服務管理介面的話,管理人員可以透過「iptables -L」指令,確認目前 Photon OS 容器平台的 IPTables 防火牆規則的載入情況。

圖 6、連結 Admiral 容器服務管理介面

當 IT 管理人員在 Admiral 容器服務管理介面中,按下「Add a Host」鈕嘗試納管 Photon OS 主機時,將會發現目標端 Photon OS 主機回應「Error connecting to http://PhotonOS_IP:2375」錯誤連接訊息(如圖 7 所示),原因在於 Admiral 容器服務管理介面是透過 Docker Remote API 的方式連接至 Photon OS 主機,因此必須為目標端 Photon OS 主機開啟 Docker Remote API 遠端管理連線機制。

圖 7、Admiral 容器服務管理介面,為透過 Docker Remote API 方式連接至 Photon OS 主機



Photon OS 啟用 Docker Remote API 機制

在本文實作環境中,我們將新增另 1 台 Photon OS 主機並組態設定 IP 位址為「10.10.75.32」,同時啟用 Docker Remote API 機制,以便稍後 Admiral 容器服務管理介面能夠順利納管。在開始之前,倘若 Photon OS 主機已經啟用 Docker 容器服務的話,那麼請先執行「systemctl stop docker」指令以便停止 Docker 容器服務,然後才修改 Docker 容器服務組態設定檔內容。

請修改 Docker 容器服務組態設定檔「/etc/default/docker」,加入「DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"」內容後存檔離開。接著,執行「iptables -A INPUT -p tcp --dport 2375 -j ACCEPT」指令新增 IPTables 防火牆允許規則,以便確保 Admiral 容器管理服務,能夠透過 Docker Remote API 機制連接至 Photon OS 主機。

值得注意的是,剛才新增的 IPTables 防火牆允許規則指令,只會在目前的運作狀態中即時套用生效而已,倘若 Photon OS 主機重新啟動後便會消失,將會造成 Docker Remote API 機制再次被 IPTables 防火牆阻擋。因此,建議將 IPTables 防火牆允許規則寫入至「/etc/systemd/scripts/iptables」組態設定檔,確保 Photon OS 主機重新啟動後,仍然自動允許 Docker Remote API 存取機制的 IPTables 防火牆規則。

修改 Docker 容器服務組態設定檔內容完畢後,便可以執行「systemctl start docker」指令啟動 Photon OS 主機的 Docker 容器服務,並且開啟瀏覽器連結「https://10.10.75.32:2375/info」,確認 Docker Remote API 機制是否順利運作(如圖 8 所示)。
在目前最新的 Photon OS 2.0 GA版本中,依上述方式修改並啟用 Docker 容器服務後,將會發現 Docker 容器服務產生相關警告訊息,同時 Photon OS 主機並無法順利 Listen Port 2375連接埠,相信後續 Photon OS 新版本將會修正此一問題。
圖 8、測試 Photon OS 主機是否啟用 Docker Remote API 機制

值得注意的是,上述 Photon OS 主機啟用 Docker Remote API 機制的連線方式,採用的通訊協定為 HTTP 而非 HTTPs 所以並不安全,因此僅適用於企業及組織的研發 / 測試環境中使用,並不適合用於正式線上營運環境。倘若,企業及組織希望使用 HTTPs 通訊協定保障傳輸安全性的話,請參考 VMware Cloud - Native Apps Blog - How to enable Docker Remote API on Photon OS文章內容。



Admiral 透過 API 納管 Photon OS 主機

現在,請再次開啟 Admiral 容器服務管理介面,按下「Add a Host」鈕再次嘗試納管遠端 Photon OS 主機。首先,在 Address 欄位中,請鍵入剛才開啟 Docker Remote API 機制的 Photon OS 主機 IP 位址,本文實作環境為 http://10.10.75.32:2375,在 Placement zone 欄位採用預設的 default-placement-zone即可。

在 Login Credential 的部分,預設採用「憑證」的方式進行使用者身份驗證,本文為了簡化測試 / 研發環境選擇「Manage Credentials」,將使用者身份驗證方式由憑證調整為使用者帳號及密碼,並且鍵入 Photon OS 主機管理者帳號及密碼。

完成使用者身份驗證方式的組態設定後,便可以按下 Verify 鈕進行納管 Photon OS 主機的驗證動作,順利看到顯示 Verified Successfully!驗證成功的訊息後,便可以按下「Add」鈕正式將 Photon OS 主機納管(如圖 9 所示)。
當 Admiral 容器管理服務成功納管 Photon OS 主機後,預設便會在 Photon OS 主機中立即下載並啟用 1 個容器,採用的容器映像檔為 vmware/admiral_agent,版本的部分則是與採用的 Admiral 容器服務相同,並且將 Photon OS主機的 Port 32768對應至 Admiral Agent 容器的 Port 4200連接埠。
圖 9、成功透過 Docker Remote API 納管 Photon OS 主機

在本文實作環境中,我們再新增另 1 台 Photon OS 主機 IP 位址為「10.10.75.33」,並且透過先前的操作方式,啟用 Docker Remote API 機制及新增 IPTables 防火牆允許規則之後,於 Admiral 容器服務管理介面中依序點選「Hosts > Add a Host」項目。

在 Add Host 頁面中,採用與剛才相同的新增納管 Photon OS 主機方式,再加入 1 台容器平台主機至 Admiral 容器服務管理介面中。現在,管理人員在 Admiral 容器服務管理介面中已經可以看到,成功納管「2 台」Photon OS 容器平台主機(如圖 10 所示)。

圖 10、Admiral 容器管理服務順利納管 2 台 Photon OS 容器平台主機



搜尋容器映像檔

順利納管 2 台 Photon OS 容器平台主機後,在 Admiral 容器服務管理介面中點選「Templates」項目,可以馬上看到許多熱門的容器範本。因為,預設情況下已經將「容器倉庫」(Container Registry)指向至網際網路的 Docker Hub,所以便自動載入 Docker Hub 上熱門的容器映像檔範本。

管理人員,也可以在「搜尋欄位」鍵入希望搜尋的容器範本,舉例來說,個人自行打造的 Redis 快取機制高可用性的容器映像檔範本,已經上傳至 Docker Hub 分享給大家,所以鍵入關鍵字 weithenn後進行搜尋即可立即找到(如圖 11 所示)。

此外,倘若管理人員希望管理 Admiral 容器服務的容器倉庫時,只要依序點選「Templates > Manage Registry」項目後,便可以針對容器倉庫進行新增 / 修改 / 刪除……等管理作業。

圖 11、搜尋 Docker Hub 上熱門的容器映像檔範本



部署單一容器

透過 Admiral 容器服務的管理介面,管理人員可以很輕鬆且快速的部署容器,舉例來說,我們實作部署熱門的 Nginx 網頁伺服器容器,只要點選 Templates 並在搜尋欄位中鍵入「nginx」關鍵字,便可以發現由官方維護的「library/nginx」容器映像檔。

搜尋到想要部署的 library/nginx 容器映像檔後按下「Provision」鈕,此時管理畫面右邊將會自動出現 Provision Requests 窗格,顯示指定的 nginx 容器部署狀態。順利下載容器映像檔後,在啟動容器的部署期間,執行狀態將會顯示為「Started(Provisioning)」,待系統確認容器部署作業執行完畢後狀態將轉為「Finished(Completed)」。

圖 12、透過 Admiral 容器服務管理介面快速部署 Nginx 網頁伺服器容器

順利下載及部署 Nginx 網頁伺服器容器之後,請依序點選「Resources > Containers」項目。此時,將會在操作畫面中看到目前 Admiral 容器服務所管理的容器清單,在管理介面中可以看到,除了 Photon OS 容器平台主機因為接受 Admiral 容器服務管理,預設啟動的「Admiral Agent」容器之外,還有剛才下載及部署的 Nginx 網頁伺服器容器(如圖 13 所示)。

圖 13、查看 Admiral 容器服務所管理的容器清單

當管理人員將滑鼠指標移至 Nginx 網頁伺服器容器時,在 Admiral 管理畫面中將會出現四個圖示,分別是「Details、Stop、Remove、Scale」等四項容器管理功能,倘若直接點選滑鼠左鍵的話預設便是進入 Details 視窗。

在容器詳細資訊視窗當中,可以看到容器所使用的 CPU、記憶體、網路等硬體資源使用情況,以及目前 Nginx 網頁伺服器容器的日誌資訊。同時,也可以看到 Nginx 網頁伺服器容器運作在哪台 Photon OS 容器平台主機上,以本文實作環境來說 Nginx 網頁伺服器容器,便是部署在 IP 位址 10.10.75.32 的 Photon OS 容器平台主機上(如圖 14 所示)。
在 Admiral 管理介面中,容器日誌可顯示的時間區段分別是 15 分鐘、30 分鐘、1 小時、2 小時、5 小時。
此外,也可以看到 Nginx 網頁伺服器容器的虛擬網路 IP 位址(本文實作環境為 172.17.0.3),以及將 Photon OS 容器平台主機的哪個連接埠(本文實作環境為 Port 32771),對應到 Nginx 網頁伺服器容器的 Port 80連接埠,並且在管理介面中建立重新導向的超連結,所以只要點選連結即可瀏覽 Nginx 網頁伺服器容器的歡迎頁面。

圖 14、查看 Nginx 網頁伺服器容器的運作資訊

此外,在查看 Nginx 網頁伺服器容器運作資訊的右上角,允許管理人員直接針對容器進行「Stop、Remove、Terminal」的管理動作,舉例來說,可以點選 Terminal 圖示便可開啟新的連線階段,並直接進入到 Nginx 網頁伺服器容器中進行管理作業(如圖 15 所示),當需要離開 Terminal 連線階段只要點選左上角的 Close 圖示即可。
管理人員倘若覺得預設的 Terminal 連線階段視窗太小,可以點選右上角的 Open in new tab鈕,便會在現有的瀏覽器中開啟「新分頁」以全螢幕的方式進行管理作業。
圖 15、開啟新的連線階段進入容器中進行管理作業

在此實作環境中,Nginx 網頁伺服器容器採用的是 Photon OS 容器平台主機,「隨機」指派的連接埠進行對應,倘若管理人員希望在部署容器時採用不同的組態設定時,只要在按下 Provision 鈕進行部署以前,選擇「Enter additional info」項目即可採用不同的組態設定。

舉例來說,倘若希望採用 Photon OS 容器平台主機的 Port 80 連接埠,對應到屆時部署 Nginx 網頁伺服器容器的 Port 80 連接埠,那麼只要點選「Network」項目,然後分別在 Port Bindings 欄位填入「Host Port」及「Container Port」皆為 80 連接埠後(如圖 16 所示),按下「Save as Template」儲存為容器範本後,再按下 Provision 鈕進行部署作業即可。
Admiral 容器管理服務,支援調整的組態項目共有 Basic、Network、Storage、Policy、Environment、Health Config、Log Config……等七大項。
圖 16、採用不同的組態設定部署 Nginx 網頁伺服器容器



整合 Docker Compose 機制部署多個容器

在容器的實務應用情境中往往不會只部署單一容器,而是透過 Docker Compose 或 Docker Stack Deploy 機制,搭配 YAML 檔案一次部署多個容器達到應用程式互相串聯的目的,舉例來說,管理人員可以透過 Docker Compose 機制,一次部署 Wordpress 部落格容器及 MySQL 資料庫容器。

透過 Admiral 容器管理服務讓這件事情更輕鬆的完成,請在 Admiral 管理介面中依序點選「Templates >View:Templates」,在 Found Templates 頁面中點選「Import Template or Docker Compose」圖示。

此時,在 Import Template 視窗中,管理人員可以按下 Load from File 鈕,將已經撰寫好的 YAML 檔案上傳,或者是直接在下方窗格中將 YAML 檔案內容貼上,然後按下「Import」鈕即可執行匯入的動作。

值得注意的是,在目前的 Admiral 容器管理服務中,僅支援舊版的 Docker Compose v2尚未支援最新的 Docker Compose v3版本,相信後續新版的 Admiral 容器管理服務便會支援。因此,倘若管理人員上傳的 YAML 檔案,或者複製貼上的 YAML 內容為 Docker Compose v3 版本,則 Admiral 容器管理服務便會出現錯誤訊息,提示目前僅支援 Docker Compose v2 格式資訊(如圖 17 所示)。
預設儲存的範本名稱為「Docker Compose」加上範本建立的「日期及時間」,管理人員可以依照此範本功能進行重新命名。
圖 17、目前的 Admiral 容器管理服務僅支援舊版 Docker Compose v2

建立好 Docker Compose 範本後,即可按下 Provision 鈕進行部署的動作。此時,Admiral 容器管理服務便會依照剛才所撰寫的 YAML 內容,透過 Docker Compose 機制下載容器映像檔,並部署容器到 Photon OS 容器平台主機。
預設情況下,Admiral 容器管理服務會將多個容器部署作業,以負載平衡的方式平均部署到不同台 Photon OS 容器平台主機上。
當容器佈署作業完成後,同樣可以在「Resources > Containers」看到剛才所部署的容器,然而此次我們是透過 Docker Compose 機制同時部署多個容器,所以可以在「Resources > Applications」中看到該項目(本文實作環境項目名稱為 MyBlog),進入後可以看到此應用程式項目內有 2 個子容器(如圖 18 所示),也就是剛才透過 Docker Compose 機制部署的 Wordpress 部落格容器及 MySQL 資料庫容器,如此一來管理人員可以採用「應用程式」為單位來管理容器,降低企業及組織對於容器的管理成本。

圖 18、以應用程式為單位來管理容器多個容器

因此,當我們希望刪除這 2 個透過 Docker Compose 機制所部署的容器時,只要依序點選「Resources > Application > MyBlog > Remove」項目,便可以「一次」刪除 Wordpress 部落格容器及 MySQL 資料庫容器,而無須個別切換到所屬容器然後才執行停止或移除容器的管理動作。

圖 19、一次刪除 Wordpress 部落格容器及 MySQL 資料庫容器





結語

透過本文的說明及實作相信讀者已經了解,管理人員只要透過 Admiral 容器管理服務,便可以輕鬆在 GUI 圖形畫面中,達到快速下載容器映像檔和部署容器的目的。同時,透過 Admiral 容器管理服務強大的功能,即使管理人員尚未熟悉 Docker 的 CLI 管理指令,同樣能夠透過 Admiral 容器服務管理介面達到管理容器的目的。

Python 旅程

$
0
0

前言

廢話不多說,開始玩 Python吧 😁。







【安裝】

  • Python Journey (1) - 在 Windows 10 中安裝 Python 3.6.5






















Python Journey (1) - 在 Windows 10 中安裝 Python 3.6.5

$
0
0

前言

想玩 Python? 當然要先把可以運作 Python 的環境建起來。本文,將會說明在 Windows 10 環境中,如何安裝目前最新 Python 3 Release版本 (本文環境為 Python 3.6.5)。






下載及安裝 Python for Windows

請至 Python 官網,下載最後的 Python 3 Release 版本,本文為下載 Python 3.6.5 (2018-03-28) - Windows x86-64 executable installer版本。

圖、下載 Python 3.6.5 for Windows

使用系統管理者權限進行安裝,記得勾選「Add Python 3.6 to PATH」選項,如此一來便會在安裝程序中順便將 Python 環境寫入「環境變數」當中,稍後開啟命令提示字元便可以方便執行 python 相關指令。

圖、勾選 Add Python 3.6 to PATH

安裝完成後,預設會有無法執行超過 260 字元的限制,點選「Disable path length limit」項目後即可。

圖、解除 260 字元的限制

再次確認 Windows 環境變數,是否已經在 Python 安裝過程中加入安裝路徑。

圖、確認 Python 加入環境變數中





確認 Python 版本及進入互動模式

安裝完畢後,此時可以開啟命令提示字元鍵入「python --version」指令,此時便會顯示所安裝的 Python 版本,鍵入「python」指令便可以直接進入 Python 互動模式,例如,鍵入「print ("My Python Hello World!")」印出字串,欲離開 Python 互動模式只要鍵入「exit ()」或按下「Ctrl + Z」組合鍵即可。

圖、確認 Python 版本及進入 Python 互動模式

也可以透過開啟「IDLE (Python 3.6  64-bit」進入 Python 互動模式。

圖、透過 IDLE 進入 Python 互動模式





安裝 Jupyter Notebook 環境

簡單來說,透過 Jupyter可以在瀏覽器環境中直接編寫及執行 Python。請在命令提示字元視窗中,鍵入「python -m pip install --upgrade pip」及「python -m pip install jupyter」指令即可安裝 Jupyter (詳細資訊請參考 Project Jupyter | Install官方文件說明)。

圖、安裝 Jupyter

安裝完畢後,鍵入「jupyter notebook」指令,系統便會自動開啟瀏覽器至 Jupyter Notebook 頁面。

圖、開啟 Jupyter Notebook

開啟的 Jupyter Notebook 頁面,只要依序點選「New > Python 3」便可開啟新頁面至 Python 互動模式。

圖、開啟新頁面至 Python 互動模式

此時,便進入 Python 互動模式,例如,使用簡單的數字計算功能。

圖、使用簡單的數字計算功能





VS Code 編輯工具

在編輯工具方面,我選擇採用 VS Code (Visual Studio Code)來當成練習 Python 的編輯工具。







Pythonanywhere

倘若,連 Python 環境都不想安裝只想先玩玩的話,可以透過 Pythonanywhere直接就有 Python 環境可以練習。

Python Journey (2) - VS Code 基本使用技巧

$
0
0

前言

在前一篇文章 (Python Journey (1) - 在 Windows 10 中安裝 Python 3.6.5) 中,我們已經把 Python 執行環境安裝完成,在開始練習 Python 之前應該先找個好用的編輯工具。在本文中,我將會說明一些有關 VS Code (Visual Studio Code)工具的使用技巧。





開啟 VS Code 工具

當安裝完 VS Code 工具之後,除了透過桌面上的 Visual Studio Code 圖示開啟 VS Code 工具之外,也可以在「命令提示字元 PowerShell」指令視窗當中鍵入「code」執行後,系統也會自動開啟 VS Code 工具。

圖、開啟 VS Code 工具





確認 Python Interpreter 狀態

在開始練習 Python 前,先在 VS Code 工具中確認 Python Interpreter 狀態,請按下「Ctrl + Shift + P」組合鍵,然後鍵入「Python: Select Interpreter」關鍵字,確認採用的 Python 執行版本及路徑是否正確。

圖、鍵入 Python: Select Interpreter 關鍵字

圖、確認 Python 執行版本及路徑

此外,也可以在 VS Code 工具下方快速得知 Python Interpreter 資訊。

圖、在 VS Code 工具下方快速得知 Python Interpreter 資訊





安裝 VS Code Extentsions

VS Code 工具支援多種開發語言及 Extensions,在本文操作環境中我們在 VS Code 工具中安裝 Python extension for Visual Studio Code,以便屆時 Python 開發環境能夠具備 IntelliSense, Auto-Completions, Linting, formatting……等功能。相關資訊請參考 Get Started Tutorial with Python in Visual Studio Code文章。

為 VS Code 安裝 Python extension for Visual Studio Code 非常容易,請在 VS Code 中點選左側「Extensions」圖示,然後鍵入關鍵字「Python」即可找到,然後按下「Install」即可進行安裝。

圖、安裝 Python Extensions for VS Code

當 Python extension for Visual Studio Code 安裝完成後,請記得點選「Reload」讓 VS Code 工具能夠讓 Python Extension 功能立即套用生效。

圖、載入 Python Extension

圖、Python Extension 套用生效





IntelliSense / Auto-Completion 機制

當 Python extension for Visual Studio Code 安裝完成後,在 VS Code 工具撰寫 Python 時便具備 IntelliSense / Auto-Completion機制。

舉例來說,鍵入 print 這個 Python 環境印出 Values 時,在鍵入「pri」的過程中,此時 VS Code 就會自動列出跟 pri 相關及 print 的功能說明 (IntelliSense 機制),然後配合「Tab 鍵」便會自動完成 print 而不用手動鍵入完整的 print (Auto-Completion 機制)。相關資訊請參考 IntelliSense in Visual Studio Code文章。

圖、VS Code IntelliSense / Auto-Completion 機制

此外,以上述練習來說,因為已經定義了 msg 這個變數,此時 IntelliSense 還能幫助提供處理這個字串的方法。

圖、VS Code IntelliSense 機制





在 VS Code 工具中執行 Python

在 VS Code 工具中,我們練習 Python 語法後能否直接執行? 當然可以!! 事實上,在 VS Code 工具中可以有多種方式執行練習中的 Python 語法。

首先,我們可以透過「Run Python File in Terminal」方式執行。只要在編輯的 .py 檔案中按下滑鼠右鍵選擇「Run Python File in Terminal」選項,那麼 VS Code 就會在下方的 Terminal中執行 Python 檔案。

圖、在 VS Code 工具中執行 Python

第 2 種方式,可以在撰寫好 Python 之後,直接在 VS Code 工具中 Terminal 視窗中,鍵入「python + .py 檔案名稱」即可,例如,本文操作環境便是鍵入「python test.py」即可。

圖、在 Terminal 視窗中執行 Python 檔案

第 3 種方式,請在 VS Code 工具中依序點選「Tasks > Configure Tasks」選項後,組態設定 tasks.json內容,詳細資訊請參考:



本文操作環境 tasks.json 內容如下:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Python Code",
            "type": "process",
            "command": "${config:python.pythonPath}",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}


後續,即可透過「Ctrl + Shift + B」組合鍵執行 Python 檔案內容。

圖、透過 Run Build Task 方式執行 Python

第 4 種方式,可以透過 Debug 的方式,針對 Python 檔案進行「執行 / 除錯」的動作。請在 VS Code 工具中依序點選「Debug > Start Debugging」選項,或按下「F5 鍵」即可。

圖、針對 Python 檔案執行及除錯

倘若,VS Code 工具下方的 Terminal 視窗被關閉時,可以透過下列 3 種方式快速開啟:

  • Ctrl + Shfit + P 組合鍵 > 鍵入 Python: Create Terminal
  • 點選 View > Integrated Terminal
  • Ctrl + ` 組合鍵






其它操作小技巧

在後續編寫 Python 時,有可能同時更改某個變數或字串之類的需求,傳統方式就一個一個去改但這樣容易漏掉。此時,可以透過同時修改的機制來處理,舉例來說,在本文操作環境中定義變數 msg 然後印出變數 msg 內容,我們可以先透過滑鼠點選其中一個 msg,這時 Python 檔案中 msg 都會亮起。

圖、點選欲同時修改關鍵字 msg

此時,請按下「Ctrl + Shift + L」組合鍵便會選取所有的 msg,然後鍵入要更改的關鍵字,例如,更改為 message 便會發現 2 個 msg 一起變更。

圖、同時將關鍵字 msg 修改為 message

預設情況下,通常需要「手動」按下「Ctrl + S」組合鍵才會進行存檔的動作,我們可以透過「User Settings」,達到「自動定時存檔」的機制。請在 VS Code 工具中依序點選「File > Preferences > Settings」,然後透過關鍵字「autoSave」即可找到,在本文操作環境自訂每隔 60 秒便自動儲存。

圖、讓 VS Code 自動每 60 秒存檔





教學影片

可以參考 Visual Studio Code 相關教學影片






參考資源






Python 系列文章

VMware vSphere 6.7 攻略 - 系列文章

Viewing all 590 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>