阿里雲系列(五)SLB


阿里雲系列(五)SLB

阿里雲項目實戰工程師


Mr.su執教筆記(QQ:491537692)
--私人課件,不出版,不公開,禁止傳播

想做好運維工作,人先要學會勤快;
居安思危,勤記而補拙,方可不斷提高;
別人的資料用的再爽也是別人的;
自己總結的東西是你自身特有的一種思想與理念的展現;
精髓不是看出來的,精髓是記出來的;
請同學們在學習的過程中養成好的學習習慣;
勤於實踐,拋棄教案,勤於動手,整理文檔

SLB負載均衡

簡介

負載均衡(Server Load Balancer)是將訪問流量根據轉發策略分發到后端多台雲服務器(ECS實例)的流量分發控制服務。負載均衡擴展了應用的服務能力,增強了應用的可用性。

概述

負載均衡通過設置虛擬服務地址,將添加的同一地域的多台ECS實例虛擬成一個高性能、高可用的后端服務池,並根據轉發規則,將來自客戶端的請求分發給后端服務器池中的ECS實例。
負載均衡默認檢查雲服務器池中的ECS實例的健康狀態,自動隔離異常狀態的ECS實例,消除了單台ECS實例的單點故障,提高了應用的整體服務能力。此外,負載均衡還具備抗DDoS攻擊的能力,增強了應用服務的防護能力。

名詞概念

  • 負載均衡服務
  • 阿里雲計算提供的一種網絡負載均衡服務,結合阿里雲提供的ECS服務,提供四層和七層負載均衡服務
  • 負載均衡實例
  • 負載均衡實例是一個運行的負載均衡服務。要使用負載均衡服務,必須先創建一個負載均衡實例
  • 服務地址
  • 系統為創建的負載均衡實例分配的服務IP地址。根據創建的負載均衡實例的類型,服務地址可能是公網IP也可能是私網IP。可以將域名解析到公網IP地址提供對外服務。
  • 監聽
  • 負載均衡服務監聽規定了如何將請求轉發給后端服務器。一個負載均衡實例至少添加一個監聽。
  • 后端服務器
  • 處理負載均衡分發的前端請求的ECS實例。
  • 默認服務器組
  • 一組處理負載均衡分發的前端請求的ECS實例。如果監聽未配置指定的虛擬服務器組或主備服務器組,則將流量轉發給默認服務器組中的后端服務器。
  • 虛擬服務器組
  • 一組處理負載均衡分發的前端請求的ECS實例。不同的監聽可以關聯不同的虛擬服務器組,實現監聽維度的請求轉發。
  • 主備服務器組
  • 一個主備服務器組只包含兩台ECS實例,一台作為主服務器,一台作為備服務器。當主服務器健康檢查失敗,系統會直接將流量切到備服務器。

組成部分

  • 負載均衡實例 (Server Load Balancer instances)
  • 一個負載均衡實例是一個運行的負載均衡服務,用來接收流量並將其分配給后端服務器。要使用負載均衡服務,必須創建一個負載均衡實例,並至少添加一個監聽和兩台ECS實例

  • 監聽 (Listeners)

  • 監聽用來檢查客戶端請求並將請求轉發給后端服務器。監聽也會對后端服務器進行健康檢查。

  • 后端服務器(Backend Servers)

  • 一組接收前端請求的ECS實例。可以單獨添加ECS實例到后端服務器池,也可以通過虛擬服務器組或主備服務器組來批量添加和管理。

5大優勢

  • 高可用
    采用全冗余設計,無單點,支持同城容災。搭配DNS可實現跨地域容災,可用性高達99.95%。根據應用負載進行彈性擴容,在流量波動情況下不中斷對外服務。

  • 可擴展

  • 可以根據業務的需要,隨時增加或減少后端服務器的數量,擴展應用的服務能力。
    低成本,與傳統硬件負載均衡系統高投入相比,成本可下降60%。

  • 安全
    結合雲盾,可提供5Gbps的防DDoS攻擊能力。

  • 高並發
    集群支持億級並發連接,單實例提供千萬級並發能力

簡單的使用架構圖

image_1e7nsl0et4pr148d1pmv1716i69.png-51.1kB

SLB的高可用結構

負載均衡實例采用集群部署,可實現會話同步,以消除服務器單點故障,提升冗余,保證服務的穩定性。其中四層負載均衡通過LVS(Linux Virtual Server)+ keepalived的方式實現,七層負載均衡通過Tengine(淘寶網發起的Web服務器項目,在Nginx的基礎上,針對有大訪問量的網站需求進行了優化)實現。
來自公網的請求通過等價多路徑路由(ECMP)到達LVS集群,LVS集群內的每台LVS通過組播報文將會話同步到該集群內的其它LVS機器上,從而實現LVS集群內各台機器間的會話同步。同時,LVS集群會對Tengine集群進行健康檢查,將異常機器從Tengine集群移除,保證七層負載均衡的可用性。

實踐:
會話同步可以保證長連接不受集群內服務器故障的影響,但是對於短連接或連接未觸發會話同步規則時(未完成三次握手),集群內的服務器故障仍可能會影響用戶請求。為了防止集群中某台機器故障導致的會話中斷,可以在業務邏輯中加入重試機制,降低對用戶訪問造成的影響

單SLB實例高可用架構

  • 阿里雲負載均衡已在大部分地域部署了多可用區以實現同地域下的跨機房容災。當主可用區出現故障或不可用時,負載均衡有能力在非常短的時間內(約30秒)切換到備可用區並恢復服務;當主可用區恢復時,負載均衡同樣會自動切換到主可用區提供服務。

多可用區的高可用架構
image_1e7q19l4718k1dmg1d9i1l1hkv9.png-71.1kB

負載均衡的主備可用區是可用區級別的容災。只有當主可用區整體不可用時,如機房整體斷電、機房出口光纜中斷等,負載均衡才會切換到備可用區。而並非某個實例出現故障,就切換到備可用區

