:::

ownCloud啟用應用程式錯誤處理 / ownClound Enable App Error

ownCloud啟用應用程式錯誤處理 / ownClound Enable App Error

2014-07-28_193655_thumb

ownCloud中啟用應用程式(App)時如果顯示錯誤訊息。表示應用程式的資料夾名稱未正確設定。請參考[App]/appinfo/info.xml中的<id>來設定資料夾名稱。

If you got error message when you want to enable an app in ownCloud, you should rename your app’s directory name following the info.xml.


啟用應用程式的錯誤訊息 / Enable App Error Message

我在安裝Files Move應用程式 (App)中最後一個步驟遇到了以下錯誤訊息:

An exception occurred while executing 'INSERT INTO `oc_appconfig` ( `appid`, `configkey`, `configvalue` ) VALUES( ?, ?, ? )': SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'appid' cannot be null

我發現很多人都有這個問題,而根據ownCloud論壇中Rancor的說明,應該要參考info.xml來設定應用程式的資料夾名稱。

應用程式的資料夾名稱 / App’s Directory Name

2014-07-28_192006_thumb[1]

一般從ownCloud下載的應用程式,其資料夾名稱都需要調整。例如Files move應用程式下載後的資料夾名稱為「oc_files_move-master」,這時候需要參考應用程式資料夾底下的[App]/appinfo/info.xml的設定來修改。

info.xml的ID設定 / ID Configuration in info.xml

根據ownCloud論壇中Rancor的說明,資料夾名稱應該參考info.xml。

2014-07-28_194925

上圖是Files Move的info.xml,注意到<id>files_mv</id>這一段設定,代表資料夾名稱應該是files_mv

重新啟用應用程式 / Enable App Again

2014-07-28_193312_thumb[2]

接著再重新讀取網頁,然後重新啟用應用程式。這樣子應該就可以正常啟用應用程式了。

(more...)

Note系列的多重視窗管理器 Multi Window Manager (Phone) / Multi Window Manager for Note Devices

布丁布丁吃布丁

Note系列的多重視窗管理器 Multi Window Manager (Phone) / Multi Window Manager for Note Devices

image

Multi Window Manager (Phone)這個APP可以讓你自訂Samsung Galaxy Note系列多重視窗可以使用的APP,讓你真正可以用多重視窗一次開啟兩個任何的APP。不過使用Multi Windows Manager必須root。推薦Samsung Galaxy Note系列使用者安裝。

If you have Samsung Galaxy Note devices, you can use Multi Window Manager (Phone) to configure your multi window setting. With Multi Window Manager (Phone), you can use more Apps with multi window.


Note系列的多重視窗功能 / Multi Window

20140723 [BLOG] Multi Window Manager - 6

我自己使用了Samsung Galaxy Note 8平板電腦,這臺平板電腦的特色之一就是具備了多重視窗的功能。多重視窗可以讓我一邊讀論文,一邊上網查詢其他事物。一般的手機一次只能顯示一個APP畫面,而多重視窗則可以活用平板的大螢幕,工作效率可以高很多。

可惜Note系列預設允許放入的APP不多,除了Google的Chrome地圖之外,剩下就是Note內建的APP。Android的使用者當然都有自己喜歡的APP。以我來說,瀏覽器我喜歡用Firefox、檔案管理我用ES文檔瀏覽器。但是這些都不被多重視窗所支援,只能像一般的手機一樣,用整個畫面開啟一個APP。

但是後來發現,其實有很多Note系列的使用者在修改多重視窗的設定,讓Note系列的多重視窗可以使用更多APP。

多重視窗管理器 / Multi Window Manager

image

Multi Window Manager (phone) 簡稱MW Manager,可以用來簡單地重新修改多重視窗可以使用的APP清單。MW Manager是使用Xposed框架的一個模組,而要使用Xposed框架則必須先經過root。因此在此我也順便整理一下Samsung Galaxy Note 8的安裝方式。

安裝設備:Samsung Galaxy Note 8 / Device: Samsung Galaxy Note 8

Screenshots_2014-07-23-20-34-55

我這臺Samsung Galaxy Note 8是有3G模組的GT-N5100,Android版本是4.1.2。

1. 取得Root權限 / Root Device

其實這臺我買來不久就Root了,可是我已經忘記當初是怎麽做的,大概是因為做法簡單到讓我沒有留下深刻的印象吧。所以這個Root的部分就拿DavidGuo在Mobile01分享的「(10/23) Note 8.0 root 心得分享」來做參考,重點摘錄如下:

  1. 先確定您的版本,3G版型號為N5100,Wifi版型號為N5110,LTE版型號為N5120。
  2. 下載CF-root檔案:到CF-Auto-Root官網找到自己的型號下載。若懶的找的話,鏈接在此:
    1. 3G版Wifi版 
    2. 布丁備份:3G版Wifi版
  3. 下載完後解開它,會有三個檔案。
  4. 關機後。按著「Power+Home+Vol Down」進「Download Mode警告畫面」,再按一下「Vol Up」真的進入Download Mode(此畫面也可以看你刷過幾次機。)
  5. 接下來執行Odin(在剛剛解開的檔案中), 點「PDA」,讀入剛剛的tar.md5檔,接下來按下Start就OK了。

Note 8的root不需要鏈接電腦,操作挺簡單的,也感謝CF-Auto-Root製作的強大工具啊。

2. 下載Xposed框架APK檔案 / Download Xposed Framework APK

挨踢路人甲日前介紹了Xposed框架,他的教學非常完整。附帶一提,挨踢路人甲這篇也同時介紹了Xposed框架中強大的GravityBox,我的Sony Xperia TX用它開啟了很多很棒的功能,未來有機會我再介紹GravityBox。

回到正題,Xposed框架並沒有在Google Play上架,必須到XDA下載Xposed installer:

3. 安裝Xposed框架 / Install Xposed Framework

下載並安裝之後,接著開啟Xposed Installer。

20140723 [BLOG] Multi Window Manager - 4 annotated

然後到 框架 中,點下「安裝/更新」按鈕。Xposed框架會跳出警告,確認安裝並等待一陣子之後,Xposed框架會顯示安裝完成,並要你重新啟動。但我們現在先不重新啟動,之後MW Manager模組設定完之後也需要重新啟動,倒時候再一併重新啟動就好,現在先退出Xposed吧。

