第四版DLLL-CIAS架構規劃 / DLLL-CIAS Version 4 Structure Planning
在整理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
這一張圖用來說明目前規劃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才算是一個穩定的方案吧。