多SLB實例的高可用

  • 對可用性的要求特別高,負載均衡實例自身的可用性保障機制可能無法滿足需求。例如當網絡攻擊或配置錯誤等情況導致負載均衡實例不可用時,由於未出現可用區級故障,不會觸發負載均衡實例的可用區切換。此時,可以創建多個SLB實例,通過雲解析DNS對訪問進行調度,或通過全球負載均衡解決方案實現跨地域容災備份

  • 可以在一個地域內的多個可用區或多個地域內部署負載均衡實例和后端ECS實例,然后使用雲解析DNS對訪問進行調度。

image_1e7q1n1l7irgqo4rn61rli18bbm.png-147.8kB

后端ECS高可用

  • 負載均衡通過健康檢查來判斷后端ECS實例的可用性。健康檢查機制提高了前端業務整體可用性,避免了后端ECS異常對總體服務的影響。
    開啟健康檢查功能后,當后端某個ECS實例健康檢查出現異常時,負載均衡會自動將新的請求分發到其他健康檢查正常的ECS實例上;而當該ECS實例恢復正常運行時,負載均衡會將其自動恢復到負載均衡服務中

功能特性

功能 4層負載均衡 7層負載均衡
調度算法 --> 負載均衡支持輪詢、加權輪詢(WRR)、加權最小連接數(WLC)和一致性哈希(CH)調度算法。 y y(七層不支持一致性哈希(ch)調度算法)
健康檢查 負載均衡會檢查后端服務器的運行狀況。當探測到后端服務器運行狀況不佳時,會停止向其發送流量,然后將流量轉發給其他正常運行的后端服務器。 y y
會話保持負--> 載均衡提供會話保持功能。在會話的生命周期內,可以將同一客戶端的請求轉發到同一台后端服務器上。 y y
訪問控制 --> 負載均衡支持添加黑名單和白名單,靈活控制客戶端訪問。 y y
高可用 -->負載均衡可以將流量轉發給多個可用區的后端服務器。並且,負載均衡已經在大部分地域支持了多可用區部署,當主可用區出現故障時,負載均衡可自動切換到備可用區上提供服務。 y y
安全防護 -->結合雲盾,可提供5Gbps的防DDoS攻擊能力 y y
網絡類型支持 --> 負載均衡提供公網和私網類型的負載均衡服務。可以創建一個私網類型的負載均衡實例來均衡專有網絡內的流量,或創建一個公網負載均衡實例來均衡來自公網的流量。 y y
監控 -->結合阿里雲雲監控服務,可以查看負載均衡的連接數、流量等信息。 y y
IPv6地址支持--> 負載均衡支持轉發來自IPv6客戶端的請求。 y y
記錄健康檢查日志 --> 負載均衡默認存儲三天內的健康檢查日志。可以通過開通OSS服務,將所有的健康檢查日志存儲到OSS中,分析后端服務器異常原因。 y y
域名URL轉發 -->負載均衡7層監聽支持配置域名和URL轉發規則,可以將來自不同域名和URL的請求轉發到不同的后端服務器上。 n y
證書管理 -->針對HTTPS協議,提供統一的證書管理服務。證書無需上傳到后端服務器,解密處理在負載均衡上進行,降低后端服務器的CPU開銷。 n y
SNI支持 -->負載均衡HTTPS監聽支持掛載多個證書,將來自不同訪問域名的請求轉發至不同的后端服務器組。 n y
重定向 -->負載均衡支持HTTP訪問重定向至HTTPS。 n y
WS/WSS支持 --> WebSocket是HTML5一種新的協議,在客戶端與服務器間提供雙向通信渠道,能更好地節省服務器資源和帶寬並達到實時通訊。 n y
HTTP/2支持 -->HTTP/2(Hypertext Transfer Protocol Version 2)是超文本傳輸協議的第二版,向下兼容HTTP1.X協議版本,同時帶來性能的大幅提升。 n y

付費方式

包年包月

  • 包年包月實例的特點:
  • 在合同期內, 可以對包年包月實例的規格、帶寬進行變更。
  • 在合同期內,包年包月實例無法釋放。到期后,實例會自動釋放。
  • 包年包月模式,只支持按帶寬計費。

計費項目

image_1e7qbh594tspgv11kcl1nli15h313.png-14.5kB

按量付費

負載均衡(SLB)支持按量計費模式,按量計費實例可以隨時釋放。可以選擇按固定帶寬計費或按流量計費。

計費項

image_1e7qbpjp261pmso1sfprku1vjl1g.png-21.2kB

欠費說明

當實例欠費后,不會立即停止服務

計費方式 欠費說明 續費說明
包年包月 Active(啟用狀態):當創建好負載均衡實例后,在到期之前,負載均衡實例都是啟用狀態。此種狀態下,可以正常使用負載均衡實例。 Locked(鎖定狀態):當負載均衡實例到期后,但到期時間未超過7天時,負載均衡實例進入鎖定狀態。此種狀態下,不能對負載均衡實例進行任何操作,並且實例不再會進行流量轉發,但會保留實例的IP和其它配置。 Inactive(失效狀態):當負載均衡實例到期超過7天時,負載均衡實例進入失效狀態。 此種狀態下,負載均衡實例會直接釋放,不會保留IP和任何配置。 在合同期內或合同到期后的7天內,可以進行續費
按量付費 系統根據負載均衡服務最近24小時的賬單應付金額的平均值來判斷用戶賬戶余額是否足以支付其負載均衡服務后三個賬期的費用,如果不足以支付將給予短信/郵件提醒。如果開啟了余額預警,當賬戶余額小於設定的預警值時將給予短信/郵件提醒。 欠費后,實例繼續運行24小時后會被鎖定,停止服務。實例停止服務后,計費也將停止。 若7天后仍舊欠費,實例會被釋放。在實例釋放前一天會發送短信/郵件提醒,實例被釋放后相關配置和數據將被永久刪除,不可恢復。 按時付費實例根據實際使用時間計費,無需續費,在阿里雲管理控制台上對賬戶進行充值即可。 在欠費后24小時內進行充值,的服務將不會受到停服影響。 在7天內充值補足欠費后,服務會自動開啟,可以繼續使用。

