所講解的是一個(gè)防御方法,至于是否有用還是要看你的實(shí)際情況。
1、安全網(wǎng)盾(WAF)
傳統(tǒng)的請(qǐng)求模式是,訪問(wèn)一個(gè)鏈接,首先經(jīng)過(guò)的步驟是在DNS服務(wù)器上解析這個(gè)域名獲取源IP地址,這個(gè)ip地址就是服務(wù)器的實(shí)際網(wǎng)絡(luò)地址。那么我們的第一步防護(hù)就是隱藏服務(wù)器的真實(shí)ip地址,并對(duì)所有的請(qǐng)求進(jìn)行一次篩選,篩選出正常的入流量,剔除不正常的流量防御攻擊的產(chǎn)生。 原理結(jié)構(gòu)如下圖
安全網(wǎng)盾模式優(yōu)點(diǎn)(阿里云WAF網(wǎng)盾)
隱藏了我們?cè)捶?wù)器IP地址,ping 我們域名解析到的地址是安全網(wǎng)盾的地址
所有的請(qǐng)求流量都經(jīng)過(guò)安全網(wǎng)盾的一次篩選后才會(huì)將通過(guò)檢測(cè)部分的流量轉(zhuǎn)發(fā)到源服務(wù)器進(jìn)行處理,并將處理的結(jié)果返回給客戶端
網(wǎng)盾篩選請(qǐng)求流量的時(shí)候就區(qū)分了哪些流量是用戶流量,哪些流量是異常流量。
能實(shí)時(shí)監(jiān)控全國(guó)各個(gè)地區(qū)的流量分布,以及各地區(qū)的請(qǐng)求次數(shù),以及請(qǐng)求源ip地址,方便我們快速定位攻擊源,并找到相應(yīng)的處理辦法。
能通過(guò)這些監(jiān)控?cái)?shù)據(jù)判定哪些ip是異常ip地址,禁止這些網(wǎng)段的ip訪問(wèn)
2、負(fù)載均衡 - 流量分發(fā)(SLB)
當(dāng)訪問(wèn)流量大的時(shí)候,一臺(tái)服務(wù)器也許很難支撐住這么大的運(yùn)算量,那么一臺(tái)撐不住這么多計(jì)算量,就用多臺(tái)服務(wù)器來(lái)分?jǐn)傔@部分流量,引導(dǎo)請(qǐng)求進(jìn)入不同的服務(wù)器進(jìn)行計(jì)算解析。這時(shí)候我們就加入一個(gè)中間件來(lái)引導(dǎo)請(qǐng)求流量進(jìn)入不同的服務(wù)器。
域名解析到負(fù)載均衡器上負(fù)載均衡、負(fù)載均衡器收到來(lái)自客戶端的請(qǐng)求流量后,將請(qǐng)求轉(zhuǎn)發(fā)到掛載在負(fù)載均衡器下面的服務(wù)器集群中(負(fù)載均衡器實(shí)時(shí)監(jiān)聽(tīng)各服務(wù)器的運(yùn)載性能,優(yōu)先選擇性能較好cpu指數(shù)低的那臺(tái),也可以通過(guò)設(shè)置轉(zhuǎn)發(fā)權(quán)重設(shè)置轉(zhuǎn)發(fā)概率)。
因請(qǐng)求都是轉(zhuǎn)發(fā)到了不同的服務(wù)器,那么大家可能就會(huì)有一個(gè)疑問(wèn),我是有狀態(tài)的請(qǐng)求,即是session會(huì)話保持怎么辦,我第一次訪問(wèn)的是服務(wù)器A,第二次我訪問(wèn)的服務(wù)器B,怎么保持這個(gè)session會(huì)話的有效。
解決辦法:
1、設(shè)置負(fù)載均衡器的會(huì)話保持設(shè)置(并且需要設(shè)置會(huì)話保持時(shí)間)。
2、采用redis 存儲(chǔ)session數(shù)據(jù),取消掉默認(rèn)的采用文件的形式保存session數(shù)據(jù)
3、所有的服務(wù)器讀取sessiond數(shù)據(jù)的數(shù)據(jù)源不從本地服務(wù)器文件上讀取,都從redis數(shù)據(jù)庫(kù)中讀取出來(lái)(客戶端多次請(qǐng)求域名是不變的,所以只要域名不變,那么在該域名上獲取的session_cookie值依然會(huì)隨請(qǐng)求提交到服務(wù)上,服務(wù)器收到session_cookie,就會(huì)去redis中查詢此session_cookie 所對(duì)應(yīng)的session會(huì)話數(shù)據(jù))
4、數(shù)據(jù)的一致性:同redis操作session一樣,要保持不管訪問(wèn)到了哪臺(tái)服務(wù)器,我獲取到的數(shù)據(jù)都是一樣的,這樣就需要各個(gè)服務(wù)器共用一個(gè)數(shù)據(jù)庫(kù)。
由此,就完成了負(fù)載均衡的一個(gè)簡(jiǎn)單簡(jiǎn)單架構(gòu)模型
它的優(yōu)點(diǎn):
1、同WAF一樣,他也可以禁用某些的IP網(wǎng)段地址的訪問(wèn),但查詢IP地址需要通過(guò)查詢?nèi)罩精@取訪問(wèn)ip段。
2、流量分發(fā)
3、采用的是內(nèi)網(wǎng)請(qǐng)求,速度快,不占用服務(wù)器的外網(wǎng)帶寬,占用的是內(nèi)網(wǎng)帶寬。(當(dāng)然也要是你的負(fù)載均衡器和服務(wù)器在同一個(gè)服務(wù)區(qū),如果是不同的服務(wù)區(qū)也是用的公網(wǎng))
3、OSS 文件存儲(chǔ)
這個(gè)服務(wù)就干一件事情,提供給用戶下載靜態(tài)資源的一個(gè)高性能服務(wù),比如我們開(kāi)發(fā)系統(tǒng)中所有的圖片、css、js、媒體資源、等其它靜態(tài)資源都可以向這個(gè)地方放置,客戶端的請(qǐng)求流量從服務(wù)器走的都只是生成一個(gè)靜態(tài)的html,而客戶端在解析html文件需要引入的外部靜態(tài)資源都從OSS上走,不再?gòu)姆?wù)器上走。
這樣做的好處:
1、減小了服務(wù)器的公網(wǎng)帶寬入流量和出流量(節(jié)約了這部分流量可以給更多的用戶提供頁(yè)面下載流量)
2、減小了服務(wù)器的I/O讀寫(xiě)(服務(wù)器供用戶下載靜態(tài)資源也是需要消耗一部分計(jì)算性能的,也可以節(jié)約出來(lái)進(jìn)行更多的計(jì)算)
3、成本也減少了很多(OSS的計(jì)費(fèi)標(biāo)準(zhǔn)和升級(jí)服務(wù)器帶寬的成本具體可以去參考一下性價(jià)比)
OSS的好處
1、沒(méi)有帶寬限制(就是不管有多少用戶同時(shí)訪問(wèn),都可以提供穩(wěn)定的服務(wù))
2、有完善的文件管理工具(阿里云有提供可視化的界面操作管理)
4、RDS數(shù)據(jù)庫(kù)讀寫(xiě)分離(數(shù)據(jù)庫(kù)集群)
還有一種情況就是我們開(kāi)發(fā)的應(yīng)用對(duì)數(shù)據(jù)庫(kù)的操作比較多,或者也叫迸發(fā)量大后對(duì)數(shù)據(jù)庫(kù)的要求比較大,怎么辦呢?
1、做緩存,將一些需要不經(jīng)常更新,且需要經(jīng)常使用的數(shù)據(jù)緩存到本地文件中或者緩存到redis等緩存數(shù)據(jù)庫(kù)中(緩存數(shù)據(jù)庫(kù)是將數(shù)據(jù)緩存到內(nèi)存當(dāng)中,所以讀寫(xiě)速度特別快,如果迸發(fā)量大導(dǎo)致數(shù)據(jù)庫(kù)內(nèi)存溢出就比較危險(xiǎn)了,所以選擇產(chǎn)品的時(shí)候要預(yù)估自己的預(yù)期)
2、增強(qiáng)數(shù)據(jù)庫(kù)的讀寫(xiě)能力(讀寫(xiě)分離)
讀寫(xiě)分離的原理本質(zhì)是主數(shù)據(jù)庫(kù)只執(zhí)行寫(xiě)操作,讀操作由讀數(shù)據(jù)庫(kù)執(zhí)行,從而達(dá)到整體的數(shù)據(jù)庫(kù)性能的提升,而數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步是讀數(shù)據(jù)庫(kù)每隔n(n>0整數(shù))秒去主庫(kù)同步數(shù)據(jù)。
阿里云的數(shù)據(jù)庫(kù)中間件其實(shí)幫我們做很多的事情,比如自動(dòng)識(shí)別當(dāng)前sql執(zhí)行的是寫(xiě)操作還是讀操作,如果是寫(xiě)操作就會(huì)自動(dòng)將該sql交給主庫(kù)執(zhí)行,如果是讀操作就將該操作交給從數(shù)據(jù)庫(kù)執(zhí)行。且自己實(shí)現(xiàn)了數(shù)據(jù)庫(kù)長(zhǎng)連接的一個(gè)實(shí)現(xiàn)(比如php是只能支持短鏈接的一個(gè)語(yǔ)言,采用短連接 連接中間件操作數(shù)據(jù)庫(kù),由中間件實(shí)現(xiàn)數(shù)據(jù)庫(kù)的長(zhǎng)連接,保證了數(shù)據(jù)庫(kù)的穩(wěn)定性)
完整的系統(tǒng)硬件設(shè)施結(jié)構(gòu)示意圖