1. 手遊的特點
1) 基本都是linux系統;
2) gs伺服器CPU、網路壓力高、磁碟壓力低;
3) db伺服器CPU壓力低、磁碟、網路壓力高;
4) 生命週期相對較短;
5) 遊戲開組並組頻繁;
2. 手遊方案設計目標
1) 滿足效能的前提下,保證穩定、可靠;
2) 最大程度的平衡排程資源,提高資源利用率,以達到節省成本的目的;
3) 靈活快速,比如可以在幾個小時之內提供數百臺主機。
4) 方案生命週期長,從整體角度,綜合多個遊戲專案,長遠來看,能節省大量重複性硬體投入成本;
5) 擴充套件靈活,可以設計成以1-2個機櫃的模組,根據業務靈活擴充套件;
6) 管理方便,平臺化、自動化的主機生命週期管理。
手遊方案的技術特點:
1) 硬體和軟體解決高效能的磁碟io;
2) 硬體和軟體解決高效能的網路吞吐和發包;
3) 硬體和軟體解決較高的cpu壓力。
綜上所述,如果要滿足手遊方案的設計要求,必須選擇虛擬化,因為只有虛擬化才能實現資源池的概念,實現資源的靈活調配,充分利用;只有虛擬化才能實現業務的靈活部署,快速定製。
3. 虛擬化收益
a) 費用方面
費用方面收益非常明顯,如果實現1虛10的比例,原來用10臺伺服器,現在用1臺就可以,原來用10個機櫃,現在用1個就可以。
b) 管理方面
因為虛擬機器從本質上說就是硬碟上的一個檔案,虛擬機器生成、維護、銷燬、轉移要比物理機快速和方便許多,一臺虛擬機器的建立只需要幾分鐘,而一臺物理機的上架至少需要一個小時,速度可以提升幾十倍;
結合遊戲專案的需求,為遊戲專案的遊戲程式的自動化部署等,甚至可以向一鍵開區的方向去努力,通過虛擬化可以提高遊戲運維的效率。
4. 虛擬引擎的選擇
目前企業級常用的虛擬化引擎有4種
1) VMWware ESXi系列;
2) 微軟的Hyper-V;
3) Xen;
4) KVM;
Hyper-V:
微軟的Hyper-V是為windows系統準備的,對微軟的產品具有更好的相容性和整合,手遊的系統都是linux,Hyper-V不適合做手遊的虛擬化引擎;
Xen
Xen成熟,使用的時間也比較長,但是Xen 3.x 沒有進kernel upstream,而4.0 雖然進去核心,但是要求核心版本比較高(kernel 3.0),而且使用維護複雜;
VMWare
VMWware ESXi系列是x86平臺上最早的虛擬化引擎,成熟穩定,管理方便,但是費用昂貴,軟體的授權費用甚至高過硬體,如果使用VMWware ESXi的免費版,記憶體只能支援到32G,而且隨著數量的增加,管理是個很大的問題;
KVM
KVM架構簡單 (Linux核心的一個driver),kvm是Linux核心的一部分,KVM在Linux核心內部部署,這樣可以很容易控制虛擬化程式;
KVM在Linux整合中要優於Xen。它不需要重新編譯核心,也不需要對當前kernel做任何修改,它只是幾個可以動態載入的.ko模組。它結構更加精簡、程式碼量更小。所以,出錯的可能性更小。
KVM程式模組能直接與硬體互動,不需要修改虛擬化作業系統。因此效能更好,並且補丁包能夠和Linux核心相容,輕鬆控制虛擬化程式,同時減輕管理的負擔。
KVM是Linux上的標準虛擬化技術 (從 kernel 2.6.20),天生就是為linux系統虛擬化,目前許多的遊戲平臺都使用kvm作為虛擬化引擎,尤其是頁遊和手遊;管理方面也有許多基於KVM的開源免費管理平臺可以使用,比如ovirt convirt等;最要的是kvm開源免費,在軟體授權方面不會有任何費用。
綜上所述,手遊的虛擬化引擎選擇使用kvm。
5. 虛擬化方式選擇
目前有三種虛擬化方式可以選擇:
1) 單機虛擬化:
一臺宿主機虛擬幾臺虛擬機器,虛擬機器的計算、儲存、網路都在這臺宿主機內;
2) 叢集虛擬化:
由商業儲存和若干計算節點組成,虛擬機器映象在商業儲存上,虛擬機器使用計算節點的計算、記憶體、網路資源;
3) 分散式檔案系統虛擬化:
實際也是虛擬化叢集的一種,由若干計算節點和用分散式檔案系統組成,用分散式檔案系統代替昂貴的商業儲存,虛擬機器映象儲存在分散式檔案系統上,虛擬機器使用計算節點的計算、記憶體、網路資源;
三種虛擬化方式的詳細對比
單機虛擬化 |
叢集虛擬化 |
分散式虛擬化 |
|
部署方式 |
靈活,可以在任意地點部署 |
有限制,必須整體部署 |
有限制,必須整體部署 |
容納虛擬機器數量 |
單臺 1-10臺 |
50-100臺 |
50-200臺 |
成本 |
低 單臺宿主機成本 |
高 需要商業化儲存 |
中 使用PC SERVER搭建 |
高可用 |
不支援 |
支援 |
支援 |
線上遷移 |
不支援 |
支援 |
支援 |
資源池化 |
有限支援 |
支援 |
支援 |
虛擬機器自動部署 |
需要管理平臺支援 |
需要管理平臺支援 |
需要管理平臺支援 |
彈性擴充套件 |
有限支援 |
支援 |
支援 |
適用業務場景 |
GS DB |
GS DB |
GS |
6. 虛擬化實施方案
1) 業務效能分析,提煉業務的cpu 磁碟 網路 記憶體模型
2) 虛擬化方案設計,根據效能分析,確定虛擬化比例和方案
3) 基本的效能測試,主要測試虛擬機器效能
4) 業務模擬測試,業務部門在試驗環境上測試
5) 小規模部署:
6) 全面部署階段
7. 虛擬化運維方案
虛擬化開始部署,就進入虛擬機器運維階段,虛擬化運維包含以下幾個方面:
1) 持續的效能監控和報警
效能監控包括一些內容
a) 宿主機效能(CPU,記憶體,io, 網路流量,功耗)
b) 虛擬機器效能(CPU,io,網路流量)
c) 網路(流量)
d) 故障監控和告警
e) 伺服器硬體故障
2) 持續的優化,發現業務變化導致的效能瓶頸
通過效能監控手段,不斷的發現系統瓶頸,並和開發、業務一起持續優化;
3) 日常備份
a) 虛擬機器的配置資料
b) 關鍵虛擬機器的資料備份
c) 宿主機mbr metadata等資料備份
4) 應急響應預案
5) 模板管理
根據要求,定製虛擬機器模版。
6) 系統補丁
關注KVM相關資訊,有重要補丁釋出,及時更新補丁。