實例

概述

負載均衡實例是一個運行的負載均衡服務實體。使用負載均衡服務,必須創建一個負載均衡實例,在實例中添加監聽和后端服務器。

image_1e7qcli7qqt4omt1kj82tlu41t.png-23.5kB

實例類型

阿里雲提供公網和私網兩種類型的負載均衡服務。可以根據業務場景選擇配置對外公開或對內私有的負載均衡,系統會根據選擇分配公網或私網服務地址。
image_1e7qcpnppd1p7mt1fqkdklpl82a.png-68kB

  • 公網負載均衡實例
  • 公網類型的負載均衡實例可以通過Internet將客戶端請求按照 制定的監聽規則分發到添加的后端服務器ECS上。在創建公網負載均衡實例后,系統會為其分配一個公網服務地址,可以將域名和該公網服務地址進行綁定,對外提供服務

  • 私網負載均衡實例

  • 私網類型的負載均衡實例只能在阿里雲內部使用,可以轉發的請求只能來自具有負載均衡的私網訪問權限的客戶端。私網負載均衡實例可以進一步對網絡類型進行選擇:
  • 經典網絡
    如果選擇的私網負載均衡實例的網絡類型是經典網絡,那么私網負載均衡實例的服務地址由阿里雲統一分配和管理。該私網負載均衡服務只能被經典網絡ECS實例訪問。
  • 專有網絡
    如果選擇的私網負載均衡實例的網絡類型是專有網絡,那么私網負載均衡實例的服務地址會 指定的專有網絡的交換機網段內分配。該私網負載均衡服務只能被相同VPC內的ECS實例訪問。

image_1e7qd0vdumoevj1cp9l33okt2n.png-32kB

實例規格

負載均衡提供性能共享型實例和性能保障型實例,性能保障型實例提供可靠的性能指標

  • 性能共享型實例
  • 負載均衡性能共享型實例,資源是所有實例共享的,不保障實例的性能指標。
  • 性能保障型實例
規格 規格 最大連接數(秒) 每秒新建連接數(cps) 每秒查詢數(qps) 購買方式
規格 1 簡約型I (slb.s1.small) 5,000 3,000 1,000 官網售賣
規格 2 標准型I (slb.s2.small) 50,000 5,000 5,000 官網售賣
規格 3 標准型II (slb.s2.medium) 100,000 10,000 10,000 官網售賣
規格 4 高階型I (slb.s3.small) 200,000 20,000 20,000 官網售賣
規格 5 高階型II (slb.s3.medium) 500,000 50,000 30,000 官網售賣
規格 6 超強型I (slb.s3.large) 1,000,000 100,000 50,000 官網售賣
規格 7 超強型II(slb.s3.xlarge) 2,000,000 200,000 100,000 聯系客戶經理申請
規格 8 超強型III(slb.s3.xxlarge) 5,000,000 500,000 100,000 聯系客戶經理申請

性能共享型實例與性能保障型實例區別

image_1e7qe7sn1itf1e0n1fp117q0q4334.png-29.9kB

創建實例

配置說明

配置 說明
地域 選擇負載均衡實例的所屬地域。( 確保負載均衡實例的地域和后端添加的雲服務器ECS的地域相同。 )
可用區類型 單可用區:負載均衡實例只部署在一個可用區上 多可用區:負載均衡實例會部署在兩個可用區上。默認啟用主可用區的實例。當主可用區出現故障時,將會自動切換到備可用區繼續提供負載均衡服務,可以大大提升本地可用性。
主可用區 選擇負載均衡實例的主可用區,主可用區是當前承載流量的可用區。
備可用區 選擇負載均衡實例的備可用區。備可用區默認不承載流量,主可用區不可用時才承載流量。
實例名稱 長度限制為1-80個字符,允許包含中文、字母、數字、連接符(-)、斜杠(/)、點號(.)和下划線(_)等字符。
資源組 雲資源所屬的資源組。
實例規格 選擇一個性能規格。不同的性能規格所提供的性能指標也不同.
實例類型 公網:公網負載均衡實例僅提供公網IP,可以通過Internet訪問負載均衡。私網:私網負載均衡實例僅提供阿里雲私網IP,只能通過阿里雲內部網絡訪問該負載均衡服務,無法從Internet訪問。
后端服務器類型 選擇負載均衡實例掛載后端服務器類型,本地域表示允許掛載本地域后端服務器。
IP 版本 選擇負載均衡實例的IP版本,可以設置為IPv4或者IPv6。 只有個別的地區支持ipv6
計費方式 按量,包年包月
購買數量 選擇購買數量

image_1e8lg0t5a9cv1ai9atnbrk709.png-115.3kB
image_1e8lg23pp117hnji1pce1lrc17fsm.png-141kB
image_1e8lggam61fdkbjo1uu01vtl1qbl13.png-135.6kB
image_1e8lgiliqeftpvb1u7d9mq14h81g.png-180.5kB
image_1e8lgvuo117ll1d8g17nm2fi17dn1t.png-146.5kB
image_1e8lh0udv10ie1jnprq41pkmvbt2a.png-217.8kB
image_1e8lh1ruc15njr41lb31o341mjk2n.png-139kB
image_1e8lh3n8411vgb37ot71jj61tdb34.png-138.8kB

監聽

  • 負載均衡提供四層(TCP/UDP協議)和七層(HTTP/HTTPS協議)監聽
協議 說明 使用場景
TCP 面向連接的協議,在正式收發數據前,必須和對方建立可靠的連接 基於源地址的會話保持 在網絡層可直接看到來源地址 數據傳輸快 適用於注重可靠性,對數據准確性要求高,速度可以相對較慢的場景,如文件傳輸、發送或接收郵件、遠程登錄 無特殊要求的Web應用
UDP 面向非連接的協議,在數據發送前不與對方進行三次握手,直接進行數據包發送,不提供差錯恢復和數據重傳 可靠性相對低;數據傳輸快 關注實時性而相對不注重可靠性的場景,如視頻聊天、金融實時行情推送。
HTTP 應用層協議,主要解決如何包裝數據 基於Cookie的會話保持 使用X-Forward-For獲取源地址 需要對數據內容進行識別的應用,如Web應用、小的手機游戲等。
HTTPS 加密傳輸數據,可以阻止未經授權的訪問 統一的證書管理服務,用戶可以將證書上傳到負載均衡,解密操作直接在負載均衡上完成 需要加密傳輸的應用。