4. 安裝Multi Window Manager / 4. Install Multi Window Manager

2014-07-23_210559

Xposed框架本身並沒有在Google Play上架,但是他很多模組都可以在Google Play下載,MW Manger也是其中一個。

請下載並安裝吧。

5. 啟用MW Manager模組 / Enable MW Manager Module

剛安裝完的MW Manager並無法立即生效,還必須先在Xposed框架中啟動才行。

image

請開啟Xposed Installer,到「模組」中,按下「MW Manager」(如上圖所示)右邊的核取框,啟用MW Manager。

然後我們再按下MW Manager的圖示,進入MW Manager設定。

6. 設定MW Manager / MW Manager Setup

20140723 [BLOG] Multi Window Manager - 2- Annotated

進入MW Manager之後,你會看到一長串你安裝的APP清單。接著,請你把想要在多重視窗中使用的APP右邊的核取方塊打勾。例如超級任天堂模擬器Snes9x EX+

勾選完成之後,再按下右上角的儲存圖示 image儲存。

image

跳出這個對話框時,表示儲存完成,然後請按下「Reboot」重新啟動即可。

註:預設MW Manager安裝後使用的是白色主題,拍攝這張圖片的時候,我已經啟用了暗色主題,所以看起來跟剛安裝好之後有點不一樣。

7. 完成 / Completed

Screenshots_2014-07-23-19-04-17 - a

這時候打開多重視窗的編輯功能時(可參考3C布政司中axiang1980的介紹「讓GALAXY Note II更強的「多重視窗」功能來了!LJA版韌體更新與使用心得分享!」),就可加入剛剛設定的APP囉。

20140723 [BLOG] Multi Window Manager - 7

於是像這樣子用下視窗玩遊戲、用上視窗查詢遊戲攻略,也變得相當容易了!


結語:Note 8助我良多 / Conclusion: Thank You, Note 8

DSC_0518

這臺Note 8我是在臺灣剛上市不久的時候買下來的,直到現在,我依然覺得這是一臺很好用的平板電腦。

20140311 婷芸的標註地圖草稿_02

Note 8並非只有平板的大螢幕,它8吋的大小也很適合拿在手上與放入包包中,更重要的是它具備了一下兩個功能:

  • S Pen觸控筆:我已經非常習慣使用S Pen規劃筆記,還有上面的截圖也都是用S Pen操作,非常方便。
  • 多重視窗:就是上面介紹的東西。

今天總算開啟了多重視窗原本的限制,讓我能夠更加活用多重視窗的功能,真是感動。

不過我今年年初推薦了朋友購買了這臺,結果到後來讓朋友都在上網看漫畫跟影片,這好像是另一個令人擔心的缺點啊……

(more...)

修復Android手機無聲的問題 / Android Phone No Sound Problem Repair

布丁布丁吃布丁

修復Android手機無聲的問題 / Android Phone No Sound Problem Repair

20140721_174009

當Android手機的電話無法從聽筒聽到聲音,卻可以用擴音聽到聲音時,很有可能是因為耳機偵測錯誤造成的問題。此時只要重新插入、拔出耳機,就能夠修復這個問題。

When you can not hear sound from your Android phone and you can use amplifier to play sound, it may be caused by  the headphones incorrectly detected problem. To repair this problem, you can use a headphone to plug in and unplug.


聽筒無聲的問題 / No Sound Problem

今天我接到電話時,我完全聽不到對方的聲音。幾經測試之後,發現我的Android 4.1 (Sony Xperia TX)手機不論是撥號還是接聽,對方的聲音完全是聽不見。我的聲音可以傳遞給對方,表示麥克風正常。若是按擴音,也可以聽到對方的聲音。我試著開機,但是問題仍舊相同。因此這可能也不是軟體的問題,而是內建聽筒的問題。

Android這種智慧型手機有個特色,就是能夠偵測耳機是否插入,決定聲音的輸出是要從內建聽筒、擴音器還是耳機輸出孔。雖然當時我並沒有插著耳機,但是我平時很常使用耳機聽音樂,這可能導致Android耳機偵測誤判了。

修復耳機偵測錯誤的問題 / Repair Headphones Incorrectly Detected Problem

我使用以下的方法修復,做法很簡單。

  1. 找一個耳機,插到手機上。若耳機正確偵測,通知欄會出現手機的圖示。
    20140721_174437
  2. 拔出耳機,確認通知欄的耳機圖示消失,表示解除耳機模式。
    20140721_174514

這樣子再打電話就有聲音了。

我看網路上大家都是打到客服去問,結果受到的答案不是重開機就是回覆原廠設定,事實上只要找個耳機重新插入就能解決問題,請不要這麼大費周章喔。

(more...)

適合程式碼的等寬字型 M+ 1m / The Monospaced Font for Programming: M+ 1m

布丁布丁吃布丁

適合程式碼的等寬字型 M+ 1m / The Monospaced Font for Programming: M+ 1m

image_thumb

日前在Linuxeden上看到了關於「最佳编程字体:M+」的介紹,不過原本M+ FONTS網站中並沒有提供Windows的安裝方法,後來我是在FONT SQUIRREL找到可安裝的「M+ 1m」字形檔案。其中我覺得「M+ 1m medium」看起來最順眼,在此跟大家分享。

Based on Tom MacWright's recommend , I try to use M+ font for programming. The monospaced fonts in M+ fonts is “M+ 1m”. You can download M+ 1m from Font Squirrel.


等寬字型與程式寫作 / Monospaced Font and Programming

寫程式的時候大多是在跟英文奮戰,而其中字型扮演著非常重要的角色。英文字型不僅要清晰、容易辨識,更重要的是要讓每一個字都維持在相同的寬度。

舉例來說,傳統文件上常用的Times New Roman是一種比例字型(Proportional Font),套用到XML檔案的結果:

image_thumb2

這篇要介紹的M+ 1m則是等寬字型(Monospaced Font),套用到XML會長得像這樣子:

image_thumb3

你可以發現到這兩種字型有很大的差別。Times New Roman看起來必要美觀、自然,但是因為字卻像是纏在一起一樣,不太容易閱讀;M+ 1m看起來則是清楚許多,因為每個字跟每個字之間都保持寬度,所以也很容易對照上下不同行之間的程式碼。

