GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu14.04でのHAproxyロードバランサーの設定

目標:
この例では、HTTPリクエストはHTTPウェブサーバーへのHTTPリクエストとして直接プロキシされます。 HTTPSリクエストの場合、それらはHAproxyによって証明書で処理され、HTTPリクエストとしてWebサーバーにプロキシされます。

SSLCertificates:
プロキシされるすべての仮想ホストの証明書は、証明書とキーの組み合わせごとに1つのPEM形式ファイルとして次のディレクトリに保存されます:
/etc/ssl/private/
CAは、CAごとに1つのPEM形式ファイルとして次のディレクトリにも保存されます:
/etc/ssl/certs/

手順:
HAproxyのインストール:
apt-get update && apt-get install haproxy

HTTPおよびHTTPS負荷分散用にHAproxyを構成します:

ファイルを編集します/etc/haproxy/haproxy.cfg
コンテンツ:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
#
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
#
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
tune.ssl.default-dh-param 2048
#
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
# Added to create separate error and access logs
option log-separate-errors
#
# ------- HTTP Frontend --------------
frontend http_in
bind *:80
mode http
reqadd X-Forwarded-Proto:\ http
default_backend http_out
#
# ------- HTTPS Frontend --------------
frontend https_glwp-in
bind *:443 ssl crt /etc/ssl/haproxy_certs/
mode http
reqadd X-Forwarded-Proto:\ https
default_backend http_out
#
#------------------------------------
listen stats :2000
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /stats
stats auth admin:mypasswd
#
# ------- HTTP Backend --------------
backend http_out
balance roundrobin
stick-table type ip size 200k expire 60m
stick on src
option forwardfor
option httpclose
http-request set-header X-Forwarded-Port %[dst_port]
option httpchk HEAD /
server web1 webserv1.mynet.net:80 check
server web2 webserv2.mynet.net:80 check
server web3 webserv3.mynet.net:80 check
server web4 webserv4.mynet.net:80 check

TCPプロキシでクライアントのソースIPを保持する

上記の例では、負荷分散されているプロトコルはアプリケーションプロトコルであり、HTTP/HTTPSヘッダーからソースIPを取得することでソースIPを保持できます。X-Forwarded-For: (オプションによって取得: option forwardfor )、ただし、TCPレイヤーロードバランサーとしてHAProxyを使用する場合、ソースIP(クライアントのIP)を保持するには、次の記事を参照してください:http://blog.haproxy.com/2012/06/05/preserve-source- ip-address-despite-reverse-proxies /
特にバックエンドサーバーでは、理解して実装するのは少し複雑です。まだ試したことがないので、その有効性を保証することはできませんので、例をあげることはできません。私が理解していることから、TCPプロキシディレクティブ(ここでは説明されていません)に必要な変更は、次の2つの要件だけです。
1) HAProxyバックエンド構成には追加のエントリが含まれています: source 0.0.0.0 usesrc clientip
2) バックエンドサーバーのネットワーク設定は、HaProxyホストのIPアドレスをデフォルトゲートウェイとして使用するように構成する必要があります。

このようにして、バックエンドサーバーはクライアントのソースIPを、クライアントがバックエンドサーバーに直接接続されているかのように認識し、バックエンドサーバーからの応答がHAProxyホストを介して返されます。
実用的な例ですぐに続行します…..

ハッピーロードバランシング🙂


Ubuntu
  1. Ubuntu16.04でHAProxyをセットアップする方法

  2. HAProxyロードバランサーを設定する方法

  3. Debian11にHAProxyロードバランサをインストールして設定する方法

  1. Ubuntu20.04でのZFSの構成

  2. Ubuntu20.04にHAProxyロードバランサーをインストールして構成する方法

  3. Ubuntu16へのCuda8のインストール:パッケージCudaが見つかりませんか?

  1. Debian 9 /Ubuntu16.04サーバーでHAProxyを設定する方法

  2. CentOS7でMariaDBのロードバランサーとしてHAProxyを設定する方法

  3. CentOS7でNginxのロードバランサーとしてHAProxyを設定する方法