乾貨推薦:如何運維千臺以上游戲雲服務器——遊族網絡

乾貨推薦:如何運維千臺以上游戲雲服務器——遊族網絡前端

關於分享者:web

李志勇,2010年加入遊族網絡,目前擔任遊族網絡運維總監,全面負責遊族網絡運維業務。他具備十年運維工做經驗,八年遊戲行業從業經驗,專一於遊戲虛擬化技術和網絡優化。數據庫

 

分享正文:後端

 

遊戲產品架構進化史緩存

 

圖一:遊戲產品架構進化史安全

 

通過近七年的高速發展,公司遊戲服務器從100臺增加到10000+臺,遊族總體遊戲架構也通過了三個階段的演變:服務器

  • 公司早期普遍使用的第一代架構,當時主流的產品都是以DB+計算+前端這樣的3個角色開發設計並部署,服務器以物理機爲主,一個遊戲區組須要2~4臺服務器,不一樣的機器承擔不一樣的角色。這種架構方案效率低,基本上不可能實現一天開100個區組(100個區組大概須要400臺服務器);網絡

  • 隨着業務量的增加和虛擬化技術普遍使用,遊族總體遊戲架構更新爲第二代架構,全面採用虛擬化技術,把一臺高配的物理機器虛擬化成多臺符合遊戲需求的虛擬機來使用,並實現了ALL IN ONE的系統架構。該架構方案運維效率高,適合規模開展遊戲運營,但不具有業務高可用特性,一天開100個區組成爲常態;架構

  • 爲了迎合大區大服、全球同服,遊族融合了前兩代架構的特色,推出了第三代架構,按角色分拆並造成服務集羣模式。集羣架構結合了物理機與虛擬化的優點,實現彈性擴容,遊戲邏輯以服務進程或集羣配置項的形式提供服務。該架構方案運維效率更高,可實現秒級開服同時具有業務高可用特性。併發

 

基於第二代架構,遊族基於OpenStack本身的私有云,最初目標是爲了提升服務器利用率、下降成本和實現分鐘級開服。運維團隊以OpenStack G版爲藍本進行調優並修改;整個網絡採用的是VLAN模式,保證最大限度與現有網絡架構保持兼容;存儲方面使用本地磁盤做爲存儲。

 

經過底層優化後,遊族私有云基本上能夠知足業務的需求,目前90%遊戲業務運行在上面,虛機規模持續保持在10000臺以上,遊族私有云平臺沒有提供WEB管理界面,平常全部的操做都是經過命令行和腳本的形式進行操做,但對於虛擬機的增刪查改,從新封裝了一層簡潔的API接口實現與遊族運維平臺的對接。通過評估測驗,在高峯時期,整個私有云資源利用率可達到83%

 

運維方式的轉變

 

與三代架構相互對應是遊族運維的三個階段:

 

  1. 在第一代架構上,運維基本是手工運維,技術含量並不高,純粹是採用人與時間堆積進行,運維同窗須要登陸每一臺服務器,順序執行相關的命令和腳本。獨立的版控服務器,經過主動推送的形式進行版本更新;

  2. 在第二代架構上,經過自動化工具進行批量運維,團隊推出了使用expect寫的auto批量腳本,全部操做只需登陸一臺集控服務器執行批量併發操做的腳本,獨立的版控服務器,經過並行的主動推送;

  3. 在第三代架構上,能夠實現系統化運維,多個運維繫統相互協調配合實現,例如:CMDB、業務樹、做業平臺等。遊戲區組搭建的時間基本上能夠忽略(可按需求實現按條件觸發或手動觸發搭建操做),全部的更新操做在WEB管理平臺就可完成。

 

遊族做業平臺UJOBS

圖二:UJOBS架構及其遊戲更新流程

 

系統化運維過程當中使用的做業平臺(UJOBS)是屬於C/S的架構,其核心部分由任務調度器和agent組成,經過調用API接口完成多種形式的指令下發。UJOBS簡單的來講是爲服務器管理提供了執行命令的通道,將全部的執行命令和腳本在目標服務器橫向執行完,把輸出結果記錄日誌裏面,同時可經過WEB界面實時查看分析。任務調度器是用來全局策略控制,進行併發量控制。任務列表裏面保存任務的完整信息。指令倉庫保存經常使用的命令個腳本和上下文關聯的命令組合。

