HAProxy介紹

来源:https://www.cnblogs.com/shenxm/archive/2018/02/23/8463555.html
-Advertisement-
Play Games

HAProxy介紹 HAProxy HAProxy支持兩種主要的代理模式 HAProxy負載均衡策略非常多 HAProxy優缺點 HAProxy功能 HAProxy 組成 ...


HAProxy介紹

HAProxy

    HAProxy: 是法國人Willy Tarreau 開發的一個開源軟體,是一 款應對客戶端10000 以上的同時連接的高性能的TCP和HTTP 負載均衡器。 
    其功能是用來提供基於cookie的持久性,基於內容的交換,過載保護的高級流量管制,自動故障切換,以正則表達式為基礎的標題控制運行時間,基於Web 的報表,高級日誌記錄以幫助排除故障的應用或網路及其他功能。
     LB Cluster:
        四層:lvs, nginx(stream) ,haproxy(mode tcp)
        七層:http: nginx(http), haproxy(mode http), httpd...
     HAProxy :http://www.haproxy.org
     文檔:https://cbonte.github.io/haproxy-dconv/
    軟體負載均衡一般通過兩種方式來實現:
        基於操作系統的軟負載實現和基於第三方應用的軟負載實現。
        LVS就是基於Linux操作系統實現的一種軟負載,HAProxy就是開源的並且基於第三應用實現的軟負載。
    HAProxy是一款提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理軟體。
    HAProxy是完全免費的、藉助HAProxy可以快速並且可靠的提供基於TCP和HTTP應用的代理解決方案。

HAProxy支持兩種主要的代理模式

    TCP  即4層 (大多用於郵件伺服器、內部協議通信伺服器等),在4層模式下,HAProxy僅在客戶端和伺服器之間轉發雙向流量。
        它主要是通過分析IP層及TCP/UDP層的流量實現的基於IP加埠的負載均衡。
        僅建立一次TCP連接。
    HTTP 即7層模式,HAProxy會分析協議,並且能通過允許、拒絕、交換、增加、修改或刪除請求 (request)或者回應(response)里指定內容來控制協議,
      七層負載均衡器可以根據報文內容,再配合負載均衡演算法來選擇後端伺服器,因此也稱為“內容交換器”。
        負載均衡器與客戶端及後端的伺服器會分別建立一次TCP連接
    七層負載均衡對負載均衡設備的要求更高,而七層負載均 衡的處理能力也必然低於四層模式的負載均衡。

HAProxy負載均衡策略非常多

    HAProxy的負載均衡演算法現在具體有如下8種:
    roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
    static-rr,表示根據權重,建議關註;
    leastconn,表示最少連接者先處理,建議關註;
    source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關註;
    ri,表示根據請求的URI;
    rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;
    hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
    rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。

HAProxy優缺點

    HAProxy的優點
      1、HAProxy是支持虛擬主機的,通過frontend指令來實現
      2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作
      3、支持url檢測後端的伺服器出問題的檢測會有很好的幫助。
      4、它跟LVS一樣,本身僅僅就只是一款負載均衡軟體,單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的。
      5、HAProxy支持TCP協議的負載均衡轉發,可以對Mysql讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,不過在後端的MySQL slaves數量超過10台時性能不如LVS
      6、能對請求的url和header中的信息做匹配,有比LVS有更好的7層實現
           7、自帶強大的監控伺服器狀態的頁面。
    HAProyx的缺點
        1、重載配置的功能需要重啟進程,雖然也是 soft restart,但沒有 Nginx 的 reaload 更為平滑和友好。
        2、多進程模式支持不夠好。
        3、不支持 HTTP cache 功能,現在不少開源的 lb 項目,都或多或少具備 HTTP cache 功能。

