670
技術社區[雲棲]
Cmdb、Saltstack、Web化,莉莉絲遊戲雲上運維心得分享
在2017遊戲行業全球同服和安全攻防技術沙龍上,來自莉莉絲遊戲的蔣海洋分享了《莉莉絲遊戲雲上運維之路》。他通過介紹莉莉絲遊戲的概況、進化曆程,引出了莉莉絲遊戲使用的cmdb,Saltstack以及Web化技術,並且分享了莉莉絲遊戲在運維方麵的心得。
以下內容根據直播視頻整理而成。
目前概況
莉莉絲遊戲采用的是雲上架構,目前擁有兩個運維工程師,4款運營中遊戲,500+雲主機,200+RDS。線上沒有一台物理、實體的服務器,也沒有使用任何物理的機房。
進化曆程
之前做的比較好的一款遊戲是《Dota傳奇》,蔣老師進入莉莉絲遊戲之後初步了解過該遊戲的運維情況。《Dota傳奇》運維的基本方式是以txt文檔來管理基本的主機資源,比如IP、數據庫、遊戲的服務器名字,如果需要進行操作的話使用Python寫的腳本,利用裏麵的expect模塊以及多線程進行操作,其存在的問題是速度特別慢,比如在發布版本部署文件的時候。
在做美版發行的時候,莉莉絲引入了cmdb用來管理基礎的資源信息等,遠程執行則使用了開源的軟件saltstack來進行操作。做完這些之後,服務器的同事想要自己做製作的操作等,所以需要web化開放出來。
Cmdb
cmdb是構建自動化流程的基礎,所有的資源等信息都在其中進行管理,比如遊戲和配置等都是從cmdb中拉取出來的,包括裏麵的充值等都是從cmdb拉取。之前使用txt進行管理的時候,很多地方都有對應的東西,如果有一個地方需要進行變更的話,其他地方如果沒有關聯到就可能出現問題。cmdb的管理純粹是基於雲平台上的配置管理,沒有物理服務器的話不用像實體機房一樣關心服務器的位置、端口,隻需要管理IP的信息、硬盤、ERP等。
上圖是莉莉絲自製的管理平台,主要分為三層結構:業務管理,包括遊戲等;拓撲模型,比如遊戲的集群模塊等;業務實例,每個模塊下麵的實例。
莉莉絲擁有的資源如上圖所示,主要為雲上的資源,固資編號是根據雲廠商的ID得到的,又相對實例化,還涉及到後期的按項目拆分賬單等。將資源都管理起來之後,底層調用了雲的API,如果需要買一些組件的話隻可以直接在裏麵點一下,客戶端會聯動雲平台的API把資源灌到裏麵來,然後把資源分配給項目使用。
saltstack
saltstack是開源的快速遠程執行平台,是基於Python開發的,部署簡單方便,有自己的API便於進行二次開發。
最上方是一個Master,下麵會掛很多minion,Master可以對minion進行遠程的操作。如果在阿裏雲上用了很多的區域,相當於在中間加了一些Syndic節點進行統一管理。我們會根據業務關係去調cmdb裏麵存儲的業務信息,比如需要對某個模塊進行操作的時候會到cmdb裏麵去找需要操作的命令有哪些,然後將這些命令下發下去。執行完命令會將結果返回回來,中心Master就會看到這些返回的結果,整個的執行速率非常快。
Web化
後期,一些開發同事也想用saltstack,但是純粹的命令行會讓人覺得不太方便。所以做了一個web化的東西方便使用。它也成了一個交互平台,比如想要知道增加一個模塊每db需要多少機器,那麼可以告訴他需要在db的集群下麵開一個模塊,分好機器之後告知提問者可以直接進行操作即可。Web化可以降低使用門檻,固化操作流程可以減少失誤。
上圖是可視化作業平台,有幾個常見的功能:如果想看某個文件是否下發下去或者當前的狀態,可以點擊快速腳本執行,可以在下麵直接進行腳本編輯,然後指定執行的目標路徑、執行賬戶,通過配置平台選擇執行的機器,按照模塊把所需要的集群都勾選上,執行完之後把最後的執行結果返回回來在業務平台上展示出來。這樣對於開發的同學非常方便。
心得
首先,莉莉絲的人力非常少,所以考慮用開源的軟件,比如監控使用小米的open-falcon。在遊戲行業,標杆行業騰訊的運維平台藍鯨已經做到了2.0版本,自己做平台的時候也可以參考這些企業的運維平台,但是由於擔心安全問題可以不直接使用。
莉莉絲使用了很多成熟的雲產品,阿裏雲的RDS已經做得非常成熟,可以做主從同步,出現問題時也可以回滾到任意時間點,小公司使用起來非常方便,沒有必要自己來搭相關數據庫。這樣就不需要自己做備份相關的事情,可以省很多時間和能力,而且可以動態擴容。如果用主機來搭數據庫的話需要考慮到了瓶頸需要怎麼做,早期成本會比較高,用RDS可以先選擇比較小的量,到了一定階段的時候再進行擴容即可。很少用到CDN做雲棧,隻需要用OSS上傳回源。由於曾經受到了DDos攻擊,所以使用了阿裏雲的anti-ddos進行防範。
利用好阿裏雲的API接口,通過寫一些腳本來使用API接口可以提高效率。最好一開始就尋求專業支持,在架構設計階段就可以聯係做架構的指引,這樣對於後期的維護相對簡單很多。最後更新:2017-04-19 09:00:41