在UJOBS平臺上,遊戲版本更新流程以下:

  1. 版本庫的版本變動自動觸發構建;

  2. 從版本庫拉取變動後的版本文件;

  3. 經過構建操做後,推送目標程序到分佈式的全局版控服務器集羣;

  4. 在做業平臺下發更新操做後,UJOBS的agent取得該次更新的版控服務器地址、變動清單以及版本信息;

  5. 從版控服務器拉取更新文件到本地執行預約的更新腳本;

同時在UJOBS執行的過程當中可實時查看輸出的日誌。當遊戲版本更新出現異常,有兩種回滾方式:第一種,遊戲服務器上保留歷史版本,異常時回退到歷史版本;第二種,覆蓋回滾,將老版本再次發佈進行回滾。

 

數據庫備份與恢復

  

相對於遊戲版本更新備份而言,數據庫備份更爲重要。ALL IN ONE模式或者非集羣模式的遊戲業務場景下,會存在多達好幾千個MySQL實例,如果要按常規的MySQL備份方案來實施,管理難度和成本都要翻好倍。所以遊族網絡採用Xtrabackup在主庫上直接備份數據文件方式,備份文件暫存本地;本地備份完成後在備份系統選舉一臺遠程服務器進行異地備份;備份策略每小時一次備份,半小時本地備份半小時遠程備份。該備份方法在單主庫業務場景下多是最靠譜的數據備份方案,但備份過程對主庫會有影響、(限制IO操做),最壞狀況下可能出現1小時的數據丟失(業務接受少許的數據丟失)。

 

在數據恢復方面,經過一鍵恢復工具,只須要提供恢復的IP、時間段和業務信息(如庫名)便可實現數據恢復;24小時內的數據經過本地的數據恢復(結合二進制日誌),超過24小時的數據經過異地數據恢復。

 

雲上遷移歷程

  

如今遊族已經將幾款老遊戲遷移到阿里雲上。在將ALL IN ONE架構平滑遷移到雲上的過程當中,首先要求就是遷移過程不能長時間停服,只能接受正常的版本更新的停服時間。整個遷移過程分爲如下幾步:

第一步提早準備資源,在阿里雲提早申請好資源,初始化環境並把VPC與自有機房的網絡打通,實現內網互通爲數據同步作好準備;

第二步提早同步數據,使用Xtrabackup備份在線把MySQL配置成主從同步模式,將數據同步到阿里雲ECS,在一段時間後完成數據遷移。

第三步正式遷移,正常的遊戲停服維護時間(0.5~2小時)就可完成業務上阿里雲的遷移。目前已經平滑完成3款遊戲產品的遷移,每款產品準備時間3~5天,正式遷移用時1~2小時,在阿里雲平臺使用的虛機超過1000臺。

圖三:新遊戲上阿里雲部署方案

 

上圖爲ALL IN ONE架構遷移在阿里雲後的遊戲部署:遊戲邏輯運行在ECS上,業務中使用VPC網絡,經過自建的ULB對外提供服務。遊族網絡下一步計劃將集羣模式部署在阿里雲平臺上,遊戲邏輯將在ECS集羣運行,後端數據存儲在RDS集羣中,前端經過SLB和負載均衡保證業務高可用,同時會接入LOG和大數據計算服務MaxComputer確保大數據業務。

 

在遷移到雲的過程當中,阿里雲的技術支持起到了關鍵做用,線上線下及時溝通,以及特定技術的定製,保證了整個遷移過程的順利進行。

 

如何去選擇合適的數據庫?

 

在遊戲遷移過程當中,遇到了不少困難,其中一點是選擇自建MySQL仍是RDS。根據遊戲遷移經驗,解決該問題,他認爲應從如下三個因素進行考慮:

1.實例數量:實例數量多且業務規模小(無需進行鍼對性的優化)適合自建MySQL服務;實例數量很少業務相對會比較集中,數據庫負載較高須要針對性的進行優化適合使用RDS服務;

