Haproxy介紹、安裝與配置

Haproxy技術詳解
1、 介紹
HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。
HAProxy特別適用於那些負載特大的web站點,這些站點一般又須要會話保持或七層處理。HAProxy運行在當前的硬件上,徹底能夠支持數以萬計的併發鏈接。而且它的運行模式使得它能夠很簡單安全的整合進您當前的架構中,同時能夠保護你的web服務器不被暴露到網絡上。
HAProxy實現了一種事件驅動, 單一進程模型,此模型支持很是大的併發鏈接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,不多能處理數千併發鏈接。事件驅動模型由於在有更好的資源和時間管理的用戶空間(User-Space) 實現全部這些任務,因此沒有這些問題。此模型的弊端是,在多核系統上,這些程序一般擴展性較差。這就是爲何他們必須進行優化以 使每一個CPU時間片(Cycle)作更多的工做。
包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在內的知名網站,及亞馬遜網絡服務系統都使用了HAProxy。javascript

【以上摘自百度百科】css

 

2、 原理
HAProxy 支持TCP(四層)和HTTP(七層)兩種代理模式,也是支持虛擬主機的。
HAProxy 的優勢可以補充 Nginx 的一些缺點,好比支持 Session 的保持,Cookie 的引導;同時支持經過獲取指定的 url 來檢測後端服務器的狀態。
HAProxy 跟 LVS 相似,自己就只是一款負載均衡軟件;單純從效率上來說 HAProxy 會比 Nginx 有更出色的負載均衡速度,在併發處理上也是優於 Nginx 的。
HAProxy 支持 TCP 協議的負載均衡轉發,能夠對 MySQL 讀進行負載均衡,對後端的 MySQL 節點進行檢測和負載均衡,你們能夠用 LVS+Keepalived 對 MySQL 主從作負載均衡。
HAProxy 負載均衡策略很是多:Round-robin(輪循)、Weight-round-robin(帶權輪循)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據cookie)。java

3、 安裝(以CentOS爲例)
A.聯網yum安裝linux

$ sudo yum install haproxy -y

文件存放位置:web

/usr/sbin/haproxy #二進制文件
/usr/share/haproxy #共享文件
/var/lib/haproxy #庫文件
/etc/rc.d/init.d/haproxy #啓動二進制文件
/etc/logrotate.d/haproxy #日誌切割
/etc/sysconfig/haproxy #配置
/etc/haproxy #配置目錄redis

B.源碼編譯
haproxy-1.8.8.tar.gz源碼包地址:[從官網下載須要FQ]
連接: https://pan.baidu.com/s/1yj8qy2JB0Rh-WPy33T7aAw 提取碼: yy5d
# 編譯過程以下:vim

$ sudo tar –zxvf haproxy-1.8.8.tar.gc –C /usr/local/src
$ sudo groupadd -r haproxy && useradd -g haproxy -M -s /sbin/nologin haproxy 
$ sudo cd /usr/local/src/haproxy-1.8.8
$ sudo make TARGET=linux26 ARCH=X86_64 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
$ sudo mkdir –p /etc/haproxy && vim /etc/haproxy/haproxy.cfg

###################################haproxy.cfg配置文件######################################後端

global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main *:5000
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app

backend static
    balance     roundrobin
    server      static 127.0.0.1:4331 check

backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

 

###########################################################################################安全


4、 配置文件詳解服務器

相關文章
相關標籤/搜索