一、負載均衡
負載均衡的目的就是讓請求到達不同的伺服器上。一次請求到伺服器之間,有那麼多環節,因此可以實現的方法有很多種,實際應用中不外乎以下幾種方式。
1.http重定向負載均衡
http重定向負載均衡有一台重定向伺服器,它也是一台普通的伺服器,其唯一的功能就是根據使用者的http請求計算一台應用集群中伺服器的位址,並將此位址寫入http重定向響應中返回給使用者。
這種方案實現起來非常簡單,但是需要瀏覽器請求兩次伺服器才能完成。並且重定向伺服器很容易程式設計瓶頸,因為一次重定向返回的過程,也是一次標準http請求,如果集群內有10臺機器,那http重定向伺服器的流量將是應用伺服器的10倍,如果有100臺估計就要宕機了,所以伸縮性能受到了很大的限制。還有使用302響應碼重定向,不利於**的seo。
2.dns網域名稱解析負載均衡
這是利用dns處理網域名稱解析請求的同時進行負載均衡處理的一種方案。在dns中配置多個a記錄,每次網域名稱解析請求都會根據負載均衡演算法計算乙個不同的ip位址返回。
dns網域名稱解析負載均衡的優點是將負載均衡的工作轉交給dns,省掉了**管理維護負載均衡伺服器的麻煩,同時還可以使用智慧型dns可以基於地理位置或者isp來做網域名稱解析,使用者將會得到距離最近或者速度最快的乙個伺服器位址,這樣可以加快使用者的訪問速度,改善效能。
但是這種方法也有很大的缺點,dns是多級解析,每一級都會快取dns記錄,如果某個伺服器變動了,dns記錄更新的時間將會很長,這個速度取決於網域名稱服務商。
一般大型**都會使用dns網域名稱解析,利用網域名稱解析作為一級負載均衡手段。你可以使用 dig 《網域名稱》 的方法檢視某個網域名稱的a記錄,你會發現很多**會有多條a記錄。
3.反向**負載均衡
這種方法就是使用反向**伺服器,它一般在web伺服器前面,這個位置也正好是負載均衡伺服器的位置,所以大多數反向**伺服器同時也提供負載均衡的功能。
由於web伺服器不直接對外提供訪問,因此web伺服器不需要使用外部ip,而反向**伺服器則需要配置雙網絡卡和內部外部兩套ip位址。
反向**伺服器**請求是在http協議層面,因此也叫應用層負載均衡,由於應用層在七層網路模型中的第七層,所以一般也稱為七層負載均衡。優點就是和反向**功伺服器功能整合在一起,部署簡單。缺點是反向**伺服器是所有請求和響應的中轉站,其效能可能會成為瓶頸。
4.網路層負載均衡
這種方法是在網路層通過修改請求目標位址進行負載均衡,網路層在七層網路層模型的第四層,所以也叫做四層負載均衡,也叫做ip層負載均衡。
請求達到負載均衡伺服器後,由負載均衡伺服器在作業系統核心程序獲取網路資料報,根據負載均衡演算法得到一台真實web伺服器的位址,然後修改請求的目的位址到這台真實的web伺服器位址,等到web伺服器處理完成後,響應資料報回到負載均衡伺服器,再將資料報源位址修改為自身的ip(負載均衡伺服器的ip)位址傳送給使用者瀏覽器
這裡關鍵在於真實無力web伺服器響應資料報如何返回給負載均衡伺服器。一種是源位址轉換(snat),第二種是負載均衡伺服器作為閘道器伺服器。
網路層的負載均衡在核心程序完成資料**,有更好的效能。但是由於響應請求的流量要經過負載均衡伺服器,容易成為瓶頸。
5.資料鏈路層負載均衡
資料鏈路層主要處理 mac 位址,所以使用修改mac位址進行**請求。負載均衡資料分發過程中不修改ip位址,只修改mac位址,通過配置真實物理伺服器集群所有機器虛擬ip和負載均衡伺服器ip位址一致,從而達到不修改資料報的源位址和目的位址就可以進行資料分發的目的。由於web伺服器的伺服器位址ip和資料請求目的ip位址一致,不需要通過負載均衡伺服器進行位址轉換,可將相應資料報直接返回使用者。如果有足夠的公有ip,其實web伺服器也可以直接使用自己的ip響應請求,不過這樣web伺服器必須繫結負載均衡的虛擬ip位址(vip),才能保證web伺服器收到來自負載均衡傳送的資料報。
這種方式稱作三角傳輸模式,單臂模式,也叫做直接路由方式(dr)。使用dr方式的鏈路層負載均衡是目前大型**使用最廣的一種負載均衡手段。
nginx做反向**的同時也做七層負載均衡。
使用四層的**負載均衡,並使用主備,一般使用haproxy或者lvs
使用單臂模式加七層**集群,一般是lvs(dr模式)主備+haproxy集群(七層負載均衡)
nginx 做負載均衡是非常方便的,如果乙個機器滿足不了需求了,可以直接做乙個反向**加上負載均衡。四層的**負載均衡比七層負載均衡效能好很多,集群規模可以迅速擴大,並且可以細分服務。當公司的規模很大的時候,有多個機房、多個大型服務時,lvs(單臂)+haproxy(七層)就更適合了。
現在使用的負載均衡無外乎這幾種方式,或者幾種方式的組合。我相信很多大廠能用這種模式解決高併發高效能的問題,很多其他服務也是沒有問題的。這篇文章只是負載均衡的基礎知識,並沒有涉及到太多的應用,lvs、haproxy、nginx等在使用中還有很多細節的區別,但都是以上模型。關於這三個軟體的負載均衡,如果以後使用到了會再討論。
集群基礎概念 負載均衡
集群中的應用伺服器 節點 通常被設計成無狀態,使用者可以請求任何乙個節點。負載均衡器會根據集群中每個節點的負載情況,將使用者請求 到合適的節點上。負載均衡器可以用來實現高可用以及伸縮性 負載均衡器執行過程包含兩個部分 根據負載均衡演算法得到 的節點 進行 1.輪詢 round robin 輪詢演算法...
負載均衡的概念
負載均衡 它提供了一種廉價有效透明的方法擴充套件 網路裝置 和 伺服器 的頻寬 增加 吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性,其意思就是分攤到多個操作單元上進行執行,例如web 伺服器 ftp伺服器 企業 關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。概念 http訪問...
負載均衡 概念認識篇
客串 屌絲的坑人表單神器 走過的那些事兒 資料庫那點事兒 文章開始,先吐槽一下 部落格的文章都是技術文章,尼瑪就不能多點心路歷程,xx管理,處事態度,傳說中的求職的事兒以及那些年所遇到的萌人萌事。一說到負載均衡,很多人都認為高 大 上。所以那些開發就把它供得高高在上,想去觸控,又不敢去。接下來的課程...