跟比例字型常用與一般正規單字不同,程式碼的英文字通常會以特殊定義的字句與符號組成,因此閱讀程式碼的時候並不是像一般文章是以單字在閱讀,而是要一個一個字的閱讀。這也就是為什麼程式碼的字型不應該採用Times New Roman這種比例字型,而應該採用像是M+ 1m這種等寬字型。

而原本推薦網頁選用M+的理由在於M+每一個字都壓縮到很小的寬度。同樣寬度的螢幕中,使用M+可以顯示更多的文字。

以下是另一種等寬字體「Simplified Arabic Fixed」的顯示結果,這種字體的寬度比較大,讀起來比較可以喘口氣,但是可顯示的文字也就比較少了。

image_thumb6


M+ 1m字型下載與安裝 / Download and Install M+ 1m Fonts

介紹M+字型的網頁中提供了所有M+系列字型檔案(ttf, True Type)的ZIP壓縮檔,下載網址是:

不過其中僅有M+ 1m系列才是我們要的等寬字型,你也可以在Font Squirrel找到並下載M+ 1m:

下載並解壓縮ZIP檔案(可以使用7z解壓縮)之後,可以看到許多.ttf的字型檔案。Windows安裝ttf字型檔案的方法請看微軟的說明

M+ 1m中還有許多不同寬度的字型可供選擇,依照瘦到胖共有5種字型,個別是「M+ 1m thin」、「M+ 1m light」、「M+ 1m regular」、「M+ 1m medium」、「M+ 1m bold」,差別請看下圖:

image_thumb5

其中我個人覺得「mplus-1m-medium.ttf」看起來比較順眼、辨識度充足,目前我先用這個字型來寫程式看看。

M+ 1m中文支援不佳 / M+ 1m Doesn’t Support All Chinese

但是M+ 1m主要適用於英文、日文跟部分漢字上,套用在中文字上面會有很多缺漏的地方,如下圖中的「檔」、「缺點」、「沒」。

image_thumb7

因此M+ 1m到底好用與否,我還要用一段時間再來評估看看。

(more...)

設定Zentyal DHCP伺服器 / Setup DHCP Server in Zentyal

設定Zentyal DHCP伺服器 / Setup DHCP Server in Zentyal

image

這一份教學說明如何設定ZentyalDHCP伺服器,以提供動態IP給區域網路中的伺服器使用。

In this article, I will describe the steps to setup DHCP server in Zentyal. DHCP server could provide dynamic network configuration for servers in DLLL-CIAS local network.

  • 對應講義:PART-2-STEP-1-3-2
  • 主題:設定Zentyal DHCP伺服器 

教學目錄 / Table of Contents

  1. Zentyal 3.0.2安裝準備
  2. 安裝Zentyal 3.0.2
  3. DLLL-CIAS之Zentyal網路設定
  4. [目前在此篇 >> ] 設定Zentyal DHCP伺服器
  5. Zentyal安裝DLLL-CIAS Router雲端網路模組
  6. Zentyal設定DLLL-CIAS Router雲端網路模組

DHCP伺服器 / About DHCP Server

DHCP是一種用於區域網路中的通訊協定。當區域網路中有伺服器需要設定網路時,該伺服器會查詢區域網路中是否有DHCP伺服器,並跟該DHCP伺服器請求IP設定,最後設置到自己的伺服器上。關於DHCP的運作方式詳細可以看鳥哥的說明

在DLLL-CIAS中,我們也要架設DHCP伺服器,讓區域網路的虛擬機器能夠方便地連上網路。雲端網路模組也需要搭配DHCP伺服器來依據虛擬機器的MAC網卡位址固定他分配的IP位址。因此以下教學將帶大家在Zentyal中設定DHCP伺服器。


啟用DHCP模組 / Enable DHCP Module

  1. 先登入Zentyal網頁管理介面。
    image_thumb1
  2. 進入左邊導覽列的Module Status (模組狀態)
  3. 將DHCP的Status (狀態)打勾
    2014-06-24_141121
  4. 出現確認事項,按「ACCEPT」按鈕確認。
    2014-06-24_141238

DHCP伺服器設定 / Setup DHCP Server

  1. 在左邊導覽列下面找到DHCP進入。
    2014-06-24_141154
  2. DHCP中會有兩張網卡,我們關閉eth0 對外廣域網路的設定,取消前面Enabled的打勾;然後進入eth1 對內區域網路的COnfiguration,點選齒輪按鈕。
    2014-06-24_141340
  3. 這是eth1網卡的DHCP設定畫面,我們要設定的地方在下面,請往下捲動。
    2014-06-24_141351
  4. 找到Ranges (範圍),按下「+ Add new」按鈕。
    2014-06-24_141410
  5. 接著設定要配給的IP範圍。請照以下設定
    - Name: dlll-cias-dhcp
    - From: 10.10.0.1
    - To: 10.10.0.254
    然後按下「ADD」按鈕
    2014-06-24_141449
  6. 確認設定已經新增了。
    2014-06-24_141500
  7. 到左上角按下「Save changes」,將設定確實存入Zentyal之中。這樣DHCP伺服器就設定完成了。
    2014-06-24_141509

下一篇:Zentyal安裝DLLL-CIAS Router雲端網路模組 / Install DLLL-CIAS Router Module in Zentyal

為了更方便管理DLLL-CIAS雲端平台的網路,我們還需要為Zentyal安裝我自行開發的DLLL-CIAS Router雲端網路模組。詳細請看下一篇!

下一篇:「Zentyal安裝DLLL-CIAS Router雲端網路模組」。

(more...)

第四版DLLL-CIAS架構規劃 / DLLL-CIAS Version 4 Structure Planning

第四版DLLL-CIAS架構規劃 / DLLL-CIAS Version 4 Structure Planning

image

在整理DLLL-CIAS第三版教學的時候,我發現現有架構中有許多缺陷。因此我著手規劃DLLL-CIAS第四版的架構,目標是達到去中心化、分散式儲存、高可用、腳本自動化安裝,讓IaaS管理更為簡單。以下則是記錄到目前為止的規劃內容。

In order to impove some disadvantages in DLLL-CIAS version 3, I want to plan the next version with decentralized network structure, distributed storage, high availibity and setup script. Following is the next DLLL-CIAS structure draft.


系統架構 / System Architecture

image

