千万級高同時負荷等化HAProxyのインストールと使用例
4492 ワード
1.HAProxyの概要
HAProxyは、TCP(4層)、HTTP(7層)アプリケーションに基づくオープンソース、高性能の負荷等化ソフトウェアです.HAproxyはプロフェッショナルな負荷分散ソフトウェアとして、次のような利点があります.
・信頼性と安定性が非常に良く、ハードウェアレベルのF 5負荷等化設備に匹敵する
最大40,000-50,000個の同時接続を同時に維持でき、単位時間内の最大要求数は20,000個であり、最大データ処理能力は10 Gbpsに達する.
・8種類以上の負荷等化アルゴリズムをサポートし、同時にセッション保持をサポートする
.仮想ホスト機能のサポート
.バージョン1.3以降では接続拒否、完全透明エージェントをサポートしており、これらの機能は他の負荷分散には備わっていない
.HAPRoxyは強力なサーバー状態監視ページを持ち、このページを通じてリアルタイムでシステム状況を知ることができる.
.HAproxyは強力なACLサポートを備えており、使い勝手が非常に良い
HAProxyは、オペレーティングシステムの技術的特性を利用してパフォーマンスを最大化するため、haproxyを使用する際にオペレーティングシステムのパフォーマンスを最適化することが重要です.
2.インストール
HAProxyの公式サイトに行って住所をダウンロードしますhttp://www.haproxy.org/
公式サイトは現在最新の安定版1.7.8バージョンのダウンロードアドレス
http://www.haproxy.org/download/1.7/src/haproxy-1.7.8.tar.gz
3.みんなが全体の配置ファイルを理解することができるため、私は私の配置ファイルの内容を貼り出して、中に注釈があってみんなの理解を助けます
4.起動
haproxyの起動はインストールディレクトリの下のsbinの下で
haproxy -f/usr/local/haproxy.cfg
5.起動時によくあるエラー
in multi-process mode, stats will be limited to process assigned to the current request.
Listenは単一のプロセスで実行する必要があります.デフォルトのプロセスを指定する必要があります.この問題を解決するには、グローバルパラメータnbprocを1に設定します.
Proxy 'admin_stats': stats admin will not work correctly in multi-process mode. [./haproxy.main()] FD limit (16384) too low for maxconn=20000/maxsock=40014. Please raise 'ulimit-n' to 40014 or more to avoid any trouble.
パラメータulimit-nを設定してください の値はmaxconnの2倍に等しい
6.これでhaproxyの単純負荷等化構成が完了し、ACLにより7層の要求制御を制御できる.
HAProxyは、TCP(4層)、HTTP(7層)アプリケーションに基づくオープンソース、高性能の負荷等化ソフトウェアです.HAproxyはプロフェッショナルな負荷分散ソフトウェアとして、次のような利点があります.
・信頼性と安定性が非常に良く、ハードウェアレベルのF 5負荷等化設備に匹敵する
最大40,000-50,000個の同時接続を同時に維持でき、単位時間内の最大要求数は20,000個であり、最大データ処理能力は10 Gbpsに達する.
・8種類以上の負荷等化アルゴリズムをサポートし、同時にセッション保持をサポートする
.仮想ホスト機能のサポート
.バージョン1.3以降では接続拒否、完全透明エージェントをサポートしており、これらの機能は他の負荷分散には備わっていない
.HAPRoxyは強力なサーバー状態監視ページを持ち、このページを通じてリアルタイムでシステム状況を知ることができる.
.HAproxyは強力なACLサポートを備えており、使い勝手が非常に良い
HAProxyは、オペレーティングシステムの技術的特性を利用してパフォーマンスを最大化するため、haproxyを使用する際にオペレーティングシステムのパフォーマンスを最適化することが重要です.
2.インストール
HAProxyの公式サイトに行って住所をダウンロードしますhttp://www.haproxy.org/
公式サイトは現在最新の安定版1.7.8バージョンのダウンロードアドレス
http://www.haproxy.org/download/1.7/src/haproxy-1.7.8.tar.gz
tar zxvf haproxy-1.7.8.tar.gz
cd haproxy-1.7.8
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
mkdir /usr/local/haproxy/conf
cp examples/option-http_proxy.cfg /usr/local/haproxy/haproxy.cfg
3.みんなが全体の配置ファイルを理解することができるため、私は私の配置ファイルの内容を貼り出して、中に注釈があってみんなの理解を助けます
#
# demo config for Proxy mode
#
global
maxconn 20000
# HAProxy
ulimit-n 41000
#linux ,
log 127.0.0.1 local0
# ,local0 info(err,warnig,minfo,debug) , rsyslog
uid 200
gid 200
# , uid,gid
chroot /var/empty
nbproc 1
#HAProxy , daemon , , cpu 。
daemon
# ,( )
defaults
mode http
#
retries 3
#
timeout connect 10s
# , ,
timeout client 20s
# , ,
timeout server 30s
# , ,
timeout check 5s
# , ,
listen admin_stats
bind *:9188
# , 9188
mode http
log global
#
stats refresh 30s
#
stats uri /haproxy-status
#uri
stats realm welcome login\ Haproxy
#
stats auth admin:admin~!@
# ,
stats hide-version
# HAProxy
stats admin if TRUE
# , 1.4.9
frontend test-proxy
bind *:80
#
mode http
log global
option httplog
#
option forwardfor
# ip。 “X-Forwarded-For”
option httpclose
#HAProxy , ,
option dontlognull
option nolinger
option http_proxy
maxconn 8000
timeout client 30s
# layer3: Valid users
# acl allow_host src 192.168.200.150/32
acl allow_host src 192.168.10.0/24
#acl , 192.168.10.0/24
#acl
#acl acl acl -i [ ]
# acl allow_host src 0.0.0.0/24
http-request deny if !allow_host
# allow_host
# layer7: prevent private network relaying
# acl forbidden_dst url_ip 192.168.0.0/24
# acl forbidden_dst url_ip 172.16.0.0/12
acl forbidden_dst url_ip 192.168.20.0/24
http-request deny if forbidden_dst
default_backend test-proxy-srv
backend test-proxy-srv
mode http
timeout connect 5s
timeout server 5s
retries 2
option redispatch
# cookie
option abortonclose
#
option nolinger
option http_proxy
# option httpchk GET /index.php
balance roundrobin
cookie SERVERID
server web1 192.168.10.101:8080 cookie server1 weight 6 check inter 2000 rise 2 fall 3
#
server web2 192.168.10.101:8888 cookie server2 weight 6 check inter 2000 rise 2 fall 3
# layer7: Only GET method is valid
acl valid_method method GET
acl valid_method method POST
http-request deny if !valid_method
# layer7: protect bad reply
http-response deny if { res.hdr(content-type) audio/mp3 }
4.起動
haproxyの起動はインストールディレクトリの下のsbinの下で
haproxy -f/usr/local/haproxy.cfg
5.起動時によくあるエラー
in multi-process mode, stats will be limited to process assigned to the current request.
Listenは単一のプロセスで実行する必要があります.デフォルトのプロセスを指定する必要があります.この問題を解決するには、グローバルパラメータnbprocを1に設定します.
Proxy 'admin_stats': stats admin will not work correctly in multi-process mode. [./haproxy.main()] FD limit (16384) too low for maxconn=20000/maxsock=40014. Please raise 'ulimit-n' to 40014 or more to avoid any trouble.
パラメータulimit-nを設定してください の値はmaxconnの2倍に等しい
6.これでhaproxyの単純負荷等化構成が完了し、ACLにより7層の要求制御を制御できる.