HAproxy原理及配置

軟件:haproxy---主要是做負(fù)載均衡的7層,也可以做4層負(fù)載均衡
HAPROXY配置文件中分五大部分:
  • global:全局參數(shù)配置,用來(lái)控制Haproxy啟動(dòng)前的一些進(jìn)程及系統(tǒng)設(shè)置。
  • defaults:配置一些默認(rèn)的參數(shù),可以被frontend,- backend,listen段使用
  • frontend:匹配接收客戶所請(qǐng)求的域名,uri等,并針對(duì)匹配做不同的請(qǐng)求處理
  • backend:定義后端服務(wù)器集群,以及對(duì)后端服務(wù)器集群的一些權(quán)重、隊(duì)列、連接數(shù)等選項(xiàng)的設(shè)置,類似于nginx中的upstream模塊,類似于LVS中的real server節(jié)點(diǎn);
  • listen:可以理解為frontendbackend組合體
  • Haproxy配置文件的配置方法主要有兩種,一種是由前端(frontend)和后端(backend)配置塊組成,前端和后端都可以有多個(gè)。第二種方法是只有一個(gè)listen配置塊來(lái)同時(shí)實(shí)現(xiàn)前端和后端。最常用也是推薦的方法為第一種,即frontend和backend的模式。
global
    log         127.0.0.1 local2   #日志服務(wù)器
    pidfile     /var/run/haproxy.pid   #pid文件(進(jìn)程)
    maxconn     4000   #最大連接數(shù)
    user        haproxy  #用戶
    group       haproxy  #組
    daemon    #守護(hù)進(jìn)程方式后臺(tái)運(yùn)行
    nbproc      1    #工作進(jìn)程數(shù)量  cpu內(nèi)核是幾就寫幾
defaults    #提供默認(rèn)參數(shù)
    mode                    http   #工作模式 http ,tcp 是 4 層,http是 7 層  
    log                     global
    option                  redispatch   #服務(wù)不可用后重定向到其他健康服務(wù)器
    retries                 3   #健康檢查。3次連接失敗就認(rèn)為服務(wù)器不可用,主要通過(guò)后面的check檢查
    maxconn                 4000
    contimeout              5000
    clitimeout              50000
    srvtimeout              50000
listen stats   ##使用瀏覽器訪問(wèn)http://192.168.246.169/haproxy,可以看到服務(wù)器狀態(tài)(web界面顯示haproxy狀態(tài))
    bind            *:81  #自定義端口
    stats                       enable
    stats uri               /haproxy   #自定義URL開頭
    stats auth              qianfeng:123  #用戶認(rèn)證,客戶端使用elinks瀏覽器的時(shí)候不生效
frontend  web
    mode                    http  #七層模式
    bind                   *:80
    option                  httplog    #日志類別 http 日志格式
    acl html url_reg  -i  \.html$  #1.訪問(wèn)控制列表名稱html。規(guī)則要求訪問(wèn)以html結(jié)尾的url(可選)     #acl訪問(wèn)控制,-i忽略大小寫
    use_backend xxx if  html   #如果滿足acl html規(guī)則,則推送給后端服務(wù)器xxx
    default_backend    httpservers   ¥設(shè)置默認(rèn)后端標(biāo)簽
backend httpservers  #名字要與上面的名字必須一樣

    balance     roundrobin     #算法:輪詢
    server  http1 192.168.246.162:80 maxconn 2000 weight 1  check inter 1s rise 2 fall 2
    server  http2 192.168.246.163:80 maxconn 2000 weight 1  check inter 1s rise 2 fall 2
listen mysql
    bind *:3306
    mode tcp      #四層模式
    balance roundrobin    #算法:輪詢
    server mysql1 192.168.246.163:3306 weight 1  check inter 1s rise 2 fall 2
    server mysql2 192.168.246.162:3306 weight 1  check inter 1s rise 2 fall 2
   #inter表示健康檢查的間隔,單位為毫秒 可以用1s等,fall代表健康檢查失敗2回后放棄檢查。rise代表連續(xù)健康檢查成功2此后將認(rèn)為服務(wù)器可用。默認(rèn)的,haproxy認(rèn)為服務(wù)時(shí)永遠(yuǎn)可用的,除非加上check讓haproxy確認(rèn)服務(wù)是否真的可用。
keepalived實(shí)現(xiàn)高可用+擴(kuò)展對(duì)調(diào)度器Haproxy健康檢查
  • 思路:兩臺(tái)機(jī)器都做腳本
  • 讓Keepalived以一定時(shí)間間隔執(zhí)行一個(gè)外部腳本(check_haproxy_status.sh),腳本的功能是當(dāng)Haproxy失敗,則關(guān)閉本機(jī)的Keepalived
[root@ha-proxy ~]# cat /etc/keepalived/check_haproxy_status.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null   
if [ $? -ne 0 ];then                                                                     
#       /etc/init.d/keepalived stop
        systemctl stop keepalived
fi  
#賦予權(quán)限                                                                   
[root@ha-proxy ~]# chmod a+x /etc/keepalived/check_haproxy_status.sh
Keepalived配置
[root@ha-proxy keepalived]# vim keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id director1
}
#聲明腳本位置
vrrp_script check_haproxy {
   script "/etc/keepalived/check_haproxy_status.sh"
   interval 5
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.246.17/24
    }
    track_script {
        check_haproxy
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本章內(nèi)容 ◆ Web架構(gòu)介紹◆ 負(fù)載均衡介紹◆ 反向代理介紹◆ HAProxy介紹◆ HAProxy結(jié)構(gòu)◆ HAP...
    Liang_JC閱讀 929評(píng)論 0 0
  • 本文描述的是haproxy做代理,負(fù)載均衡,haproxy狀態(tài)查看,后端主機(jī)的上下線,keepalived高可用 ...
    think_lonely閱讀 5,905評(píng)論 0 7
  • 目錄: HAProxy是什么 HAProxy的核心能力和關(guān)鍵特性 HAProxy的安裝和運(yùn)行 使用HAProxy搭...
    kelgon閱讀 80,544評(píng)論 9 159
  • HAProxy是由WillyTarreau開發(fā)的一款具備高可用性、負(fù)載均衡、虛擬主機(jī)支持以及基于TCP和HTTP的...
    robot_test_boy閱讀 1,451評(píng)論 0 2
  • 這幾天看了網(wǎng)上關(guān)于haproxy相關(guān)的視頻,講解的很詳細(xì),很不錯(cuò) 現(xiàn)在做一個(gè)總結(jié) 這次主要是對(duì)haproxy的配置...
    meng_philip123閱讀 11,000評(píng)論 0 6

友情鏈接更多精彩內(nèi)容