Haproxy的負載均衡和高可用配置


一、Haproxy的理解

   Haproxy是一個使用c語言編寫的自由開發源代碼軟件,它提供高可用性、負載均衡、以及基於http和tcp的應用程序代理。

   Haproxy特別使用於那些負載特別大的web站點,這些站點通常需要會話或七層處理。Haproxy運行再當前的硬件上,完全可以支持數以萬計的並發連接。並且他的運行模式使得它可以很簡單安全的整合進當前的架構中,同時也可以保護我們的web服務器不被暴露再網絡上。

二、haproxy的安裝配置和負載均衡

   1)首先在server1中下載haproxy的源碼包,解壓

   --->  yum install rpm-build  -y       # 安裝rpmbuild命令

   --->  rpmbuild  -tb haproxy-1.4.26.tar.gz   # 建立haproxy的二進制軟件包

   --->  cd rpmbuild/RPMS/x86_64

   --->  rpm  -ivh  haproxy-1.4.26-1.x86_64.rpm       # 安裝haproxy軟件包

   --->  rpm  -ql  haproxy      # 查看軟件相關文件的路徑

   2)生成haproxy的配置文件

   --->  cd  /root/

   --->  tar  zxf  haproxy-1.4.24.tar.gz          # 解壓壓縮包。

   --->  cd  haproxy-1.4.26/examples

    --->  cp  conten-sw-sample.cfg  /etc/haproxy/haproxy.cfg   # 若目錄haproxy不存在,新建即可

    3)創建haproxy用戶,並修改配置文件

   --->  useradd  haproxy

   --->  vim  /etc/haproxy/haproxy.cfg

  global

          maxconn         10000       # 最大連接數

          stats socket    /var/run/haproxy.stat mode 600 level admin

          log             127.0.0.1 local0

          uid             haproxy         # 此處為新建的haproxy用戶的信息

          gid             haproxy 

          chroot          /var/empty

          daemon

  defaults

          mod             http

          log             global

          option          httplog

          option          dontlognull

          monitor-uri     /monitoruri

          maxconn         8000

          timeout client  30s

          option  prefer-last-server

          retries         2

          option  redispatch

          timeout connect 5s

          timeout server  5s

  frontend public

          bind             *:80 name clear     # 默認haproxy的端口號為1080

          #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem

          #mode            http

          default_backend dynamic

  backend dynamic    # 默認使用的后端服務集群

          balance         roundrobin        # 負載均衡的算法為rr

          server          statsrv1 172.25.2.2:80 check inter 1000   # 后端服務器

          server          statsrv2 172.25.2.3:80 check inter 1000

   4)修改內核最大文件數

 

   --->  vim  /etc/security/limits.conf         # 在最后一行輸入以下內容

         haproxy     -     nofile    10000

   5)啟動服務,測試haproxy是否安裝成功

   --->  /etc/init.d/haproxy   start

  

   --->  netstat  -antlp| grep  1080         # 查看1080端口是否可用

  

   6)在真機中進行負載均衡的測試,輪詢的方式(端口號自己可以在配置文件中修改)

  

   7)對后端服務器的管理和頁面數據的監控

  

   8)172.25.31.6/monitoruri #網站健康檢測URL,用來檢測HAProxy管理的網站是否可以用,正常返回200 

  

三、基於tcp和http的應用程序代理

   (一)動態頁面和靜態頁面的分離

   1、在server1中的httpd默認發布目錄中編寫文件index.html(server2);在server3中http默認發布目錄編寫文件index.php

   ---> yum install -y php php-mysql          # 在server3中安裝php動態頁面

   ---> vim /vat/www/html/index.php  

  

   --->  /etc/init.d/httpd  restart

   2、在haproxy的配置文件中修改訪問動態頁面和靜態頁面

   --->  vim  /etc/haproxy/haproxy.cfg               # 在之前的基礎上做如下修改

  

   3)在瀏覽器中進行測試

   # 動態訪問server3的index.php界面

  

   # 靜態訪問的server2中的發布文件

   

   (二)修改haproxy的日志文件

   1)修改日志服務配置文件從而修改日志存儲位置

   --->  vim /etc/rsyslog.conf           # 修改三處

  

 

  

 

  

 

   --->  /etc/init.d/rsyslog   restart      # 重啟日志服務

 

   2)啟動haproxy服務,生成日志,並查看

   --->  /etc/init.d/haproxy  restart

   --->  cat  /var/log/haproxy.log          # 查看日志

  

   (三)訪問控制

   1)修改配置文件,添加訪問控制的主機

   --->  vim /etc/haproxy/haproxy.conf      # 添加黑名單,在blacklist中的主機均不可以訪問(可寫ip亦可寫網段)

   

   --->  /etc/init.d/haproxy  restart

   2)在瀏覽器中測試情況如下:

   

   3)重定向(當250訪問時,重定向到server1中)

   --->  vim  /etc/haproxy/haproxy.conf        # 打開httpd服務

  

   --->  /etc/init.d/haproxy   reload

   --->  /etc/init.d/httpd  start

   4)測試結果如下
  

   (四)讀寫分離

   1)在server1中編寫配置文件

   --->  vim  /etc/haproxy.haproxy.conf            # 當進行上傳操作,轉到server3

  

   --->  /etc/init.d/haproxy  reload

   2)在server2和server3中安裝php,把上傳腳本放在http默認發布目錄,在server3中建立load目錄,存放上傳圖片。(要設置權限)

   

   3)上傳圖片(注意圖片的格式)

  

  

   # 上傳成功,在upload目錄中查看:

  

四、corosync+pacemaker實現haproxy的高可用

   1)首先在server4中安裝haproxy服務。操作步驟與server1相同。配置好的結果為:

  

   2)在server1和server4中,開啟corosync服務 (可以關閉haproxy服務)

   --->  /etc/init.d/corosync  start

   3)在crm中添加haproxy服務(首先刪除之前的nginx服務和web組)

  

  

   # 添加haproxy服務並創建組,把ip和haproxy添加進去

  

  

   # 再另一端監控情如下:

  

   4)當節點server4的corosync關閉時,資源自動切換到server1上。

  

   # 真機中一直是可以顯示的。

  

   5)當server1的主機掛掉的時候,由於fence服務是啟動的,所以,server1可以自動開啟,並加入可用節點中。


 


免責聲明!

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



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