添加tcp監聽

這里我們需要兩台后端的ecs沒有的去買兩台按量的最便宜的同地域的ecs。
image_1e8lk009hpg8b9jufrnlm1nhg3u.png-194.7kB
image_1e8lk0n917dshtu5i08pt1m2k4b.png-151.3kB
image_1e8lk5s4lqbnof11cdh8b8gg14o.png-167kB
image_1e8lk70v5iis141p18ni17gnp5l55.png-164.4kB
image_1e8lkcdk51jc9a8m1ovvqd1dug5i.png-207.8kB
image_1e8lkjorrm3stoe52s22912nn5v.png-186.9kB
image_1e8lklf4r62e1ias1ul422blpf6p.png-191.2kB
image_1e8lkr33a1f4f7rl1dh61c7q1nvl76.png-177.2kB
image_1e8lksb218jp74k1i8k1pjj1t987j.png-203.9kB
image_1e8lkt3lk1rkce11peeq3324c80.png-210.3kB

我們登錄ecs創建個nginx把80端口打開

image_1e8ll31t6p11643temb5h778d.png-208.9kB
image_1e8ll4f551t15vma1ufm5827gf8q.png-111kB
image_1e8ll6f6v15vhrultajejejsb97.png-184.9kB
image_1e8ll8h1u1126eko1odjgrlvmb9k.png-170.8kB

  1. 復制備份一下。
  2. cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
  3. #修改主頁文件
  4. [root@iZ8vbd3y162k63ua90xlgaZ ~]# echo `hostname -I` > /usr/share/nginx/html/index.html
  5. [root@iZ8vbd3y162k63ua90xlgaZ ~]# cat /usr/share/nginx/html/index.html
  6. 172.26.173.48
  7. [root@iZ8vbd3y162k63ua90xlgaZ ~]# hostname -I
  8. 172.26.173.48
  9. [root@iZ8vbd3y162k63ua90xlgaZ ~]# nginx -t
  10. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  11. nginx: configuration file /etc/nginx/nginx.conf test is successful
  12. [root@iZ8vbd3y162k63ua90xlgaZ ~]# nginx
  13. [root@iZ8vbd3y162k63ua90xlgaZ ~]# ss -atnup | grep 80
  14. tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=2067,fd=6),("nginx",pid=2066,fd=6))
  15. tcp ESTAB 0 0 172.26.173.48:36654 100.100.30.25:80 users:(("AliYunDun",pid=1221,fd=16))
  16. tcp LISTEN 0 128 :::80 :::* users:(("nginx",pid=2067,fd=7),("nginx",pid=2066,fd=7))

另一台也做同樣的操作。

image_1e8lmcc0u7bkpkh1g37e761khhae.png-122.2kB
image_1e8lmdd3v5t513aa1u2c1pfk1ip7ar.png-128.6kB
image_1e8lml90s1mmf58mjt71qce12qrbl.png-115.2kB

  1. [root@iZ8vbd3y162k63ua90xlg9Z ~]# echo `hostname -I` > /usr/share/nginx/html/index.html
  2. [root@iZ8vbd3y162k63ua90xlg9Z ~]# cat /usr/share/nginx/html/index.html
  3. 172.26.173.49
  4. [root@iZ8vbd3y162k63ua90xlg9Z ~]# nginx -t
  5. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  6. nginx: configuration file /etc/nginx/nginx.conf test is successful
  7. [root@iZ8vbd3y162k63ua90xlg9Z ~]# nginx
  8. [root@iZ8vbd3y162k63ua90xlg9Z ~]# ss -antup | grep 80
  9. tcp LISTEN 1 128 *:80 *:* users:(("nginx",pid=1682,fd=6),("nginx",pid=1681,fd=6))
  10. tcp ESTAB 0 0 172.26.173.49:48526 100.100.30.25:80 users:(("AliYunDun",pid=1216,fd=16))
  11. tcp LISTEN 0 128 :::80 :::* users:(("nginx",pid=1682,fd=7),("nginx",pid=1681,fd=7))

image_1e8lr1g63140coe5jllqlc1ssec2.png-166.2kB
image_1e8lrfh7g6gjrd2rm8q0p1bpnd9.png-169.4kB
image_1e8lrggku8p212u3qbkbia10psdm.png-160.1kB
image_1e8lraqebivv1hbs7ku14hpsnacf.png-166.6kB
image_1e8ltsrgs1muimrb1hjj5nt12tse3.png-58.6kB
因為我們開了會話保持所以在短時間里都是一個ip,我們試着把回話保持關掉
image_1e8ltvae2r1u1i911lj3puu1lmcet.png-142.9kB
image_1e8lu1f701upd15n3soi11putlqfa.png-135.3kB
image_1e8lu333815325et1uu8b311n7ifn.png-134.3kB
image_1e8lu3llt1p8oov7li996q12b9g4.png-129.4kB
image_1e8lu4e0ojoro0c18nanb6cl6gh.png-163.1kB
image_1e8lu4qdq1ihk10631nba12b6alugu.png-143kB
image_1e8lu572t6pj1k1k1v20oplp1bhb.png-151.2kB
image_1e8lu5jac1q6618bi1io537ug7vho.png-147kB
image_1e8lu6kca1qutk9uovljgeuc3i5.png-144.5kB
image_1e8lu7hmr15evvcbor21q8j1effii.png-52kB