這一張圖用來說明目前規劃DLLL-CIAS第四版(以下簡稱v4)的系統架構。跟DLLL-CIAS第三版(以下簡稱v3)的架構不同,虛擬機器管理伺服器(以下簡稱Proxmox)的功能大幅上升、網路管理伺服器(以下簡稱Zentyal)改以虛擬機器架設、而資料儲存伺服器(以下簡稱NAS)則是非必備的元件,在此圖中省略。主要元件只剩下1. 虛擬機器管理伺服器(Proxmox VE)之MASTER;2. 其他虛擬機器管理伺服器;3. 網路管理伺服器。以下先說明網路架構,再說明這三個元件的功能。

硬體需求 / Hardware Requirments

v4架構要求每一個Proxmox節點都能夠擔任身為MASTER的工作,因此硬體需求為:

  • 至少一台伺服器,最多可以擴增到1270台
  • CPU:64位元,必須支援Intel VT或AMD-V
  • 記憶體:8GB以上
  • 硬碟:80GB以上,建議每台伺服器都有2到4顆硬碟
  • 網路卡:1張

不支援以上最低需求的伺服器,再安裝時應該把Keepalive的HA優先度降低為0,以避免自己被輪到擔任Master Proxmox。

網路架構 / Network Topology

v3架構中是以網路管理伺服器(Zentyal)作為網路閘道路由器來連接內外網,在v4架構中則改成所有的節點都可直接連到對外網路。v4的所有節點仍維持原本的區域網路設定,僅有真正對外的伺服器以虛擬網路卡(Virtual Interface)掛載上可對外連線的網路設定。

在這個架構中至少四個對外IP。一個是給Master Proxmox實際對外連線的IP,其他3個是Zentyal上供管理Proxmox、NAS與虛擬機器的IP,其中管理虛擬機器的IP最多可以設定到250個。

設定舉例如下:

  • Master Proxmox IP位址:192.168.56.101
  • Zentyal上的設定:
    • 管理Proxmxo IP位址:192.168.56.102 (必須事先獲得上層DNS授權)
    • 管理NAS IP位址:192.168.56.103
    • 管理虛擬機器的IP位址:192.168.56.104

廣域網路其他設定:

  • Netmask 子網路遮罩:255.255.255.0
  • Gateway 網路閘道:192.168.56.1

v4在區域網路中的設定也跟v3不一樣:

  • Master Proxmox:10.254.0.254
    ※ 以虛擬IP掛載,同時會掛載Proxmox對外IP位址
  • Zentyal的IP位址:10.0.0.254
    ※ 同時會掛載Zentyal對外IP位址與兩個管理用IP
  • 每一台Proxmox:10.254.{1..5}.{1..99}
  • 每一台NAS:10.253.{1..5}.{1..99}
  • 虛擬機器:10.{1..250}.{1..5}.{1..254}

區域網路其他設定:

  • Netmask 子網路遮罩:255.0.0.0
  • Gateway 網路閘道:10.0.0.254

元件(1): 虛擬機器管理伺服器 / Component (1): Virtual Machine Management Server

跟v3架構中Proxmox僅作為Proxmox VE Cluster的一個節點不同,在v4架構中Proxmox還加上了高可用、分散式儲存等多項功能。

網路設定 / Network Configuration

Proxmox僅在區域網路中連線,網路設定為:

  • IP: 10.254.{1..5}.{1..99}
  • Netmask: 255.0.0.0
  • Gateway: 10.0.0.254

Proxmox Hostname設定規則為:

  • pve.master-rack.a.1-1.example.com

以下說明hostname設定規則:

  • pve: 這是一個Proxmox VE伺服器
  • master-rack:所在機架代號
  • a:機架上的位置編號
  • pve: 這是一個Proxmox VE伺服器
  • 1-1: IP位址的第三部分與第四部分
  • example.com:依據單位各自狀態設定

在這個架構下,舊節點捨棄之後,新的節點不取代舊節點的IP,直接往上新增。例如節點10.254.1.1毀損之後,新機器不設定10.254.1.1,而是設定10.254.1.2。

特別是Hostname必須不同,不能取代舊節點的Hostname,不然Proxmox VE Cluster會發生錯誤。

功能 / Functions

v4架構中每一台Proxmox都具備一樣的工作,以下分項目敘述。

Proxmox VE Cluster跟v3架構一樣,只有Storage多掛載一個目錄:

  • 每一台Proxmox都是Proxmox VECluster的節點
  • 以下設定只有第一台需要設定:
    • 建立Proxmox VE Cluster,名稱為DLLL-CIAS
    • Storage 掛載 /mnt/mfs 為 a_mfs,Max Backup設定為1。關於/mnt/mfs下面會說明。
    • 再到Storage 掛載 /mnt/mfs 為 mfs-backup,Max Backup設定為5,僅有Backup功能。
    • 排程備份VMID 100到mfs-backup,時間為每週一凌晨2:00,備份模式為snapshot,壓縮為none。
    • 排程備份除了VMID 100之外的虛擬機器到a_mfs,時間為每週日凌晨2:00,備份模式為snapshot,壓縮為gzip最佳。
  • 第二台之後設定以下:

高可用:

  • keepalived套件
  • 每一台都擔任BACKUP角色
  • keepalived中使用notify_master的腳本keepalived_to_master.sh:當該節點升格成MASTER角色時執行的動作。細節在下面的「情結:切換MASTER」會說明。
  • 開機自動啟動keepalived

分散式儲存:

  • MooseFS套件
  • 設定/etc/hosts:10.254.0.254 cias-pve-master
  • 除了安裝Proxmox所在硬碟之外的所有硬碟,全部格式化為ext3,掛載到/data/底下。例如/dev/sdb掛載到/data/sdb
  • master套件:安裝完成,預設不啟動,縮短垃圾桶時間,限制只能10.254.0.0/16連線
  • metalogger套件:監控cias-pve-master (原本預設是mfsmaster,在此做修改)
  • chunkserver套件:提供/data底下的資料夾給cias-pve-master當做儲存空間
  • mfsmount (mfs-client端):在/mnt/mfs掛載cias-pve-master
  • 以上都開機自動啟動、開機自動掛載

Zentyal備份到本機端:

  • 用crontab,在每週一凌晨4:00,從/mnt/mfs/dump/vzdump-qemu-100-*_*_*-*_*_*.*,複製並重新命名到/var/lib/vz/dump/zentyal.tar.vma,覆蓋舊檔案

