第二節架構說明
1. 硬體需求:
服務 | 機型 | 數量 | 備註 |
基礎服務 | C1 | 6 | 100萬線上以內不需要增加 |
日誌存儲 | TS3 | 4 | 100萬線上以內不需要增加 |
資料庫 | A5 | 6 | 50萬線上以內不需要增加 |
邏輯服務 | C1 | 3 | 每5萬線上用戶需增加一台 |
處罰判定 | C1 | 1 | |
日誌分析 | C1 | N | 每個大區一台伺服器 |
2. 配置項目規格:
| 參考基本配置 | 額外需求 |
機型 | CPU | 記憶體 | 磁片 | 是否需要內網IP | 是否需要公網IP | 作業系統 | Raid需求 |
C1 | 數量:1個 | 8G | 500G | 需要 | 不需要 | SUSE Linux Enterprise Server 11 (x86_64) 2.6 | 不需要 |
四核 2.5GHz及以上 |
A5 | 數量:1個 | 32G | 12*146G | 需要 | 不需要 | SUSE Linux Enterprise Server 11 (x86_64) 2.6 | 需要 |
四核 2.0GHz及以上 |
TS3 | 數量:1個 | 8G | 12*1TB | 需要 | 不需要 | SUSE Linux Enterprise Server 11 (x86_64) 2.6 | 需要 |
四核 2.0GHz及以上 |
(以上機器需求為初期階段的必須資源,後續如出現更高的安全風險,需要接入更多的對抗方案,屆時機器方面的需求也會相應增加。)
| 参考基本配置 | 额外需求 |
|
机型 | 磁盘 | Raid需求 | 分区需求 |
A5 | 12*146G | 需要(2Raid1+6raid5)+(4raid5) | 1)、2块磁盘采用2RAID1,作为系统分区 |
|
/:10G |
/usr/local:20G |
/data:剩余空间 |
|
2)6块磁盘采用6RAID5,作为/data1 |
3)其他4块磁盘使用另外raid卡,采用4RAID5,作为/data2 |
|
TS3 | 12*1TB | 需要(2Raid1+6raid5)+(4raid5) | 1)、2块磁盘采用2RAID1,作为系统分区 |
|
/:10G |
/usr/local:20G |
/data:剩余空间 |
|
2)6块磁盘采用6RAID5,作为/data1 |
3)其他4块磁盘使用另外raid卡,采用4RAID5,作为/data2 |
3. 頻寬:內網頻寬每10萬線上需要300Mbps。
4. Gameserver資源佔用:Gameserver上需要運行接入的安全程式,cpu需佔用0.5個核,記憶體500M, 硬碟4G。
提供給運維操作的安裝包為.tgz格式,安裝包中已預先創建好的目錄結構,此外含有安全服務對應的二進位檔案、服務啟停腳本和清理腳本等。
Linux安裝包解壓後的目錄結構如圖1所示:
圖1 Linux安裝包目錄結構
其中二進位檔案和腳本均在secsvr/bin目錄下,
SDK組件:libantisvrimport.so
二進位進程:gunnersvr、secagent、zergsvr
啟停腳本:tss_svr.sh、start_secagent.sh、stop_secagent.sh、reload_secagent.sh
清理腳本:clean_g3_mmap.sh
TP的相關檔一共存在於4個目錄:
1. /home/neople/secsvr/ :TP的進程相關的檔都在目錄
2. /home/neople/game/ : libantisvrimport.so,不需要Neople提供,由TP直接提供給Garena。
antisvrimport_conf.xml,不需要Neople提供,目前在正式機上沒有這個檔。
3./tmp/ : 放置由libantisvrimport.so創建的檔,包括以下:
tss_sdk_*.log*:so列印的log檔,會在當天內,隨時間的增加而增長,正常情況下不超過10MB。不需清理,TP只保留當天的log檔。
tss_sdk_shm_user*: so的使用者管理共用記憶體檔,大小固定,不能清理
dp_*: dp的關鍵設定檔,大小固定,不能清理
tss_sdk_game_svr_id_pool_file* :通道id控制檔,佔用空間小於1kB,不能清理
4./dev/shm : 放置由TP Process生成的共用記憶體檔
第三節 新部署服務
部署步驟:
(1)增加配置伺服器上對應的資訊
在新機器上新部署一套SecAgent服務前,需要聯繫平臺組同事預先在配置伺服器上添加對應的配置,否則服務進程啟動時拉不到配置會導致服務啟動失敗。需要提供的資訊為機器的IP位址,遊戲ID和大區號。
(G3全服後)當運維處遊戲伺服器IP列表有變更時,如增加、刪除機器,增加大區等,需要至少提前一天通知安全平臺組同事。
相關同事:stefzhou, sasukeliu
(2)安裝secagent服務
解壓安裝包後(默認解壓到目前的目錄),將SDK對應的.so檔和secsvr目錄放到對應的目錄下即可。安裝包默認將SO和secsvr子目錄解壓到目前的目錄下。
比如對於DNF遊戲,其SO和secsvr目錄均存放在/data/home/user00/game/目錄下,則只需將安裝包拷貝到game目錄下,然後在目前的目錄下解壓即可:
$ cp INSTALL_PKG.tgz /home/neople
$ cd /home/neople
$ tar zxvf INSTALL_PKG.tgz
安裝好SO和二進位後,需要檢查當前SO和二進位版本號是否為發佈的版本。版本號查看方法可見第四節的說明。
(3)檢查環境
由於服務進程需要寫共用檔,所以要檢查是否已經正常掛載了/dev/shm設備;若沒有掛載則需要手動掛載(注:需要root許可權):
# mount /dev/shm
(4)啟動遊戲伺服器進程
啟動遊戲伺服器時會載入SDK SO,保證遊戲伺服器進程能正常啟動。
(5)啟動SecAgent安全服務
在(1)~(4)都OK之後就可以啟動SecAgent服務了:
# 若secsvr放在目前的目錄下
$ cd /home/neople/secsvr/bin ## 啟動腳本所在目錄
$ sh start_secagent.sh ## 啟動secagent服務
啟動服務完成後,ps查看進程是看到secagent、zergsvr、gunnersvr三個二進位進程,三個tss_svr.sh腳本:
其中sh ../../bin/tss_svr.sh是啟停腳本,每個進程啟動、停止都由這個腳本拉起;同時還監控二進位進程是否正常運行,如果進程意外停止,tss_svr.sh腳本會自動拉取對應的二進位進程。
服務是否啟動成功需要檢查以下幾個方面:
(a)啟動時是否有錯誤log;
(b)日誌檔是否有錯誤log;
(c)帳單是否正常。
如果啟動有問題可參考相關運營文檔或聯繫平臺組開發同事幫忙定位處理。
(6)核對使用者資料是否正常
啟動成功後,還需要核對secagent的帳單,確認secagent進程與後端伺服器資料通信正常。檢查secagent帳單,看是否有後端伺服器下發的資料包,簡單方法如下:
# secagent log所在目錄
$ cd /home/neople/secsvr/run/secagent/log
$ tail -f secagent_bill_20120907.log |grep 404921490 ## 404921490為測試的uin號碼
然後登錄遊戲,進入對應的大區和頻道,看是否有"secsvr notify is change svr"和"secsvr notify rpcode crypt info"這兩條帳單,如下所示:
若有則說明secagent與後端伺服器通信ok;若沒有對應的帳單,則說明資料通道不正常,需要聯繫平臺組同事幫忙排查問題。
相關同事:sasukeliu,errayzhao
第四節 更新服務及開關操作
更新步驟:
(1)停止遊戲伺服器進程;
(2)停止SecAgent服務元件
# 若secsvr放在目前的目錄下
$ cd /home/neople/secsvr/bin ## 啟停腳本所在目錄
$ sh stop_secagent.sh ## 停止secagent服務
(3)運行清理腳本
# 若secsvr放在目前的目錄下
$ cd /home/neople/secsvr/bin ## 啟動腳本所在目錄
$ sh clean_g3_mmap.sh ## 運行清理腳本
(4)更新SO和二進位
由於安裝包在不指定輸出目錄的情況下,預設解壓到目前的目錄,所以僅需將安裝包複製到工作主目錄(如/data/home/user00/game/),然後目前的目錄下解壓即可覆蓋更新SDK SO和secagent二進位檔案:
$ cp INSTALL_PKG.tgz /home/neople/secsvr/bin
$ cd /home/neople/secsvr/bin
$ tar zxvf INSTALL_PKG.tgz # 解壓後覆蓋掉舊版本的SO和secagent二進位檔案
(5)驗證版本資訊
檢查更新後的SO和secagent二進位檔案的版本號是否為需要更新的版本。版本號驗證方式見第4節描述。
(6)啟動遊戲伺服器進程
啟動時檢查SO是否已經被正確載入。
(7)啟動SecAgent安全服務
啟動方式和注意事項同上一節"(5)啟動SecAgent安全服務"小結所述。
驗證版本資訊
4.1 SDK版本資訊
運行objdump查看so的版本號是否為需要發佈的版本:
$ objdump -Dx libantisvrimport.so |grep SONAME
如下圖所示的SO版本號為191:
4.2 二進位進程版本資訊
查看SecAgent服務對應的二進位版本號直接加-v參數即可,注意SecAgent服務對應secagent、zergsvr、gunnersvr三個二進位進程。
如下圖所示,對應的版本號為191版本:
µ /home/neople/secsvr/bin/clean_g3_mmap.sh:這個腳本的功能是清理TP業務的各種臨時文件、共享內存文件等。在df_game_r和TP process都運行的情況下禁止調用。只能在df_game_r和TP業務停止的狀態下才能調用。此腳本實質為清零腳本,在緊急情況下,Garena的技術人員可以在df和TP停機後,調用此腳本,再啟動tp和df解決部分緊急問題。
µ TP業務的啟動順序:在任何df_game_r停機的情況下,都推薦在df_game_r啟動之前,調用clean腳本,啟動TP後再啟動df_game_r
µ 和TP有關的任何不確定操作,麻煩諮詢longma或者其他TP技術接口,並溝通操作的原因、實施方案等。
µ Gameserver開服、停服、擴容、下架等變更時需要知會tencent,並提供變更的iplist, iplist需要包含IP和大區號。
µ Garena需要提供必要的運維人力以支撐Tencet許可權下的機器的現場應急處理(如機器故障時需要進行重啟、更換等)。
µ 版本發佈之前至少預留3個工作日供Tencent對用戶端進行保護工作。
µ 戶端DNF.exe每個版本exe及相應的map檔需要提供給Tencent,其中map盡可能提供明文map。