添加udp監聽

  • 注意事項
  • UDP監聽的250、4789和4790三個端口為系統保留端口,暫時不對外開放。
  • 暫不支持分片包。
  • 經典網絡負載均衡實例的UDP監聽暫不支持查看源地址。
  • 在以下兩種情況下,UDP協議監聽配置需要五分鍾才能生效:
  • 移除后端服務器。
  • 健康檢查檢測到異常后,將后端服務器的權重設置為0。
  • 由於IPv6的IP頭部較IPv4更長,當在SLB IPv6實例上使用UDP監聽時,需要確保后端服務器(通常是ECS雲服務器)與SLB通信的網卡的MTU不大於1200(有些應用程序需要根據此MTU值同步修改其配置文件),否則數據包可能會因過大被丟棄。
  • 如果使用TCP/HTTP/HTTPS監聽,TCP協議支持MSS自動協商,因此不需要額外配置。

image_1e8lvleug1so4li1dki1aie1ctuiv.png-157.8kB
image_1e8lvp8o21htso9t1b991e2u707jc.png-172kB
image_1e8m5o6df1lb516gu1rg6mr71u1bjp.png-191kB
image_1e8m5oml9j8a1nng1hlu1nb610nfk6.png-164.8kB
image_1e8m5p56coqpqhkf0rkmh4m5kj.png-191.5kB
image_1e8m7bumnll21h6t76b5r39jmlt.png-170.3kB

添加http監聽

HTTP協議適用於需要對數據內容進行識別的應用,如Web應用和小的手機游戲等。可以添加一個HTTP監聽轉發來自HTTP協議的請求。

image_1e8m7hqhj1oc0hdqlj312h77k6ma.png-149.5kB
image_1e8m7jkcb18b61dvu1bsb18ingrmn.png-133.9kB
image_1e8m7k7mpd5k1q20183c1v5q1pjrn4.png-167.3kB
image_1e8m7kqen1hds1kov1bh5sj83o7nh.png-150kB
image_1e8m7lianbu5161cu0b1o510pcnu.png-167.6kB
image_1e8m7me1i1p9p10qu1av11iq0169ob.png-153.4kB

監聽配置 說明
選擇負載均衡協議 HTTP
監聽端口 用來接收請求並向后端服務器進行請求轉發的監聽端口。端口范圍為1-65535。(在同一個負載均衡實例內,監聽端口不可重復。)
監聽名稱 設置監聽的名稱,用戶自定義。

高級配置
監聽配置 說明
調度算法 加權輪詢(WRR):權重值越高的后端服務器,被輪詢到的次數(概率)也越高。 輪詢(RR):按照訪問順序依次將外部請求分發到后端服務器。 加權最小連接數(WLC):除了根據每台后端服務器設定的權重值來進行輪詢,同時還考慮后端服務器的實際負載(即連接數)。當權重值相同時,當前連接數越小的后端服務器被輪詢到的次數(概率)也越高。
監聽轉發 選擇是否將HTTP監聽的流量轉發到HTTPS監聽。 (如果開啟監聽轉發,確保已經創建了HTTPS監聽。)
開啟會話保持 開啟會話保持功能后,負載均衡會把來自同一客戶端的訪問請求分發到同一台后端服務器上進行處理。 (植入Cookie: 只需要指定Cookie的過期時間。客戶端第一次訪問時,負載均衡會在返回請求中植入Cookie(即在HTTP/HTTPS響應報文中插入SERVERID),下次客戶端攜帶此Cookie訪問,負載均衡服務會將請求定向轉發給之前記錄到的后端服務器上。) ( 重寫Cookie:可以根據需要指定HTTPS/HTTP響應中插入的Cookie。 需要在后端服務器上維護該Cookie的過期時間和生存時間。負載均衡服務發現用戶自定義了Cookie,將會對原來的Cookie進行重寫,下次客戶端攜帶新的Cookie訪問,負載均衡服務會將請求定向轉發給之前記錄到的后端服務器。)
啟用訪問控制 啟用訪問控制后,可以通過配置訪問控制策略來實現允許某些特定IP訪問負載均衡,或禁止某些特定IP訪問負載均衡的功能。
訪問控制方式 白名單:允許特定IP訪問負載均衡SLB,僅轉發來自所選訪問控制策略組中設置的IP地址或地址段的請求,白名單適用於應用只允許特定IP訪問的場景。 設置白名單存在一定業務風險。一旦設置白名單,就只有白名單中的IP可以訪問負載均衡監聽。如果開啟了白名單訪問,但訪問策略組中沒有添加任何IP,則負載均衡監聽會轉發全部請求。 黑名單:禁止特定IP訪問負載均衡SLB,來自所選訪問控制策略組中設置的IP地址或地址段的所有請求都不會轉發,黑名單適用於應用只限制某些特定IP訪問的場景。 如果開啟了黑名單訪問,但訪問策略組中沒有添加任何IP,則負載均衡監聽會轉發全部請求。
選擇訪問控制策略組 於按帶寬計費的負載均衡實例,可以針對不同監聽設定不同的帶寬峰值來限定監聽的流量。實例下所有監聽的帶寬峰值總和不能超過該實例的帶寬。 默認不開啟,各監聽共享實例的總帶寬。(使用流量計費方式的實例默認不限制帶寬峰值。)
開啟監聽帶寬限速 對於按帶寬計費的負載均衡實例,可以針對不同監聽設定不同的帶寬峰值來限定監聽的流量。實例下所有監聽的帶寬峰值總和不能超過該實例的帶寬。 默認不開啟,各監聽共享實例的總帶寬。(使用流量計費方式的實例默認不限制帶寬峰值。 )
連接空閑超時時間 指定連接空閑超時時間,取值范圍為1-60秒。 在超時時間內一直沒有訪問請求,負載均衡會暫時中斷當前連接,直到下一次請求來臨時重新建立新的連接。該功能已經在全部地域開放。 (該功能對使用HTTP/2.0的請求暫不生效)
連接請求超時時間 指定請求超時時間,取值范圍為1-180秒。在超時時間內后端服務器一直沒有響應,負載均衡將放棄等待,給客戶端返回HTTP 504錯誤碼。 該功能已經在全部地域開放。
Gzip數據壓縮 開啟該配置對特定文件類型進行壓縮。 目前Gzip支持壓縮的類型包括:text/xml、text/plain、text/css、application/javascript、application/x-javascript application/rss+xml、application/atom+xml、application/xml。
附加HTTP頭字段 添加X-Forwarded-For字段獲取客戶端的IP地址。 添加X-Forwarded-Proto字段獲取實例的監聽協議。 添加SLB-IP字段獲取負載均衡實例的公網IP。 添加SLB-ID字段獲取負載均衡實例的ID。
獲取客戶端真實IP HTTP監聽通過 X-Forwarded-For獲取客戶端真實IP,默認開啟。
創建完畢自動啟動監聽 是否在監聽配置完成后啟動負載均衡監聽,默認開啟。

