【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

回顧歷史

 相信有些朋友看過筆者之前寫的這篇文章 《如何爲企業快速設計高可用的阿里雲架構》,並對阿里雲的一些服務和產品的選型有了初步的瞭解,其實這篇文章寫得比較粗,只是對企業選型描述大概的框架,並沒有用太多筆墨來描述具體實現過程、配置操作。而導致有些博友看了也不過癮。

 所以,筆者這就要和大家一起來討論一下《 阿里雲高可用架構之“CDN+WAF+SLB+ECS”》如何實現,以及具體配置過程是怎樣的。爲什麼拿這個架構來討論呢,主要是這個架構目前在企業中使用率比較通用、普遍,也比較有代表性。

 如果在企業中要具體來配置和實現,如果沒有操過的朋友可能會有點暈、還會有點膽怯,具體該如何實現呢?不用擔心。下面我們一起把它玩起來。

架構圖

【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

架構層級關係

CND(入口層)-> WAF(應用層防護)-> SLB(負載層)-> ECS(服務器源站) -> RDS(數據庫)

 域名 cname CDN
 CDN指向WAF
 WAF指向SLB
 SLB負載ECS

說明:在企業中當然還會有其他的服務,比較redis、oss、nfs、監控、彈性ip、日誌等等服務,這些都不是本文的重點,本文的重點主要介紹CDN>WAF>SLB>ECS這幾層服務的關係該如何配置,從哪一層開始配置是最爲適合。

規劃配置思路

無非是兩種思路:從外到內、從內到外。

從外到內:什麼是從外到內呢?剛纔也分析了,即從CDN開始配置,逐漸往內配置一直到最裏面的ECS服務器,這種思路方法筆者不建議。

從內到外:理解了從外到內之後,在來理解從內到外就簡單多了。從最底層ECS服務器開始配置測試,在慢慢的往外層配置和測試,直到CDN最外那一層,建議用這種方法配置,便於在配置過程中的測試及問題排查。

下面我們來看下從內到外的配置方法具體是怎麼實現的(ECS>SLB>WAF>CDN>域名)。

具體實現

1.ECS服務器

服務器上無非是部署項目,在企業中比較普遍的是php項目或者java項目。

  • php項目:服務器上部署nginx+php
  • java項目:服務器上部署nginx+jdk+tomcat

至於具體怎麼配置這些,相信大家都很熟悉。不過筆者建議在nginx的配置時候不建議使用upstream,因爲ecs服務器前面已經有一層slb了。舉個例子吧:

upstream tomcat_server { 
      server 10.0.0.10:8080; 
      server 10.0.0.20:8080; 
}