停電斷線自動關機:

  • 使用crontab,每3分鐘確認是否可連線到8.8.8.8。如果無法連線,表示可能對外網路已經斷線,預約15分鐘後進行關機
  • 若恢復連線,則取消關機動作。

元件(2): MASTER虛擬機器管理伺服器 / Component (2): Master Virtual Machine Management Server

在v4架構中只會有一台Proxmox擔任Master,以下簡稱Master Proxmox。這台Master Proxmox在以Keepalived實作的高可用集叢(High Availability Cluster,以下簡稱HA)中,可由任何一台Proxmox擔任。Keepalived會依照優先權決定擔任Master的Proxmox,在安裝Proxmox的時候可以設定優先權。

網路設定 / Network Configuration

Master的Promxox同時具有對外網路與對內網路連線,Keepalived會自動幫擔任Master的Proxmox設定好額外的網路設定。Master的網路設定都是用虛擬IP的方式設定,並不影響原本Proxmox本身的網路設定。

廣域網路設定如下,請根據現實環境來修改:

  • IP: 192.168.56.101
  • Netmask: 255.255.255.0
  • Gateway: 192.168.56.1

區域網路設定如下:

  • IP: 10.254.0.254
  • Netmask: 255.0.0.0
  • Gateway: 10.0.0.254

Hostname為:cias-pve-master。但實際上並不設定在伺服器本身,僅在/etc/hosts記錄。

功能 / Functions

Master的Proxmox基本功能都跟其他Proxmox一樣,只是額外具有以下功能:

  • 負責給其他Proxmox加入Cluster用
  • Keepalived的status為MASTER
  • MooseFS的mfsmaster跟mfscgiserv皆啟動,可用9425連接埠觀看
  • 自身運作著Zentyal虛擬機器
  • 定時匯出虛擬機器列表到mfs管理目錄中
  • 定期檢查節點是否存活,如果沒有存活則自動將該節點進行情節(6)移除節點的腳本

元件(3): 網路管理伺服器 Zentyal / Component (3): Network Management Server

Zentyal的工作跟v3時差不多,但是把管理區域區隔開來,這部份會在雲端網路模組中改進。

網路設定 / Network Configuration

Zentyal的網路設定跟v3一樣有兩張網卡。對外廣域網路網卡上基本設定了一個IP,然後再用虛擬IP掛載至少兩個管理用IP。對內區域網路網卡則只會有一個設定。

廣域網路的設定請根據現實環境來修改。管理Proxmox的IP如下,這同時也是Zentyal Web GUI的連線設定,也必須是擁有DNS授權的功能:

  • IP: 192.168.56.102
  • Netmask: 255.255.255.0
  • Gateway: 192.168.56.1

然後以下兩個廣域IP是用虛擬IP的方式設定:

  • 管理NAS用:192.168.56.103。整合到雲端網路模組設定。
  • 管理虛擬機器用:192.168.56.104。此類型IP可以增加到240個。整合到雲端網路模組設定。

區域網路設定只有一個,設定如下:

  • IP: 10.0.0.254
  • Netmask: 255.0.0.0
  • Gateway: 10.0.0.254

Hostname為cias-router。

功能 / Functions

Zentyal使用KVM虛擬機器,主要工作為基本的閘道器跟雲端網路模組這兩種。

以KVM虛擬機器架設Zentyal設定為:

  • 硬碟:4 GB
  • 記憶體:2 GB
  • 網路卡:1張virtio高速網卡

該虛擬機器會預先配置好以下動作:

  • 安裝好Zentyal 3.0,僅安裝最小需要的元件:DNS Server、DHCP Server
  • 啟用模組
  • 配置區域網路設定:10.0.0.254/8
  • 安裝好雲端網路模組
  • 網路設定:SSH僅供10.254.0.254連線,其餘禁止
  • 設置DHCP Server:提供範圍是10.251.{0..254}.{1..254}
  • 設置腳本:新增Zentyal帳號與密碼 (create_user.sh)、設定Proxmox管理IP (setup_ip_proxmox.sh)、設定NAS管理IP (setup_ip_nas.sh)、設定虛擬機器管理IP (setup_ip_vm.sh)
  • 開發用腳本:清除log設定 (dev_clean.sh)

基本網路閘道器角色功能為:

  • DNS Server:可以設定註冊新的Domain Name
  • DHCP Server:給區域網路暫時取得IP使用

雲端網路模組包括:

  • PVE Back End:Proxmox連線管理:固定使用原本的IP,給Proxmox做連接埠轉遞跟反向代理伺服器(reverse proxy,以下簡稱RP)來連線管理
  • NAS Back End:NAS連線管理:指定一個IP給NAS用,給NAS做連接埠轉遞管理跟RP來連線管理
  • VM IP:虛擬機器管理IP對應編號設定:設定IP與區域網路第二部分對應,對應編號範圍為{0..250}。舉例來說,192.168.56.104對應設定0,對應的區域網路範圍就是10.0.{1..5}.{1..99},對應VMID為{1..5}{01..99}。虛擬機器VMID與區域網路IP對應請看後面的介紹。
  • VM Back End:虛擬機器連線管理:給虛擬機器做連接埠轉遞跟RP。直接設定VMID,由VMID轉換成區域網路IP對應。虛擬機器VMID與區域網路IP對應請看後面的介紹。
  • 其他:URL Redirect、DNS,功能跟v3相同,只是IP使用的是給Proxmox管理用IP。

元件(4): 資料儲存伺服器 NAS / Component (4): Storage Server

NAS在v4架構中不是必須的,但如果有多的NAS想納入架構的話,在v4中依有NAS的位置。跟v3一樣,NAS的功能主要的工作是擺放備份檔案、ISO跟虛擬應用範本。許多人會拿NAS來放置KVM的映像檔,然後運作KVM,但是在DLLL-CIAS中並不這樣做。DLLL-CIAS的虛擬機器預設都會運作在a_mfs上。

網路設定 / Network Configuration

NAS的網路設定都是區域網路,僅提供DLLL-CIAS內部使用,對外連線則是由Zentyal的NAS管理IP來控制。

  • IP: 10.253.{1..5}.{1..99}
  • Netmask: 255.0.0.0
  • Gateway: 10.0.0.254