2.數據大小:數據量的大小會直接影響到數據庫性能和數據備份的機制,數據量越大越須要對數據庫進行精細化管理,數據的備份難度也越大,這種狀況下建議使用RDS服務,反之可自建;

3.成本覈算:從實例規格來看RDS會比ECS自建MySQL要貴,但如果必須用到RDS的某些特性(如:數據安全和穩定性)時成本也就不會放在首要位置了。

 

與此同時,大數據量的自建MySQL能夠採用延時同步的方法,此方法已在遊族網絡的女神聯盟(手遊)的集羣架構方案中在使用。遊族運維團隊首創的數據備份系統、UJOBS、業務網關等獨具特點解決方案確保了其業務量在行業內處於領先地位。

 

QA環節:



1、遊族目前的運維人員數量是多少?

 

答:遊族網絡最初運維團隊在二十人以上,通過技術優化後,目前團隊人數在十人左右。從原來的十幾款產品到如今的三十幾款產品,運維業務量增加一倍,整個運維團隊人員縮減一半。團隊不斷將技術轉化爲生產力,這是一個持續推動的過程。

 

2、從運維小白到總監的成長過程?

 

答:首先,我對運維這個行業保持很高的興趣。從遊戲對戰平臺接觸運維開始,就願意持續花時間投入遊戲運維,曾耗費兩天三夜的時間來處理運維中遇到的故障。固然最初也是從底層的運維人員作起,團隊管理是被逼出來的,是一個慢慢成長的過程。在團隊中,學習應居於首位,每一個運維人員須要不斷地學習,提高本身的能力。

 

3、DB除了MySQL還有其餘類型嗎?好比NoSQL這類數據庫是如何管理和部署的?

 

答:遊族網絡的產品絕大多數都是使用的MySQL,有少數產品使用了Mongodb,由於量少暫時仍是經過手工管理;緩存業務有使用Redis但不存儲關鍵數據,Redis的數據備份使用數據備份系統進行集中管理,全部的軟件部署都是經過標準化的業務模板進行管理的。

 

4、在新方案中,大數據計算服務MaxComputer的應用場景是什麼?

 

答:在遊族以前的架構中,遊戲日誌是分開存儲,易丟失。在新的架構中,經過Log服務將遊戲日誌蒐集到大數據計算服務MaxComputer,對後續的遊戲和運維數據分析提供便利支持。

 

5、數據庫的部分是單DB多實例嗎?有沒有啓用分佈式DB的架構呢?

 

答:ALL IN ONE架構下,在一個MySQL實例中只運行一個業務;在集羣架構下,在單DB實例下,會運行多個業務,分佈式DB架構也相應是必備的。

 

6、遊族私有云是用的OpenStack,自己組件不少,後續和公有云之間如何銜接的?

 

答:目前遊族使用OpenStack僅限於機房,短期內不會與社區版本同步,機房內修改和使用都很簡單,整個OpenStack定製和修改很少,更多着重於框架的使用。

 

7、國際節點和國內節點的高可靠鏈路如何創建?

 

答:該鏈路使用的基本資源是遍及全球的阿里巴巴骨幹網,阿里雲是將本身的資源分享出來給使用VPC的客戶,實現國內外高可靠鏈路的創建。


視頻回放地址:

http://click.aliyun.com/m/4092/

幻燈下載地址:https://oss.aliyuncs.com/yqfiles/a4fa09bc8a0a2a559df4b93839437a88.pdf

 

**************************************************************************************

來自行業CTO的深度實踐分享, 第3期在線培訓直播報名開始!

主題:《基於混合雲的OTA比價系統、精準運營和大數據用戶推薦》

分享者:驢媽媽副CTO邵漢成

分享內容:主要包括採用混合雲,進行產品比價跟價;進一步提高精準運營並提高產品競爭力;並結合大數據分析,根據用戶喜愛和個性數據,推薦性價比高的產品。

直播時間:2016年3月11日上午10:00-11:00 (含問答環節)

報名地址:https://yq.aliyun.com/webinar/join/3

相關文章
相關標籤/搜索