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

回顧歷史

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

 因此,筆者這就要和你們一塊兒來討論一下《 阿里雲高可用架構之「CDN+WAF+SLB+ECS」》如何實現,以及具體配置過程是怎樣的。爲何拿這個架構來討論呢,主要是這個架構目前在企業中使用率比較通用、廣泛,也比較有表明性。html

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

架構圖

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

架構層級關係

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

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

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

規劃配置思路

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

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

從內到外:理解了從外到內以後,在來理解從內到外就簡單多了。從最底層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集羣環境。不要爲了省這點錢影響之後業務性能。若是公司就一個項目,就那麼三、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」

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

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

總結

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

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

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

相關文章
相關標籤/搜索