添加https監聽

在https使用的時候我們需要先添加自簽證書

image_1e8mmj79g1lsk15e66h1a82sc3pv.png-233.5kB
image_1e8mmkho8nhj18eil4j1v0smdpqs.png-126.2kB

  1. #首先連接服務器
  2. [root@iZ8vbd3y162k63ua90xlgaZ ~]# mkdir ca
  3. [root@iZ8vbd3y162k63ua90xlgaZ ~]# cd ca
  4. [root@iZ8vbd3y162k63ua90xlgaZ ca]# mkdir newcerts private conf server
  5. [root@iZ8vbd3y162k63ua90xlgaZ ca]# ls
  6. conf newcerts private server
  7. #newcerts目錄將用於存放CA簽署過的數字證書。
  8. #private目錄用於存放CA的私鑰。
  9. #conf目錄用於存放一些簡化參數用的配置文件。
  10. #server目錄存放服務器證書文件。
  11. [root@iZ8vbd3y162k63ua90xlgaZ ca]# cd conf/
  12. [root@iZ8vbd3y162k63ua90xlgaZ conf]# ls
  13. [root@iZ8vbd3y162k63ua90xlgaZ conf]# vim openssl.conf
  14. [root@iZ8vbd3y162k63ua90xlgaZ conf]# cat openssl.conf
  15. [ ca ]
  16. default_ca = foo
  17. [ foo ]
  18. dir = /root/ca
  19. database = /root/ca/index.txt
  20. new_certs_dir = /root/ca/newcerts
  21. certificate = /root/ca/private/ca.crt
  22. serial = /root/ca/serial
  23. private_key = /root/ca/private/ca.key
  24. RANDFILE = /root/ca/private/.rand
  25. default_days = 365
  26. default_crl_days= 30
  27. default_md = md5
  28. unique_subject = no
  29. policy = policy_any
  30. [ policy_any ]
  31. countryName = match
  32. stateOrProvinceName = match
  33. organizationName = match
  34. organizationalUnitName = match
  35. localityName = optional
  36. commonName = supplied
  37. emailAddress = optional
  38. #生產私鑰
  39. [root@iZ8vbd3y162k63ua90xlgaZ conf]# cd /root/ca/
  40. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl genrsa -out private/ca.key
  41. Generating RSA private key, 2048 bit long modulus
  42. .......................................................................................................................+++
  43. .................+++
  44. e is 65537 (0x10001)
  45. [root@iZ8vbd3y162k63ua90xlgaZ ca]#
  46. #生成csr文件。
  47. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl req -new -key private/ca.key -out private/ca.csr
  48. You are about to be asked to enter information that will be incorporated
  49. into your certificate request.
  50. What you are about to enter is what is called a Distinguished Name or a DN.
  51. There are quite a few fields but you can leave some blank
  52. For some fields there will be a default value,
  53. If you enter '.', the field will be left blank.
  54. -----
  55. Country Name (2 letter code) [XX]:CN
  56. State or Province Name (full name) []:BeiJing
  57. Locality Name (eg, city) [Default City]:Beijing
  58. Organization Name (eg, company) [Default Company Ltd]:yunjisuan
  59. Organizational Unit Name (eg, section) []:test
  60. Common Name (eg, your name or your server's hostname) []:yunjisuan (這里在工作中輸入你的slb的域名,這里沒有就先這樣)
  61. Email Address []:18910670931@163.com
  62. Please enter the following 'extra' attributes
  63. to be sent with your certificate request
  64. A challenge password []: (這里直接回車)
  65. An optional company name []: (這里直接回車)
  66. #生成crt文件
  67. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
  68. Signature ok
  69. subject=/C=CN/ST=BeiJing/L=Beijing/O=yunjisuan/OU=test/CN=yunjisuan/emailAddress=18910670931@163.com
  70. Getting Private key
  71. #為CA的key設置起始序列號,可以是任意四個字符。
  72. [root@iZ8vbd3y162k63ua90xlgaZ ca]# echo FACE > serial
  73. touch index.txt
  74. #為移除客戶端證書創建一個證書撤銷列表。
  75. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl ca -gencrl -out /root/ca/private/ca.crl -crldays 7 -config "/root/ca/conf/openssl.conf"
  76. Using configuration from /root/ca/conf/openssl.conf
客戶端證書簽名
  1. [root@iZ8vbd3y162k63ua90xlgaZ ca]# pwd
  2. /root/ca
  3. [root@iZ8vbd3y162k63ua90xlgaZ ca]# mkdir users
  4. #為客戶端創建一個key。
  5. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl genrsa -des3 -out /root/ca/users/client.key 1024
  6. Generating RSA private key, 1024 bit long modulus
  7. .....................................++++++
  8. .++++++
  9. e is 65537 (0x10001)
  10. Enter pass phrase for /root/ca/users/client.key:
  11. Verifying - Enter pass phrase for /root/ca/users/client.key: #創建key時要求輸入pass phrase,這個是當前key的口令,以防止本密鑰泄漏后被人盜用。兩次輸入同一個密碼。 (我這里的密碼:1111)
  12. #為客戶端key創建一個證書簽名請求csr文件。
  13. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl req -new -key /root/ca/users/client.key -out /root/ca/users/client.csr
  14. Enter pass phrase for /root/ca/users/client.key: #這里需要輸入我們剛剛創建key時候的密碼:1111
  15. You are about to be asked to enter information that will be incorporated
  16. into your certificate request.
  17. What you are about to enter is what is called a Distinguished Name or a DN.
  18. There are quite a few fields but you can leave some blank
  19. For some fields there will be a default value,
  20. If you enter '.', the field will be left blank.
  21. -----
  22. Country Name (2 letter code) [XX]:CN
  23. State or Province Name (full name) []:BeiJing
  24. Locality Name (eg, city) [Default City]:Beijing
  25. Organization Name (eg, company) [Default Company Ltd]:yunjisuan
  26. Organizational Unit Name (eg, section) []:test
  27. Common Name (eg, your name or your server's hostname) []:yunjisuan
  28. Email Address []:18910670931@163.com
  29. Please enter the following 'extra' attributes
  30. to be sent with your certificate request
  31. A challenge password []: (這里直接回車)
  32. An optional company name []: (這里直接回車)
  33. #使用CA證書的key為客戶端key簽名。
  34. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl ca -in /root/ca/users/client.csr -cert /root/ca/private/ca.crt -keyfile /root/ca/private/ca.key -out /root/ca/users/client.crt -config "/root/ca/conf/openssl.conf"
  35. Using configuration from /root/ca/conf/openssl.conf
  36. Check that the request matches the signature
  37. Signature ok
  38. The Subject's Distinguished Name is as follows
  39. countryName :PRINTABLE:'CN'
  40. stateOrProvinceName :ASN.1 12:'BeiJing'
  41. localityName :ASN.1 12:'Beijing'
  42. organizationName :ASN.1 12:'yunjisuan'
  43. organizationalUnitName:ASN.1 12:'test'
  44. commonName :ASN.1 12:'yunjisuan'
  45. emailAddress :IA5STRING:'18910670931@163.com'
  46. Certificate is to be certified until May 19 15:26:01 2021 GMT (365 days)
  47. Sign the certificate? [y/n]:y
  48. 1 out of 1 certificate requests certified, commit? [y/n]y
  49. Write out database with 1 new entries
  50. Data Base Updated
  51. #將證書轉換為PKCS12文件。
  52. [root@iZ8vbd3y162k63ua90xlgaZ ca]# openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12
  53. Enter pass phrase for /root/ca/users/client.key: (這里是client的密碼:1111
  54. Enter Export Password: (這里直接空格)
  55. Verifying - Enter Export Password: (這里也是直接空格)
  56. [root@iZ8vbd3y162k63ua90xlgaZ ca]# cd users/
  57. [root@iZ8vbd3y162k63ua90xlgaZ users]# ls
  58. client.crt client.csr client.key client.p12

上傳證書

image_1e8mql3knfndn8k1jilhkf191lsg.png-197.8kB
image_1e8ms9kcv11nmu1f18qi5qm6q130.png-160kB
image_1e8mpernmqp910o7l3s17u11i4pr9.png-135.5kB
image_1e8mr2utlvq51eekek91jvu1opust.png-257.1kB
image_1e8mr3eqcmp8g5hip119j71arta.png-149kB
image_1e8mr9mnkik61da1vscnh314e6tn.png-129.9kB

創建https監控

image_1e8ml34n11uvl18ahkd1knntq3oo.png-168.3kB
image_1e8ml5j3g124jg552jp19u61132p5.png-175.3kB
image_1e8mlc11582euo5go9pdl12l5pi.png-165.3kB
image_1e8ms4phc1ell1uai1o6csqigq105.png-198kB
image_1e8ms5sjgom5129m1l2v19nu1dfu10i.png-149.3kB
image_1e8ms6drg1s901lgr1qit18qa1r5j10v.png-171.4kB
image_1e8ms6v401ch21vjh1cfs1rll11pb11c.png-157.6kB
image_1e8ms7ml118t4181uggn1mvoplu11p.png-168.1kB
image_1e8ms83etcu01k1g1qaa1coh7fa126.png-168.8kB
image_1e8ms8jm0hklk0auh41bvb1ukj12j.png-157.5kB

健康檢查

健康檢查配置 說明
健康檢查協議 TCP模式的健康檢查是基於網絡層探測,通過發送SYN握手報文來檢測服務器端口是否存活。HTTP模式的健康檢查是通過發送head請求,通過發送HEAD/GET請求模擬瀏覽器的訪問行為來檢查服務器應用是否健康
健康檢查方法(僅HTTP和HTTPS健康檢查協議支持) 7層監聽(HTTP/HTTPS)健康檢查支持HEAD和GET方法,默認采用HEAD方法。如果后端應用服務器不支持HEAD方法或HEAD方法被禁用,則可能會出現健康檢查失敗,此時可以使用GET方法來進行健康檢查使用GET方法時,如果Response長度超過8K,會被截斷,但不會影響健康檢查結果的判定。(僅印度(孟買)地域的七層監聽健康檢查支持GET方法。)
健康檢查路徑和健康檢查域名(可選)(僅HTTP健康檢查協議支持) HTTP健康檢查默認由負載均衡系統通過后端ECS內網IP地址向該服務器應用配置的缺省首頁發起http head請求。 如果用來進行健康檢查的頁面並不是應用服務器的缺省首頁,需要指定具體的檢查路徑 因為有些應用服務器會對請求中的host字段做校驗,即要求請求頭中必須存在host字段。如果在健康檢查中配置了域名,則SLB會將域名配置到host字段中去,反之,如果沒有配置域名,SLB則不會在請求中附帶host字段,因此健康檢查請求就會被服務器拒絕,可能導致健康檢查失敗。綜上原因,如果 的應用服務器需要校驗請求的host字段,則需要配置相關域名,確保健康檢查正常工作。
正常狀態碼(僅HTTP健康檢查協議支持) 默認值為http_2xx和http_3xx。
健康檢查端口 健康檢查服務訪問后端時的探測端口。默認值為配置監聽時指定的后端端口。(如果該監聽配置了虛擬服務器組或主備服務器組,且組內的ECS實例的端口都不相同,此時不需要配置檢查端口。負載均衡系統會使用各自ECS的后端端口進行健康檢查。 )
健康檢查響應超時時間 接收來自運行狀況檢查的響應需要等待的時間。如果后端ECS在指定的時間內沒有正確響應,則判定為健康檢查失敗。范圍是1-300秒,UDP監聽的默認值為10秒,HTTP/HTTPS/TCP監聽的默認值為5秒。
健康檢查間隔時間 LVS集群內所有節點,都會獨立、並行地遵循該屬性對后端ECS進行健康檢查。由於各LVS節點的檢查時間並不同步,所以,如果從后端某一ECS上進行單獨統計,會發現來自負載均衡的健康檢查請求在時間上並不會遵循上述時間間隔。范圍是1-50秒,UDP監聽的默認值為5秒,HTTP/HTTPS/TCP監聽的默認值為2秒。
健康檢查不健康閾值 同一LVS節點服務器針對同一ECS服務器,從成功到失敗的連續健康檢查失敗次數。可選值2-10,默認為3次。
健康檢查健康閾值 同一LVS節點服務器針對同一ECS服務器,從失敗到成功的連續健康檢查成功次數。可選值 2-10,默認為3次。
健康檢查請求和健康檢查返回結果 為UDP監聽配置健康檢查時,可以在健康檢查請求中輸入請求的內容(例如youraccountID),在健康檢查返回結果中輸入預期的返回結果(例如slb123)。同時在后端服務器的應用邏輯中加入相應的健康檢查應答邏輯,如收到youraccountID的請求時,回應slb123。此時,當負載均衡收到后端服務器發來的正確響應時,則認為健康檢查成功,否則認為健康檢查失敗。此方式能最大程度確保健康檢查的可靠性。

通用配置

DDoS基礎防護介紹

阿里雲免費為負載均衡服務提供最高5G的DDoS基礎防護。如下圖所示,所有來自Internet的流量都要先經過雲盾再到達負載均衡,雲盾會針對常見的攻擊進行清洗過濾。雲盾DDoS基礎防護可以防御SYN Flood、UDP Flood、ACK Flood、ICMP Flood 和DNS Flood等DDoS攻擊

image_1e8mt12951tuu1eqq19qb15u4glc13d.png-167.6kB

  • 雲盾DDoS基礎防護根據公網負載均衡實例的帶寬設定清洗閾值和黑洞閾值。當入方向流量達到閾值上限時,觸發清洗和黑洞:
  • 清洗:當來自Internet的攻擊流量較大或符合某些特定攻擊流量模型特征時,雲盾將會自動對攻擊流量進行清洗,清洗包括攻擊報文過濾、流量限速、包限速等。
  • 黑洞:當來自Internet的攻擊流量非常大時,為保護整個集群的安全,流量將會被黑洞處理,即所有入流量全部被丟棄。

  • 閾值的計算遵循如下兩個原則:

  • 根據SLB實例所購買的帶寬來決定閾值的高低,即SLB的出方向帶寬,當實例的帶寬較高時,各類閾值較高,當實例的帶寬較低時,各類閾值相應的會變低。
  • 根據用戶的安全信譽分來決定黑洞閾值的高低。 ( 注意安全信譽分僅影響黑洞閾值,不影響清洗閾值。)

  • 計算閾值:

  • SLB后台根據用戶購買的帶寬給出能夠滿足實例正常工作的閾值建議值。(如果用戶購買的是按流量計費實例,出帶寬為實例所在地域所支持的帶寬峰值上限,目前中國內地地域帶寬上限都是峰值5G)

  • SLB帶寬與BPS清洗閾值之間的關系 (bps(bits per second)是數據傳輸速率的常用單位,意思是比特率、比特/秒、位/秒、每秒傳的位數。)

  • 當SLB帶寬<100Mbps時,清洗BPS默認閾值 = 120Mbps
  • 當SLB帶寬>100Mbps時,清洗BPS默認閾值 = 帶寬值*1.2

  • SLB帶寬與PPS清洗閾值之間的關系 (PS是Precision Positioning System的簡稱,是常用的網絡吞吐率的單位,即每秒發送多少個分組數據包,網絡的性能通常用吞吐率(throughput)這個指標來衡量。)

  • 清洗PPS閾值 = (SLB帶寬值/500)*150000 帶寬值單位為Mbps。

  • SLB帶寬與黑洞BPS閾值之間的關系

  • SLB帶寬<1Gbps時,黑洞BPS默認閾值 = 2Gbps
  • SLB帶寬>1Gbps時,黑洞BPS默認閾值 = MAX(SLB帶寬值*1.5,2G)

  • 雲盾根據SLB給出的建議值,結合用戶安全信譽分和各地域的資源情況,計算出最終的閾值。

  • 雲盾評估BPS和PPS閾值的規則
  • BPS最小值為1000M,PPS最小值為30萬個。
  • SLB傳入的參考閾值小於上述最小值時,取上述最小值。
  • SLB傳入的參考閾值高於上述最小值時,取SLB傳入的參考閾值。
  • 雲盾根據用戶的安全信譽分來決定黑洞閾值的高低

查看防護閾值

image_1e8mtkku173g1qsg1ph01okdr2j147.png-179.1kB

授權雲盾基礎防護只讀權限

  • 使用主賬號登錄訪問控制RAM管理控制台。
    image_1e8mtmsl1fpv103t1esat55s3u14k.png-109.8kB
    image_1e8mtpc5a1epac9h1f4bmdg1nbv151.png-168.5kB
    image_1e8mtsbmli51o301s2c136f18rr15e.png-148.4kB
    image_1e8mtu23s17hh1b72g511ult1grb15r.png-158.7kB
    image_1e8mtudb7scv18oa1qcdmutrd5168.png-141.8kB
切換回RAM賬號

image_1e8mu29ipg5t16ml1lqk1rotbh016l.png-159.1kB
image_1e8mu3nv61s7o1adh14iopndc0p172.png-148.1kB
image_1e8mud1589vk1ugb1h141alg1bcl17v.png-190.3kB

最后做完實驗別忘了釋放實例,不釋放實例會繼續扣錢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM