【Haproxy】haproxy負載均衡

小亮520cl發表於2016-02-18
1.安裝
  1. 下載 
  2. # cd haproxy-1.4.20
  3. # make TARGET=linux26 PREFIX=/usr/local/haproxy #將haproxy安裝到/usr/local/haproxy
  4. # make install PREFIX=/usr/local/haproxy

2.配置

安裝完畢後,進入安裝目錄配置檔案,預設情況下目錄裡是沒有.cfg配置檔案的,可以回到安裝檔案目錄下將examples下的haproxy.cfg複製到usr/local/haproxy下。

# cd /usr/local/haproxy

# vi haproxy.cfg


3配置tcp負載均衡

  1. [root@localhost conf]# vi haproxy.cfg
  2. global
  3.         log 127.0.0.1 local0
  4.         maxconn 4096
  5.         stats socket /tmp/haproxy.socket uid haproxy mode 770 level admin
  6.         # nbproc 2
  7.         pidfile /tmp/haproxy.pid
  8.         daemon

  9. defaults
  10.         log global
  11.         log 127.0.0.1 local0
  12.         mode tcp
  13.         option tcplog
  14.         option dontlognull
  15.         retries 3
  16.         option redispatch
  17.         maxconn 2000
  18.         timeout connect 5s
  19.         timeout client 120s
  20.         timeout server 120s

  21. listen mysql_proxy :23306        ---分發均衡的埠
  22.         mode tcp                       ---型別
  23.         balance roundrobin
  24.         server mysql_65 192.168.6.119:3306 check inter 5000 rise 2 fall 3     ###需要分發的地址
  25.         server mysql_67 192.168.6.122:3306 check inter 5000 rise 2 fall 3

  26. listen private_monitoring :8101      ----web頁面檢視的埠
  27.         mode http
  28.         option httplog
  29.         stats enable
  30.         stats uri /stats                  ####web訪問頁面
  31.         stats refresh 5s
  32.         stats auth Frank:Frank            #設定監控頁面的使用者和密碼:Frank
  33.         stats hide-version                #隱藏統計頁面的HAproxy版本資訊

我們啟動haproxy命令
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg


4 測試tcp分發:
  1. #第一次訪問:訪問到了119資料庫
  2. [root@localhost conf]# mysql -uroot -pESBecs00 -P23306 -h192.168.6.121

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | db2                |
    | db3                |
    | hhhh               |
    | mysql              |
    | performance_schema |
    | test               |
    | test1              |
    | test2              |
    | xdy_link           |
    +--------------------+
    11 rows in set (0.07 sec)

  3. #第二次訪問:訪問到了122資料庫
  4. [root@localhost conf]# mysql -uroot -pESBecs00 -P23306 -h192.168.6.121
    Warning: Using a password on the command line interface can be insecure.

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | db2                |
    | db3                |
    | mysql              |
    | performance_schema |
    | test               |
    | test1              |
    | test2              |
    +--------------------+
    9 rows in set (0.09 sec)


    tcp分發成功
  5. 登入web頁面檢查



5 配置http負載均衡

點選(此處)摺疊或開啟

  1. [root@localhost conf]# vi haproxy.cfg
  2. global
  3.         log 127.0.0.1 local0
  4.         maxconn 4096
  5.         stats socket /tmp/haproxy.socket uid haproxy mode 770 level admin
  6.         # nbproc 2
  7.         pidfile /tmp/haproxy.pid
  8.         daemon

  9. defaults
  10.         log global
  11.         log 127.0.0.1 local0
  12.         mode tcp
  13.         option tcplog
  14.         option dontlognull
  15.         retries 3
  16.         option redispatch
  17.         maxconn 2000
  18.         timeout connect 5s
  19.         timeout client 120s
  20.         timeout server 120s

  21. listen mysql_proxy :23306
  22.         mode http           ---這個地方不一樣
  23.         balance roundrobin
  24.         server mysql_65 192.168.6.119:80 check inter 5000 rise 2 fall 3
  25.         server mysql_67 192.168.6.122:80 check inter 5000 rise 2 fall 3

  26. listen private_monitoring :8101
  27.         mode http
  28.         option httplog
  29.         stats enable
  30.         stats uri /stats
  31.         stats refresh 5s
  32.         stats auth Frank:Frank #設定監控頁面的使用者和密碼:Frank

  33.         stats hide-version #隱藏統計頁面的HAproxy版本資訊

6測試http分發
  1. [root@localhost conf]# curl 192.168.6.121:23306
  2. 1234 this is 192.168.6.119
  3. [root@localhost conf]# curl 192.168.6.121:23306
  4. thisi is 192.168.6.122
  5. [root@localhost conf]# curl 192.168.6.121:23306
  6. 1234 this is 192.168.6.119
  7. [root@localhost conf]# curl 192.168.6.121:23306
  8. thisi is 192.168.6.122
  9. 成功

7 還可以透過域名配置分發:(因為我們網站可能對應多個域名)
  1. global
            log 127.0.0.1 local0 info #[err warning info debug] //日誌位置
            maxconn 4096
            daemon #設定成後臺執行
            nbproc 1 #程式數量


    defaults
            log     global
            mode    http #預設模式
            option  httplog #http日誌格式
            option  dontlognull
            retries 3  #三次失敗後認為伺服器不可用
            option  redispatch  #如果cookie寫入了serverId而客戶端不會重新整理cookie,當serverId對應的伺服器掛掉後,強制定向到其他健康的服務

            maxconn 2000 #當伺服器負載很高的時候,自動結束掉當前佇列處理比較久的連結預設的最大連線數
            contimeout 5000 #連線超時
            clitimeout 30000 #客戶端超時
            srvtimeout 30000 #伺服器超時


    frontend web_in
            mode http
            maxconn 1000
            bind :80
            acl is_a hdr_beg(host) -i  #判斷域名是不是是則給與a伺服器叢集服務
            acl is_b hdr_beg(host) -i  #判斷域名是不是是則給與b伺服器叢集服務


            use_backend a_server if is_a
            use_backend b_server if is_b


    backend a_server
            mode http #http 模式
            stats   uri  /haproxy
            balance roundrobin
            cookie  JSESSIONID prefix
            stats   hide-version
            option  httpclose
            server web1 218.78.186.162:8000 check
            server web1 218.78.186.163:8000 check



    backend b_server
            mode http #http 模式
            stats   uri  /haproxy
            balance roundrobin
            cookie  JSESSIONID prefix


            stats   hide-version
            option  httpclose
            server web1 218.78.186.162:8080 check



參考文件
http://blog.csdn.net/youyudehexie/article/details/7606504

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1990588/,如需轉載,請註明出處,否則將追究法律責任。

相關文章