將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2017/7/31

針對虛擬平台最佳化設計 結合Docker管理建構微服務

VMware自家容器作業系統 實戰Photon OS基礎安裝

王偉任
若想管理好VMware虛擬化運作環境,就絕不能錯過VMware官方親手打造及整合並且最佳化運作於VMware虛擬化基礎架構的Photon OS容器平台,不管是建立、執行或管理容器都非常地簡單便利。


接著,透過「docker images」指令查看目前Photon OS容器平台中Docker映像檔資訊。此外,管理人員可以再次執行「docker info」指令查詢,這次便會發現Containers欄位的變化「0 → 1」,表示目前Photon OS容器平台中有一個容器,而Stopped欄位的變化「0 → 1」表示目前狀態為停止的容器為一個,以及Images欄位的變化「0 → 1」代表目前共有一個Docker容器映像檔。同時,預設下載的Docker容器映像檔,將會存放在Docker根目錄「/var/lib/docker」內,如圖17所示。


▲ 圖17 查詢Photon OS容器平台中Docker映像檔資訊。







執行第二個容器Nginx網頁伺服器

經過簡單的容器執行操作熱身後,接著實作在實務Docker容器環境內常會使用到的Nginx網頁伺服器。

值得注意的是,因為在本文實作環境中採用「Photon Full」安裝選項,所以在預設情況下已經自動啟動httpd系統服務並占用TCP Port 80,所以必須把httpd系統服務停止並且停用自動啟動機制,以避免與稍後所要實作的Nginx網頁伺服器容器環境發生Listen Port衝突的情況。

如圖18所示,首先執行「netstat -tunpl | grep ":80"」指令,將會看到系統確實已經啟動httpd系統服務並占用TCP Port 80,所以使用「systemctl stop httpd」指令停止httpd系統服務,此時httpd系統服務已經停止並釋放TCP Port 80的使用權。


▲ 圖18 停止及停用httpd系統服務,以避免跟Nginx網頁伺服器容器環境發生衝突的情況。


接著,執行「systemctl disable httpd」指令,將httpd系統服務在開機或重新啟動時會自動啟動的機制關閉,以避免與Nginx網頁伺服器容器發生Listen Port衝突的情況。然後,執行「systemctl list-unit-files --type service | grep httpd」指令,確認停用httpd系統服務的動作是否套用生效。

確認停止及停用httpd系統服務後,便可以鍵入「docker run -d -p 80:80 vmwarecna/nginx」指令,執行下載及執行Nginx網頁伺服器容器環境的動作。同樣地,可以看到目前Photon OS容器平台並沒有Nginx網頁伺服器容器映像檔,所以仍自動透過預設的系統設定連線至網際網路的Docker Hub公開映像檔存放庫,下載vmwarecna下的nginx容器映像檔並執行它。

完成下載和執行Nginx網頁伺服器容器環境的動作後,接著執行「docker images」指令,將會發現目前Photon OS容器平台列出的Docker容器映像檔清單中,多出了「vmwarecna/nginx」項目並且占用的儲存空間為93.48MB。

然後執行「docker ps」指令,如圖19所示就可以看到在PORTS欄位內會顯示「0.0.0.0:80 -> 80/tcp」的資訊,這表示當外部連線要求送至Photon OS容器平台後,將會透過Docker容器虛擬網路環境的Bridge機制,轉導向連線至Nginx網頁伺服器容器的TCP Port 80。


▲ 圖19 下載並執行Nginx網頁伺服器容器環境。


然而,管理人員可能會發現開啟瀏覽器,嘗試連結Photon OS容器平台的TCP Port 80時,卻無法看到應該看到的Nginx網頁伺服器的歡迎頁面。主要原因在於,如圖20所示預設情況下,Photon OS容器平台的IPTables防火牆規則僅允許放行TCP Port 22的流量,其餘則未開放並全部阻擋,所以才無法看到Nginx網頁伺服器的歡迎頁面。


▲ 圖20 IPTables防火牆封包進出、轉送、狀態等運作架構示意圖。


因此,在本文實作環境中開放允許TCP Port 80的流量通過IPTables防火牆,以及在實務上常會用來判斷Photon OS容器平台是否ping回應的ICMP通訊協定。修改「/etc/systemd/scripts/iptables」IPTables防火牆組態設定檔,在允許放行SSH流量通過的防火牆規則下方,加上如下兩行允許放行TCP Port 80及ICMP通訊協定的IPTables防火牆規則後存檔離開:




最後,如圖21所示,鍵入「systemctl restart iptables」指令重新啟動IPTables防火牆系統服務,新的IPTables防火牆規則便套用生效。此時,便可以使用「systemctl status iptables」指令確認重新啟動後,IPTables防火牆系統服務是否正常運作中,以及使用「iptables -L」指令列出目前IPTables防火牆規則,就會發現允許放行TCP Port 80以及ICMP通訊協定的IPTables防火牆規則已經套用生效。


▲ 圖21 放行TCP Port 80及ICMP通訊協定,並確認IPTables防火牆規則已經套用生效。


確認IPTables防火牆允許TCP Port 80流量通過後,開啟瀏覽器再次確認能否看到Nginx網頁伺服器的歡迎頁面,結果當然是沒有問題,可以順利看到Nginx網頁伺服器歡迎頁面,如圖22所示。


▲ 圖22 確認是否能夠順利看到Nginx網頁伺服器歡迎頁面。




結語

透過本文的說明及實作,相信大家已經了解針對VMware虛擬化運作環境最佳化的Photon OS容器平台,不管是在建立、執行、管理容器都非常簡單易用,確實可以協助企業及組織在將工作負載邁向微服務的路上更加輕鬆。

<本文作者:王偉任,Microsoft MVP及VMware vExpert。早期主要研究Linux/FreeBSD各項整合應用,目前則專注於Microsoft及VMware虛擬化技術及混合雲運作架構,部落格weithenn.org。>

這篇文章讓你覺得滿意不滿意
送出
相關文章
秒速容器服務 挺應用轉型
網路層貫通地端與雲端 實現容器隨需遷移
拆解龐大核心系統 微服務仍保障既有投資
數位商業模式箭在弦上 關鍵應用系統轉型助攻
混合雲平台全面容器化 K8S一統應用架構江山
留言
顯示暱稱:
留言內容:
送出