Haproxyは、C言語で記述された無料のオープンコードソフトウェアであり、高可用性、[負荷分散](https://cloud.tencent.com/product/clb?from=10680)、およびTCPおよびHTTPベースのアプリケーションプロキシを提供し、ほとんどの主流のLinuxオペレーティングシステムで実行できます。
この実験では4つのサーバーを使用し、1つのサーバーにはスケジューリング用のhaproxyをインストールし、他の3つのサーバーはWebサービスを提供するためにnginxで構築し、1つのクライアントをテストアクセスに使用します。
ホスト | システム | ipアドレス | 機能 |
---|---|---|---|
HAproxy | Centos7 | 192.168.128.130 | haproxy |
node1 | Centos7 | 192.168.128.131 | Openresty |
node2 | Centos7 | 192.168.128.132 | Openresty |
node3 | Centos7 | 192.168.128.133 | Openresty |
Client | Windows10 | 192.168.3.2 | chrome |
PS:nginx Webサーバーは3つあるので、ansibleを使用してインストールしました。
wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
tar -zxvf openresty-1.13.6.1.tar.gz
cd openresty-1.13.6.1.tar
useradd -m www
yum -y install gcc gcc-c++ zlib-devel pcre-devel openssl-devel
. /configure --prefix=/usr/local --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module
gmake && gmake install
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
nginxが正しくインストールされているかどうかをテストします
[ root@node1 html]# curl -I http://192.168.128.131
HTTP/1.1200 OK
Server: openresty/1.13.6.1
Date: Mon,18 Mar 201914:06:59 GMT
Content-Type: text/html
Content-Length:556
Last-Modified: Mon,18 Mar 201913:39:22 GMT
Connection: keep-alive
ETag:"5c8f9f8a-22c"
Accept-Ranges: bytes
[ root@node2 openresty-1.13.6.1]# curl -I http://192.168.128.132
HTTP/1.1200 OK
Server: openresty/1.13.6.1
Date: Mon,18 Mar 201914:07:28 GMT
Content-Type: text/html
Content-Length:556
Last-Modified: Mon,18 Mar 201913:38:49 GMT
Connection: keep-alive
ETag:"5c8f9f69-22c"
Accept-Ranges: bytes
[ root@node3 openresty-1.13.6.1]# curl -I http://192.168.128.133
HTTP/1.1200 OK
Server: openresty/1.13.6.1
Date: Mon,18 Mar 201914:07:32 GMT
Content-Type: text/html
Content-Length:556
Last-Modified: Mon,18 Mar 201913:39:08 GMT
Connection: keep-alive
ETag:"5c8f9f7c-22c"
Accept-Ranges: bytes
nginxの展開が成功した後、haproxyの展開を開始します。ここでは、インストールする1.8.19バージョンを選択します。
wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.19.tar.gz
tar -zxvf haproxy-1.8.19.tar.gz
cd haproxy-1.8.19
make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
[ root@haproxy conf]# /usr/local/haproxy/sbin/haproxy -v
HA-Proxy version 1.8.192019/02/11
Copyright 2000-2019 Willy Tarreau <[email protected]>
新しいバージョンのhaproxyは、構成ファイルをexamplesディレクトリに保存しなくなったため、使用する古いバージョンの構成ファイルを採用しました。
global
log 127.0.0.1 local0 #ログ
maxconn 1000 #接続の最大数
daemon
defaults
log global #グローバルに定義されたログを使用する
mode http #デフォルトモードモード{ tcp|http|health }、Tcpはレイヤー4、httpはレイヤー7、ヘルスはOKのみを返します
option httplog #ログの種類はhttplogです。
option dontlognull #ヘルスチェックのログ情報を記録しないでください
retries 3 #接続に3回失敗した場合、サービスは利用できないと見なされます。以下で設定することもできます。
timeout connect 5000 #接続タイムアウト
timeout client 50000 #クライアント接続のタイムアウト
timeout server 50000 #サーバー接続のタイムアウト
listen admin_stats
bind 0.0.0.0:1080 #リスニングポート
mode http
option httplog
maxconn 10
stats refresh 30s #統計ページの更新時間
stats uri /stats #統計ページのURL
stats realm XingCloud\ Haproxy #統計ページのパスワードボックスのプロンプトテキスト
stats auth admin:admin #統計ページの検証情報
stats auth Frank:Frank
stats hide-version
stats admin if TRUE
listen webcluster
bind 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin #負荷分散モードのポーリング
server inst1 192.168.128.131:80 check inter 2000 fall 3 #バックエンドサーバーを定義し、2000ミリ秒ごとにチェックします
server inst2 192.168.128.132:80 check inter 2000 fall 3
server inst3 192.168.128.133:80 check inter 2000 fall 3
デフォルトでは、haproxyにはログがありません。ログを生成するにはrsyslogが必要です。システムにrsyslogがない場合は、yumを使用してインストールできます。
/etc/rsyslog.confの最後に次の2行を追加します。
# haproxy.log
local0.*/var/log/haproxy.log
local3.*/var/log/haproxy.log
/ etc / sysconfig / rsyslogファイルの構成を次の構成に変更します。
# SYSLOGD_OPTIONS=""
SYSLOGD_OPTIONS="-r -m 0"
rsyslogを再起動します
systemctl restart rsyslog
上記の設定が完了したら、haproxyのポートとプロセスが正常かどうかを確認します
ポートとプロセスが正常な状態にあることを確認して、負荷分散が正常に機能するかどうかをテストしてみましょう。
Recommended Posts