NAS的Hostname設定規則與Proxmox類似:

  • nas.master-rack.a.1-1.example.com

以下說明Hostname設定規則:

  • nas: 這是一台NAS
  • master-rack:所在機架代號
  • a:機架上的位置編號
  • 1-1: IP位址的第三部分與第四部分
  • example.com:依據單位各自狀態設定
功能 / Functions

在v4中的NAS只會使用它的NFS功能,分享的NFS名稱同Hostname,讓它掛載到Proxmox VE Cluster的Storage中,掛載名稱也跟Hostname相同。


虛擬機器VMID與區域網路IP對應規劃 / Virtual Machine ID and Local IP Address Mapping

為了確保虛擬機器與區域網路IP的一致性,v4架構中在雲端網路模組改以強制設定VMID,而非以往的設定區域網路IP。VMID與IP的對應規則如下:

VMID 100為特殊VMID,僅給zentyal使用。

VMID的組合基本上為3~6碼,分成前三碼跟後三碼兩個部分,前三碼為虛擬機器管理對外IP對應編號,範圍為{0..250},對應到區域網路IP的第二部分;後三碼為連接埠轉遞的編號,範圍為{101..199}、{201..299}、{301..399}、{401..499}、{501..599},連接埠轉遞編號第一碼對應到區域網路IP的第三部分、後兩碼對應到區域網路IP的第四部分。

舉例來說:

  • VMID 101:對外IP編號0,連接埠轉遞101xx,區域網路IP 10.0.1.1,這是VMID範圍的最小值。
  • VMID 10501:對外IP編號10,連接埠轉遞501xx,區域網路IP 10.10.5.1
  • VMID 250599:對外IP編號250,連接埠轉遞599xx,區域網路IP 10.250.5.99,這是VMID範圍的最大值。

在這樣的規劃下,v4的虛擬機器最大數量為495連接埠轉遞*250對外IP編號共123000 (12萬3千)台,此時需要250個給虛擬機器用的對外IP,加上其他元件的需求,總共需要253個對外IP。

若以最低對外IP的條件來看,以最少4個對外IP的規劃中,虛擬機器最大數量即為495台。


管理情節 / Management Scenario

v4的架構中有許多管理情節,主要會用到的有以下幾項,並概述情節中會進行的動作。

情節(1):安裝 / Scenario (1): Install Master

v4架設需要一台伺服器跟一片Proxmox VE 3.2光碟,你可以從這邊下載。安裝動作只需要執行一次,簡稱為Master安裝,只要有Master Proxmox在,其他伺服器應該執行擴增動作。

以下是手動的部份,[M]表示Master安裝中特別會做的動作:

  • 安裝Proxmox VE 3.2
  • [M] 安裝過程中設定對外Master IP
  • 從網路下載dlll_cias-setup.sh腳本
  • 增加執行權限並執行dlll_cias-setup.sh腳本

腳本首先先蒐集設定資訊:

  • 腳本檢查網路可否連線,不可連線則提示訊息後退出
  • 詢問Keepalived的優先度,範圍是{0..100},預設值是50,數字越大越可能擔任Master Proxmox。
  • 腳本檢查是否有Master在,來決定是否是Master安裝模式。
  • [M] 腳本詢問給Zentyal的帳號與密碼
  • [M] 腳本詢問給Zentyal網路設定:Proxmox管理IP、NAS管理IP、虛擬機器管理IP、netmask、gateway
  • 腳本提示準備開始安裝,按enter確認。

腳本先保存管理資訊跟下載必要檔案,保存到/data/cias管理目錄中:

  • [M] 保存Master Proxmox的對外IP、Zentyal的Proxmox網路設定到一個管理連線設定檔
  • [M] 下載keepalived需要的keepalived.conf等必要腳本
  • [M] 根據對外IP來調整keepalived設定檔
  • [M] 製作手動切換的keepalived設定檔
  • [M] 下載MooseFS必要的設定檔案
  • [M] 下載Zentyal虛擬機器即必要腳本
  • [M] 下載DLLL-CIAS管理用的必要腳本
  • [M] 根據此Proxmox VE安裝中設定的管理者email,設定通知設定檔
  • [M] 調整腳本權限

腳本接著進行網路設定與Keepalived的安裝:

  • 安裝Keepalived必要元件
  • 從管理目錄複製必要設定到指定位置
  • 根據現在網路卡數量,將所有網路卡都bonding到vmbr0上
  • [M] 修改vmbr0網卡設定為10.254.0.1
  • 啟用Keepalived
  • [M] 此時vmbr0應該會額外被掛上Master對外IP跟10.254.0.254的虛擬IP
  • 設定開機自動執行

腳本接著進行MooseFS安裝:

  • 新增10.254.0.254 cias-pve-master設定到/etc/hosts
  • 安裝MooseFS所需元件(包括更新fuse)
  • 從管理目錄複製必要設定檔到指定位置
  • 啟用metalogger
  • [M] 啟用master
  • 確認cias-pve-master可連線
  • 格式化Proxmox VE安裝外的其他磁碟,並進行掛載
  • 依據磁碟數量調整chunk設定檔
  • 啟用chunk
  • 掛載mfsmount
  • 設定開機自動執行
  • [M] 把需要共用的檔案放到 /mnt/mfs/cias 中

如果是Master安裝模式,則腳本進行以下動作:

  • [M] 新增Promxox VE Cluster
  • [M] 新增Cluster的Storage,掛載MooseFS
  • [M] 新增Cluster的排程備份

如果是Master安裝模式,則腳本接著進行Zentyal的安裝:

  • [M] 從管理目錄還原Zentyal虛擬機器
  • [M] 開機Zentyal
  • [M] 以預設帳號cias與預設密碼dlll@nccu連線到Zentyal (預設IP為10.0.0.254)
  • [M] 設定Zentyal的管理用IP
  • [M] 新增Zentyal帳號與密碼
  • [M] 在背景執行備份Zentyal
  • [M] 在背景執行備份Zentyal到Local

腳本新增排程工作:

  • 設定排程,定期將Zentyal備份檔案備份到Local硬碟中
  • 設定排程,定期偵測斷線自動關機腳本
  • [M] 設定排程,定期將現有節點上所擁有的虛擬機器的VMID儲存到/mnt/mfs/cias/pve_master_vmid.conf中
  • [M] 每隔5分鐘確認所有節點可連線狀態,若一節點無法連線,則等待30分鐘,若30分鐘後仍然無法連線,執行情節(6)移除此節點

