上週遊戲伺服器被ddos攻擊了,伺服器頻寬瞬間拉滿導致全部伺服器宕機。於是對我們現有的伺服器結構做了些優化和調整以應對攻擊。
先說說以前的伺服器結構如圖所示:
以上只有乙個接入伺服器充當中轉的作用。如果接入伺服器宕機了,基本上全服都掛了。接入伺服器的access程序會判斷如果是協議格式不正確的連線會主動斷開連線,攻擊者顯然是研究了我們的協議格式,在客戶端和邏輯伺服器建立連線的情況下持續傳送了大流量包導致了接入伺服器的頻寬撐爆,以至於導致全服都掛了。
這個結構同樣存在這瓶頸,一旦流量上來了接入伺服器通用也會撐不住,因此趁著這次攻擊的機會改造成了如下:
相比舊的伺服器結構,新增了乙個入口伺服器,以及增設了接入伺服器。客戶端連線過來首先進入了入口伺服器,拉取想要進區服的區服列表,依據不同區服配置的不同網域名稱和相應的接入伺服器建立連線。入口伺服器只保留最基本的伺服器配置,遊戲配置以及一些公告的配置。
同時購買了阿里雲的ddos防護包,入口伺服器除了ngix外不再有其他和遊戲相關的程序,攻擊者若想致使全服宕機攻擊入口伺服器需攻破阿里雲的安全防護,難度增大。
如果攻擊者攻擊接入伺服器,需要同時拉滿多個接入伺服器的頻寬,增加了攻擊者的成本。另外在接入伺服器的access程序上我們也做了相關的流量檢測,一經發現短時間內同乙個連線的累計流量過大會主動斷開連線。假如攻擊者攻擊接入伺服器成功,入口伺服器上配置的公告依舊能被玩家接收,可以及時通知玩家伺服器狀態。
安心睡覺,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
記一次伺服器事故
mysql資料庫報錯 can t create write to file tmp sql 6ccc 0.myi 在開始刪除之後,所有服務就已經恢復正常執行了,接下來就是優化那個session了,哎又是埋坑.最後附上inode擴容的方法 但是需要注意,手動擴inode,一般是新建分割槽時設定的,該操...
記一次北美遊戲伺服器冬令時夏令時切換引發的時間問題
由於在執行的某slg遊戲在國內蘋果商店多次拿到推薦,我們打算把它做到海外,部署按照全球唯一服的架構來部署,運維同事將集群中的各個模組選擇部署在美國芝加哥的機房。上線一段時間後客服反饋平時凌晨3點重置玩家每日資料的時間變成了4點,往後推遲了1小時,當時懷疑是不是出bug了,查了 發現這裡有貓膩 pub...
遊戲伺服器結構分析 MapServer
狀態 buff 持續時間 cd 物品 items 屬性 property 空間資產 space info 狀態機 state machine 重定義基本資料型別 type define 基礎時間 xtime 原子操作 atomic bit位管理 bitset 智慧型指標 smart ptr 引用計數...