location / { 
            root  html; 
            index  index.html index.htm; 
            proxy_pass http://tomcat_server; 

像上面這種upstream就可以省去了,ecs前面掛了slb之後,nginx上的upstream就沒有實際的意義了。

2.SLB負載均衡

SLB配置思路

開通SLB > 配置“虛擬服務器組” > “添加監聽”

開通SLB實例

 SLB負載均衡,開通即用。有兩種類型的方式(公網、私網)。顧名思義,公網就是帶公網IP的負載地址。私網就是帶私網IP的負載地址。如下圖:
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

說明:
 本文中選用的是公網負載,因爲在本案中SLB上面(外)有一層WAF,WAF下面(內)必須是公網IP的服務器或SLB,WAF上面(外)爲CDN。

 SLB的計費方式有兩種,流量和固定帶寬,根據公司的預算進行選擇,建議帶寬和規格也要根據業務需求來選型。比如,開通某個SLB,下面掛載的ECS服務器集羣不大,業務訪問量也不多,那麼開通的這個SLB帶寬和實例規格就可以小一點。

 開通SLB還要注意一點,如果公司項目多,ECS集羣多,那麼最好1個SLB對應1個ECS集羣環境。不要爲了省這點錢影響以後業務性能。如果公司就一個項目,就那麼3、5臺ECS服務器,開通一個SLB我覺得完全就夠用了。比如下圖,就開通了好幾個SLB實例,每個SLB對應相應的ECS集羣服務器:
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

配置“虛擬服務器組”

開通好了之後,開始配置,點擊“管理“進入SLB實例,添加”虛擬服務器組“,如下圖
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
把服務器添加到右邊的列表中,配置端口,權重默認都爲100,如果你們服務器每臺配置都不一樣,可適當調一下權重,比如配置低一點的服務器,把權重調小一點(70、60等)。

“添加監聽”
  • a,添加監聽,配置“基本配置”,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    前端協議:HTTP 80
    後端協議:HTTP 80

調度算法:加權輪詢(默認),權重值越高的後端服務器,被輪詢到的次數(概率)也越高。
使用虛擬服務器組:把剛纔配置的“虛擬服務器組”選上就行

  • b,高級配置,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

會話保持:開啓,HTTP 協議會話保持基於cookie。如果業務不需要會話保持,可不用開啓此功能。
會話保持時間:3600,這個時間和開發商量一下配置多少合適。
Gzip數據壓縮:開啓,開啓將對特定文件類型進行壓縮;關閉則不會對任何文件類型進行壓縮。

  • c,健康檢查,如下圖:
    當然,你可以不開啓健康檢查,如不開啓,SLB不管後端ECS服務器是不是存活,它都會按照策略進行負載下去。所以一般建議開啓它。
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    域名:自定義
    檢查端口:80
    檢查路徑:/test.html,這也是自定義靜態頁面,用於SLB檢查ECS服務器的頁面,放在ECS服務器的根目錄下面就行,test.html裏面內容可以爲空,也可以隨便寫點東西進去。比如筆者自定義了一個server,如下圖:
    server {
    listen 80;
    server_name test.ganbing.com
    index index.html index.htm;
    root html;
    access_log off;
    }

    注意:上面的 access_log建議off掉,不然access.log會因爲slb的健康檢查每天會生成一大堆無用的日誌。

到此,SLB就配置到這裏了,如果有HTTPS協議,需要在添加一項監聽,並把證書掛上去。下面我們來看一下waf的配置。

3.WAF防火牆

WAF配置思路

添加網站 > 初步的“防護配置”

配置waf

  • a,添加網站,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    域名:test.ganbing.com,配置項目的域名。
    協議類型:如果公司沒有HTTPS,就選HTTP。
    服務器地址:IP,這裏配置SLB 的IP地址。如果沒有SLB(或者你們公司不打算用SLB),這裏就直接配置ECS服務器的公網IP。
    WAF前是否有七層代理(高防/CDN等):是,這個選項已經提示很明顯了,如果WAF前面有CDN就選是,沒有就選否。
    負載均衡算法:IP hash。

注意,如果公司有HTTPS協議,而且需要強HTTPS強制跳轉,需要配置“高級設置”,如下圖:
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
(開啓後,HTTP請求將顯示爲HTTPS,默認跳轉到443端口)

  • b,初始化“防護配置”
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    web應用×××防護:模式/防護,防護規則策略/正常
    惡意IP懲罰:啓用
    CC安全防護:模式/正常
    精準訪問控制:啓用

先把防護初始化一下,簡單配置開啓相關防護項,後期在慢慢細化它。

  • c,複製配置好的waf域名,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

把waf的域名先複製,後面配置cdn用得上,然後我們繼續下去,把最後一層CDN搞定。

4.CDN

CDN配置思路

添加域名 > 基礎配置 > 其它可選項配置

配置CDN

  • a,添加域名,建議使用“全站加速域名”新的CDN產品,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    說明:全站加速產品,是融合了 動態加速靜態加速 技術的CDN產品。該產品一站式解決了頁面動靜態資源混雜、跨運營商、網絡不穩定、單線源站、突發流量、網絡擁塞等諸多因素導致的響應慢、丟包、服務不穩定的問題,提升全站性能和用戶體驗。

  • b,基礎配置,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    加速域名:test.ganbing.com,輸入使用的域名。
    源站信息:選擇“源站域名”,粘貼剛纔複製的waf域名。
    端口:80端口

  • c,回源配置,可選項配置,可根據業務需求配置,這裏筆者開啓了“靜態協議跟隨加源”,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    說明:開啓"靜態協議跟隨加源"該功能後,回源使用協議和客戶端訪問資源的協議保持一致。即如果客戶端使用 HTTPS 方式請求資源,當節點上未緩存該資源時,會使用相同的 HTTPS 方式回源獲取資源;同理,客戶端使用 HTTP 方式請求資源,節點回源時以 HTTP 方式請求。

  • d,動靜態加速規則,這裏筆者也開啓了,這個是可選項,可以不用開啓,也是根據自身業務需求來使用,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    說明:
    開啓:可自定義動靜態資源加速規則,靜態內容使用邊緣緩存,動態內容採用最優路由回源
    關閉:無動態內容加速效果,僅保留靜態邊緣緩存功能

  • e,https配置,如果你們公司用的是https,一定要配置此項,如果沒有https,這項可不用配置,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

如果業務需要httt強制https,則需要修改強制跳轉的配置,如下圖:
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

  • f,另外,還可以開啓智能壓縮,頁面優化等功能,這也是可選項配置,如下圖:
    【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”
    頁面優化:去除頁面冗餘內容如HTML頁面、內嵌Javascript和CSS中的註釋以及重複的空白符。
    智能壓縮:對靜態文件類型進行壓縮,有效減少用戶傳輸內容大小。

複製CDN地址

把CDN的CNAME地址複製好,用於等下解析到域名上,如下圖:
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

好了,cdn也配置好了,最後把域名解析到cdn即可。

測試驗證

進入ganbing.com域名,配置cname解析,如下圖:
【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

域名解析好了之後,在瀏覽器進行驗證吧。

整個過程到此結束,這麼一套架構配置下來扛住上百萬的用戶是絕對妥妥的,安全、穩定、可靠。老鐵們開搞吧。

總結

1、整個配置過程最主要的是順序和思路不要亂,最好畫個草圖,先從哪開始,到哪結束。
2、每配置好一層的時候,可以當時就解析到域名進行驗證,比如你把SLB配置好了,當時就可以把SLB的IP解析到域名進行驗證,確定沒問題後,在配置上一層。
3、HTTP和HTTPS的需求搞清楚,公司的域名有沒有買CA證書,如果有,整個業務是HTTP、HTTPS共享呢,還是HTTP強制跳轉HTTPS呢?如果沒有CA證書,那就只能用HTTP協議了。
4、配置好了之後,一層一層的把監控報警做好,建議也是從最內層(底層)開始配置。

本章內容到此結束,喜歡我的文章,請點擊最上方右角處的《關注》!!!

【企業實戰】:阿里雲高可用架構之“CDN+WAF+SLB+ECS”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章