腳本提示安裝完成訊息:

  • 安裝完成
  • 根據/mnt/mfs/cias/cias-network.conf,顯示Proxmox VE管理IP跟Zentyal網頁管理IP

以上安裝完成,這時候應該會持續備份Zentyal虛擬機器,就讓它跑吧。


情節(2):擴增 / Scenario (2): Extend Slave

v4架構下,擴增時需要一台伺服器跟一片Proxmox VE 3.2光碟,你可以從這邊下載。若已經架設好Master Proxmox,則其他伺服器則是用擴增的方式安裝,簡稱Slave安裝。

以下是手動的部份,[S] 表示擴增使用

  • 安裝Proxmox VE 3.2
  • [S] 安裝過程中設定區域網路IP 10.254.{0..254}.{2..254} (因為10.254.0.1給Master Proxmox使用了)
  • 從網路下載dlll_cias-setup.sh腳本
  • 增加執行權限並執行dlll_cias-setup.sh腳本

腳本首先先蒐集設定資訊:

  • 腳本檢查網路可否連線,不可連線則提示訊息後退出
  • 詢問Keepalived的優先度,範圍是{0..100},預設值是50,數字越大越可能擔任Master Proxmox。
  • 腳本檢查是否有Master在,來決定是否是Master安裝模式。因為有Master在了,所以以下是Slave安裝。
  • [S] 詢問Master Proxmox的連線密碼,並測試連線到Master Proxmox以確認金鑰
  • 腳本提示準備開始安裝,按enter確認。

腳本從Master Proxmox複製管理資訊:

  • [S] 用rsync複製Master Proxmox的管理目錄底下的檔案到本機的管理目錄

腳本接著進行MooseFS安裝:

  • 新增10.254.0.254 cias-pve-master設定到/etc/hosts
  • 安裝MooseFS所需元件(包括更新fuse)
  • 從管理目錄複製必要設定檔到指定位置
  • 啟用metalogger
  • 確認cias-pve-master可連線
  • 格式化Proxmox VE安裝外的其他磁碟,並進行掛載
  • 依據磁碟數量調整chunk設定檔
  • 啟用chunk
  • 掛載mfsmount
  • 設定開機自動執行

腳本接著進行網路設定與Keepalived的安裝:

  • 安裝Keepalived必要元件
  • 根據現在網路卡數量,將所有網路卡都bonding到vmbr0上
  • 從管理目錄複製必要設定檔到指定位置
  • 啟用Keepalived
  • 設定開機自動執行

如果是Slave安裝模式,則腳本進行以下動作:

  • [S] Proxmox VE Cluster加入到Master Proxmox中

腳本新增排程工作:

  • 設定排程,定期將Zentyal備份檔案備份到Local硬碟中
  • 設定排程,定期偵測斷線自動關機腳本
  • [S] 以背景執行從Zentyal備份檔案備份到Local硬碟中

腳本提示安裝完成訊息:

  • 安裝完成
  • 根據/mnt/mfs/cias/cias-network.conf,顯示Proxmox VE管理IP跟Zentyal網頁管理IP

以上安裝完成,這時候應該會持續備份Zentyal虛擬機器,就讓它跑吧。


情節(3):自動切換Master Proxmox / Scenario (3): Automatically Swtich Master Proxmox

由於Keepalived工具提供的高可用集叢,當Master Proxmox無法連線時,Keepalived會自動挑選其中一台Proxmox,把它當作Master Proxmox,並進行以下切換的動作。

以下Keepalived會自動設定:

  • 掛載對外Master Proxmox對外網路
  • 掛載cias-pve-master 10.254.0.254

然後進行MooseFS高可用設定:

  • metalogger復原master資料:mfsmetarestore -a
  • 啟動master

虛擬機器的高可用:

  • 一一檢查/mnt/mfs/cias/pve_master_vmid.conf中的VMID
  • 如果集叢中VMID 100虛擬機器存在且可用,試著Migrate到這個節點上
  • 如果集叢中無法取得該虛擬機器,則嘗試從備份檔案中還原虛擬機器
    • VMID 100是Zentyal,從本機端取得還原檔案
    • 其他VMID則從mfs取得檔案還原,選擇負載量最低且非Master Proxmox的節點去還原
  • 確認虛擬機器的auto_start=1下正常開機

通知:

  • 寫信給現在mfs管理目錄中設定的管理者

情節(4):手動切換Master Proxmox / Scenario (4): Manual Swtich Master Proxmox

有些情況下我們希望手動指定Master Proxmox到特定伺服器上,而若該伺服器沒有被Keepalived指名,我們可以用以下的指令來手動切換Master Proxmox。

  • 到管理目錄執行 dlll_cias-swtich_to_master.sh

該腳本會先進行以下動作

  • 將原本keepalived.conf改成keepalived.conf.temp
  • 把調高權限的keepalived.conf複製到此位置:此設定中預設status為MASTER,priotity為999。
  • 重新啟動Keepalived,此時因為設定的關係,會將其他節點上的Master Proxmox狀態搶到自己身上
  • 自動執行情境(3)的腳本
  • 刪除調高權限的設定檔,復原原本的keepalived.conf設定檔

情節(5):手動退出集叢 / Scenario (5): Proxmox Escape From Cluster

此節點預備要退出集叢,則在要此節點上執行此腳本:

  • 設定遷移完畢之後的通知email
  • 取得本機上的虛擬機器列表
  • 每一台虛擬機器進行以下動作
    • 根據每一台Proxmox的RAM使用量,決定移到負荷量最低且非Master Proxmox的Proxmox
    • 遷移虛擬機器,除了VMID 100
  • 如果自己是Master Proxmox
    • 更新本機端虛擬機器檔案
    • 重新啟動Keepalived,此時其他節點會搶走MASTER狀態,並把VMID 100 Zentyal遷移到他身上去
    • 每隔5分鐘確認VMID 100是否遷移完成
  • 全部遷移完成之後,脫離Cluster
  • 發信通知管理者,以及mfs管理目錄中的管理者
  • 實體伺服器關機

情節(6):移除Proxmox節點 / Scenario (6): Delete Proxmox Node