HAProxy功能

    HAProxy 是TCP / HTTP 反向代理伺服器,尤其適合於高可用性環境。
        可以針對HTTP 請求添加cookie,進行路由後端伺服器
        可平衡負載至後端伺服器,並支持持久連接
        支持基於cookie 進行調度
        支持所有主伺服器故障切換至備用伺服器
        支持專用埠實現監控服務
        支持不影響現有連接情況下停止接受新連接請求
        可以在雙向添加,修改或刪除HTTP 報文首部
        支持基於pattern 實現連接請求的訪問控制
        通過特定的URI 為授權用戶提供詳細的狀態信息
        支持http 反向代理
        支持動態程式的反向代理
        支持基於資料庫的反向代理
        
    

HAProxy 組成

    程式環境:
        yum install  haproxy
        rpm -ql haproxy
            /etc/haproxy
            /etc/haproxy/haproxy.cfg
            /etc/logrotate.d/haproxy
            /etc/rc.d/init.d/haproxy
            /etc/sysconfig/haproxy
            /usr/bin/halog
            /usr/bin/iprange
            /usr/sbin/haproxy
            /usr/share/doc/haproxy-1.5.18
            /usr/share/haproxy
            /var/lib/haproxy
        主程式:/usr/sbin/haproxy
        配置文件:/etc/haproxy/haproxy.cfg
        Unit file :/usr/lib/systemd/system/haproxy.service
    配置段:
        global :全局配置段
            進程及安全配置相關的參數
            性能調整相關參數
            Debug 參數
        proxies :代理配置段
            defaults :為frontend, backend, listen 提供預設配置
            fronted :前端,相當於nginx, server {}
            backend :後端,相當於nginx, upstream {}
            listen :同時擁有前端和後端,
    
    簡單的配置示例:
        frontend web
            bind *:80
            default_backend websrvs
        backend websrvs
            balance roundrobin
            server srv1 172.16.0.6:80 check
            server srv2 172.16.0.7:80 check

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中國電腦學會(CCF)發起的"電腦職業資格認證"考試,針對電腦軟體開發、軟體測試、信息管理等領域的專業人士進行能力認證。認證對象是從事或將要從事IT領域專業技術與技術管理人 ...
  • Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10069 Accepted Submission(s): 4289 Problem Descri ...
  • 1 2 3 ' /> 4 ' CommandName="btnUpdate" /> 5 6 7 8 string Id = e.CommandArgument.ToString(); 9 ... ...
  • 1. 資料庫訪問性能優化 資料庫的連接和關閉 訪問資料庫資源需要創建連接、打開連接和關閉連接幾個操作。這些過程需要多次與資料庫交換信息以通過身份驗證,比較耗費伺服器資源。ASP.NET中提供了連接池(Connection Pool)改善打開和關閉資料庫對性能的影響。系統將用戶的資料庫連接放在連接池中 ...
  • 運行程式,如果資料庫已經存在,則刪除重建。當打開 連接以及單獨使用OpenAsync和ExecuteNonQueryAsync方法執行SQL命令時,我們使用了I/O非同步操作。 在這個任務完成後,我們創建了一張新的表並插入了一些數據,除了之前提到的方法,我們還使用了ExceuteS... ...
  • 2017晃眼就過去了,2018開工了。閑暇之餘,我想為自己訂個小小目標。 作為一名.NET菜逼程式員。 肯定是希望自己在2018學的更多,做的更多,具體的我想了想: 2017年工作也算比較順利,換了兩家公司,感覺任務都不是特別繁重,也很少加班。第一家公司是做WPF的,我之前沒有做過,但公司願意給我時 ...
  • 1、破解版下載&安裝 參考:https://bbs.feng.com/read htm tid 6939481.html 2、session導入 查看 SecureCRT Preferences General Configuration Paths ,就可以查看session具體目錄,將已有ses ...
  • 前言 今天部門老大開了一個會,期間說到,以後我們部署東西,都是純粹命令部署的,但是用習慣了windows的自己,剛開始用Linux真的是一種折磨,但是折磨歸折磨,想進步就要能夠忍受折磨,所以,還能怎麼辦呢?只好在虛擬機中裝一個沒有界面的centOS,然後藉助secureCRT進行相關連接了.... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...