2023年12月19日透且,今天 sealos 的公有云一個小時內被攻擊 3 次性誉,每次 幾G 到 十幾G 的流量,都是 CC 攻擊(七層多 IP 地址模擬用戶請求)杨蛋,這種比 DDos 還難防兜材,現(xiàn)在凌晨一點,剛處理完所有臨時方案逞力,以及咨詢一些外部的安全專家曙寡,后續(xù)會有一系列的加強防控來保障穩(wěn)定性。有些感想寇荧,怕睡一覺忘了举庶,趕緊寫下來。
致歉
首先要給所有喜歡 sealos 的同學道歉揩抡,這幾天的連續(xù)攻擊讓平臺出現(xiàn)幾次幾分鐘的不可用户侥,比如今天每次大概會 3~5 min, 流量是瞬間過來把 15 臺 nginx 全部打爆的,然后 k8s 會自動拉起恢復峦嗤,我們停止掉了被攻擊應用蕊唐,并把資源擴大了一倍來硬抗,這是臨時方案烁设。
被攻擊之后我們的穩(wěn)定性數(shù)據(jù)是 99.9%刃泌,對于穩(wěn)定性要求高于這個數(shù)字的業(yè)務可以考慮緩一緩使用我們的公有云,先可以跑一些開發(fā)測試或者周邊應用,核心業(yè)務可以考慮獨立部署方案耙替。
后面平臺會按照 SLA 承諾給收到損失的用戶相應賠償,有遷移走的用戶可以聯(lián)系我們對未消費余額全部退款卸例,再次表示深深的歉意咱扣。
這一天遲早要來
在大概一個月前還沒被攻擊的時候举畸,laf 作者老根吃飯時就在講,為什么 sealos 還沒受到攻擊铜幽,這不合理,沒被攻擊反而讓人感到不安〈。現(xiàn)在頭頂?shù)膭κ锹湎铝顺祝@是成為一朵成熟的云的必經(jīng)之路。沒想到來的這么快母截。
創(chuàng)業(yè)一年中遇到前所未有的挑戰(zhàn)
創(chuàng)業(yè)我們選擇了一條極難到忽,極讓人興奮的路,做公有云清寇,這怎么看都不應該是一個小團隊能做的了的事喘漏,我嫌難度不夠再增加一點:做一個多租戶的容器公有云。還可以把難度再加一點:先做國內华烟。最終想做成一個優(yōu)雅的牛逼的公有云翩迈,然后任何人都可以直接擁有這個云操作系統(tǒng),一鍵裝起來一個對標公有云能力的云盔夜,磨平公有云私有云的邊界负饲。
創(chuàng)業(yè)前雖然也做過非常多有挑戰(zhàn)的事,比如容器云支撐整個訊飛核心研發(fā)平臺喂链,深度學習平臺的 GPU 批任務 碎片化返十,當時做了一個亞洲最大的 GPU 集群,后面在 k8s 上完全取代 openstack 的創(chuàng)世系統(tǒng)衩藤,在阿里云的時候應用交付平臺和開源 sealer 等吧慢,但這些大多都是私有云,和公有云不是一個挑戰(zhàn)級別赏表。
創(chuàng)業(yè)時我們在技術上是激進的检诗,現(xiàn)金流上是保守的,因為我認為前沿的不太成熟的技術別人不敢用瓢剿,我敢 這就是創(chuàng)業(yè)公司的競爭優(yōu)勢逢慌,不成熟的技術你讓他成熟了這就成為你建立壁壘的磚塊。當有長期的積累间狂,這朵云穩(wěn)定運行超過 2 年時攻泼,我們就會達到原子彈爆炸的臨界值,沒人能拒絕這樣優(yōu)秀的東西了。
第一次大的故障是 2023.3.17號忙菠,記的這么清楚是因為公司一周年慶祝何鸡,我們買了蛋糕水果,結果 laf 剛上線沒幾天就掛了牛欢,全公司核心人員修復了 15個小時骡男,蛋糕擺在那兒就沒時間切了。最終原因是因為用了某平臺的輕量服務器傍睹,網(wǎng)絡包紊亂隔盛,后來全部切走,低成本是要付出代價的拾稳。
后面幾次故障是 laf 的用戶迅速暴漲吮炕,導致 mongo 的租戶迅速突破上限,很少有這種多租戶共享一個實例的場景访得,影響到了我們的用戶龙亲,其中有一個用戶在北京,我就過去給他們道歉了震鹉,并承諾無論花多大代價都必須把他們的穩(wěn)定性做好俱笛,后面幾乎整個 laf 團隊都鋪在這個事情上,中間過程故事很多传趾,已經(jīng)到了我們幫助用戶去調優(yōu)代碼的程度了迎膜,當然穩(wěn)定性問題是沒有那么好解決的,但是最終還是收斂下來了浆兰,現(xiàn)在這個客戶今年已經(jīng)從 0 開始有大幾百萬用戶了磕仅,這種背靠背作戰(zhàn)讓我們很有成就感,就像在爬一座又一座山簸呈,中間我們可能被劃傷榕订,摔倒,但是沒死蜕便,變禿了也變強了劫恒。
然后就是網(wǎng)關,我們確實幾乎市面上所有的網(wǎng)關都嘗試用了一遍轿腺,測試了一遍两嘴,都有不同程度各種各樣的問題。 我自己遇到這些問題是興奮的族壳,這就意味著機會憔辫,意味著我們解決了這些問題就會變成競爭力,所以我們不斷死磕難點仿荆。比如我們正在用的 k8s 剛剛 GA 的 Gateway API贰您,我們會充分的壓力測試與解決其中還不太成熟的問題坏平,又比如我們一定要把數(shù)據(jù)庫穩(wěn)定的跑容器里。
最近遇到的就是被攻擊锦亦,原因是因為 sealos 上跑了大量的 GPT 相關的應用舶替,某些應用的流量又特別大,而這些應用的競爭對手就會惡意攻擊孽亲。我們做過充分的性能測試坎穿,比如幾十萬 QPS 都可以輕松扛住,但是攻擊者是下血本了返劲,流量打的非常之大,隔三差五就來兩下栖茉。我們后續(xù)會通過 tls 特征分析篮绿,http2 以及 ip2local 幾個層面來綜合解決 cc 攻擊的問題。這次之后我們又將一次脫胎換骨吕漂,真的我現(xiàn)確切的感受就是這樣亲配,一個產品的強大是要經(jīng)過苛刻的場景千錘百煉的,高手的身上都是傷疤惶凝。
這次故障用戶里面就會出現(xiàn)兩種人吼虎,一種是謾罵聲,說穩(wěn)定性差苍鲜,體驗差思灰,服務差,我十分理解混滔,也多少有些失落洒疚,確實我們不完美,我們在努力改進坯屿,也盡自己所能去做一些彌補油湖,當我們足夠強大的時候,歡迎回來领跛。 另外一種是支持和鼓勵乏德,讓我非常感動,群里很多做網(wǎng)絡安全的同學主動聯(lián)系我吠昭,給我們提供非澈袄ǎ靠譜的方案,甚至共享一些付費數(shù)據(jù)來為我們提供更好的防護能力怎诫,以前 laf 故障的時候也是瘾晃,有些客戶給我們發(fā)紅包,說修復故障辛苦了幻妓,是個好項目蹦误,無論遇到什么困難一定要做下去劫拢,這些用戶真的是我們的前進動力。
穩(wěn)定性與成本
很難的一件事就是用戶不接受你不穩(wěn)定這合情合理强胰,同樣不接受成本高舱沧,而往往有時候就是需要投入更大成本來解決穩(wěn)定性問題,比如我們這些遇到的偶洋,一種解決方式就是把流量抗下來熟吏,那就需要耗費大量服務器,這就是成本玄窝,或者加 waf ddos 防護這也是成本牵寺,這些隱性成本挺多用戶要么不認,要么用不起(也有原意用的)恩脂。所以成本和穩(wěn)定性之間就形成了一種矛盾帽氓。而且這種 CC 攻擊如果攻擊者足夠專業(yè)的話讓你沒法做特征分析,那么理論上可能真的只有硬抗下來俩块,抗的這個成本算誰的黎休。
所以我現(xiàn)在能理解為什么公有云貴了,就是為了解決那剩下的 10% 問題玉凯,需要花 200% 300% 的成本去解決势腮,比如多副本,比如機房灌水漫仆,等等捎拯。
這次被攻擊之后讓我更加堅定擁抱公有云,確實云在底層解決掉了很多問題歹啼,如果是托管服務器遲早都會遇到這些問題玄渗,然后花數(shù)倍的成本云解決。 反而通過高效充分的云上調度手段能在公有云上把成本進一步降低狸眼。
總之藤树,不穩(wěn)定 用戶罵你,貴 用戶亦罵你拓萌。 我是覺得罵的對岁钓,不罵不進步。技術有意思的點也在這微王,解決矛盾問題屡限,比如穩(wěn)定性與成本的矛盾,比如功能強大與復雜度的矛盾炕倘,這些新的牛逼的技術就是為了能找到一個優(yōu)雅的方式能兼顧钧大。
涅槃重生
我們還是一如既往的走技術激進路線,穩(wěn)定性的問題是一定會被收斂的罩旋,sealos 的核心組件就那么多啊央,一塊一塊硬啃也能啃下來眶诈,今天暴露的問題是為了明天的高魯棒性,要想涅槃重生得把自己架在火上烤瓜饥,公有云就是我們的試金石逝撬,預計半年到一年的時間我們可以解決掉絕大多數(shù)核心問題,倒時一個穩(wěn)如老狗 便宜 簡單 開放的云會綻放在大家面前乓土。
sealos 以kubernetes為內核的云操作系統(tǒng)發(fā)行版宪潮,讓云原生簡單普及
laf 寫代碼像寫博客一樣簡單,什么docker kubernetes統(tǒng)統(tǒng)不關心趣苏,我只關心寫業(yè)務狡相!