如果某一個節點因為意外斷線,則必須重建該節點上面的虛擬機器,並移除該節點。這個情節是由Master Proxmox定時運作,此腳本工作為:

  • 取得參數:指定要移除的節點
  • 確認該節點是否可連線
  • 如果可連線,則在該節點上執行情節(5)
  • 如果不可連線,則讀取該節點的虛擬機器列表
  • 選擇最低負載量與非Master Proxmox,從mfs備份檔案中還原
  • 全部還原完成之後,將此節點從cluster中移除
  • 寫信通知email

注意事項 / Attention Notes

v4的架構在使用的時候有一些地方需要特別注意。

網路連線安全性 / Network Security

為了讓網路管理伺服器去中心化,所有的節點都暴露在對外網路中。這個意思是,如果該網域底下有人自行設定網路為Master Proxmox的10.254.0.254或任一10.x.x.x的IP,v4架構就會很容易發生錯誤或是被入侵。但是比起v3時會有網路管理伺服器Zentyal單點故障導致整體無法運作的問題,去中心化的設計只是在安全性與便利性上的取捨。

額外的便利性是任一虛擬機器都可以設定成對外IP,提供直接連線。

Master Proxmox的高負荷量 / High Loading of Master Proxmox

目前Master Proxmox主要只有做高可用,可是其本身負擔著大量的工作,最主要的就是Zentyal跟Mooster的mfsmaster。Zentyal必須處理大量連線,而mfsmaster在檔案數量大增的時候對於RAM的需求也很高。

即使可以手動指定負載能力最高的伺服器擔任Master Proxmox,但還是沒辦法讓其他人分擔Master Proxmox的工作量。目前我想不到是否有其他的好辦法,留待下一版DLLL-CIAS再看看有沒有更好的方案吧。


待研究事項 / To-Do

這篇只是v4的架構草案,目前還有許多地方未經確認與實作,仍有待繼續研究。目前主要需要確認的問題包括:

  • 網路卡實作bonding的技術還沒實作過
  • Proxmox VE Cluster節點只剩下一台的時候,會因為cluster not ready而限制很多操作,包括下一個問題。
  • 新master還原虛擬機器zentyal時,會因為舊節點還沒移除而被卡住:理論上,在cluster上會保留斷線的節點以及上面的虛擬機器設定,而禁止在同一個cluster不同節點上新增同樣的VMID。這部份一定得想辦法克服才行。
  • Zentyal在最小安裝與合理負荷之間的平衡:只有實際上架設過後才能知道了
  • Zentyal腳本操作可行性:我記得Zentyal可以用腳本來操作,可是一時間找不到說明文件

可能比較不會是問題,但是需要研究如何撰寫的腳本:

  • 依據磁碟數量來做格式化的腳本
  • metalogger復原master還沒實作過
  • 改進雲端網路模組的功能
  • 確認虛擬機器在Cluster中存在的腳本
  • 遷移虛擬機器到本機端的腳本

實作上面的待辦事項:

  • 架設開發用的Zentyal:要注意硬體設定
  • 各種腳本與設定檔的撰寫

結語:Proxmox VE Cluster依然是大難關 / Conclusion: Problems With Proxmox VE Cluster

以上規劃了DLLL-CIAS第四版的架構,基於第三版的架構之上再納入網路管理伺服器去中心化、分散式儲存、虛擬機器高可用與腳本簡化安裝等想法,並改進了雲端網路模組的設計,讓可同時運作的虛擬機器上限提高。

但是其實最根本的問題還沒解決:Proxmox VE Cluster仍有高度不穩定性的問題。

如果一開始都把Proxmox VE Cluster架設好、加入集叢,然後每個節點放著正常運作,這樣子Cluster沒有問題。若是節點以正常的方式關機,Cluster依然沒有問題。

但問題會出現在節點以非正常方式斷線或關機,或是節點數量只剩下一台時,這樣會導致整個Cluster運作失靈。要移除節點或是用相同Hostname加入Cluster時,好像也有可能導致Cluster毀損。

當Cluster毀損時,不管點任何動作,都會被要求登入,而且除了自己節點之外的其他節點都無法顯示任何訊息。

目前修復Proxmox VE Cluster的方法仍然不明,要如何避免Cluster毀損的方法也還沒有摸熟,這些都是要在發展v4之前必須搞懂得部分。

我們之前修復的方式是以不同名字重建Cluster,然後從NFS中取得備份檔案來還原。手動作業耗費了相當多的時間,我覺得這是相當大的一個問題。

之後有機會會再針對這部份進行深入的研究,至少要確保Cluster正常運作,DLLL-CIAS才算是一個穩定的方案吧。

(more...)

DLLL-CIAS雲端平台架設與使用專題目錄 / DLLL-CIAS Cloud Platform Installation & Usage Catalog

DLLL-CIAS雲端平台架設與使用專題目錄 / DLLL-CIAS Cloud Platform Installation & Usage Catalog

image

DLLL-CIAS是政大圖檔所數位圖書館與數位學習實驗室中我所開發的開放原始碼雲端平台方案。我預定於103學年的「雲端科技與圖書館行動服務研習班」中介紹此方案,希望能夠讓經費不多的中小型單位也能夠用現有伺服器資源架設好用的IaaS雲端平台。這篇將列出DLLL-CIAS雲端平台架設與使用相關文章的目錄。

DLLL-CIAS is an open source IaaS solution for my laboratory, Digital Library and Learning Laboratory in  National Chengchi University Graduate Institue of Library, Information and Archival Studies. I will introduce DLLL-CIAS in a workshop at June 2014. DLLL-CIAS is very suitable for small organization to build a low-cost, powerful and easy to use IaaS cloud platform. This catalog will list articles of DLLL-CIAS build and usage instruction.


DLLL-CIAS介紹 / DLLL-CIAS Introduction

DLLL-CIAS安裝(1):網路管理伺服器 / DLLL-CIAS Installation (1): Network Management Server

DLLL-CIAS安裝(2):資料儲存伺服器 / DLLL-CIAS Installation (1): Storage Server

DLLL-CIAS安裝(3):虛擬機器管理伺服器 / DLLL-CIAS Installation (1): Virtual Machine Management Server

DLLL-CIAS使用 / Usage of DLLL-CIAS

DLLL-CIAS的未來發展 / DLLL-CIAS Next Version

(more...)