Nginx : 負荷分散の設定2024/02/13 |
Nginx での負荷分散の設定です。ロードバランサーとして利用できます。
当例では以下のような環境を例に設定します。 -----------+---------------------------+----- | | |10.0.0.31 | +----------+-----------+ | | [ www.srv.world ] | | | Nginx | | +----------------------+ | | ------------+--------------------------+--------------------------+------------ | | | |10.0.0.51 |10.0.0.52 |10.0.0.53 +-----------+----------+ +-----------+----------+ +-----------+----------+ | [ node01.srv.world ] | | [ node02.srv.world ] | | [ node03.srv.world ] | | Web Server#1 | | Web Server#2 | | Web Server#3 | +----------------------+ +----------------------+ +----------------------+ |
[1] | |
[2] | Nginx サーバーへのリクエストをバックエンド Web サーバーへ負荷分散をするように設定します。 |
root@www:~ #
vi /usr/local/etc/nginx/nginx.conf # [http] セクション内に追記 # [backup] を指定すると [backup] 以外が通信不能な場合のみバランシング # [weight=*] で重み付け (weight=2 の場合, 指定無サーバーと 2:1 の割合でバランシング) http { upstream backends { server node01.srv.world:80 weight=2; server node02.srv.world:80; server node03.srv.world:80 backup; } # [server] セクション内を全て変更 # サーバー名や証明書は自身のものに置き換え server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name www.srv.world; ssl_certificate "/usr/local/etc/letsencrypt/live/www.srv.world/fullchain.pem"; ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.srv.world/privkey.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; location / { proxy_pass http://backends; } }root@www:~ # service nginx reload
|
[3] | バックエンド Nginx サーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 |
root@node01:~ #
vi /usr/local/etc/nginx/nginx.conf # 26-28行目 : コメント解除 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # [server] セクションに追記 server { listen 80; server_name node01.srv.world; set_real_ip_from 10.0.0.0/24; real_ip_header X-Forwarded-For;root@node01:~ # service nginx reload |
[4] | 任意のクライアントコンピューターからフロントエンドの Nginx サーバーへ HTTP/HTTPS アクセスして動作を確認します。 また、バックエンドの Nginx ログ [/var/log/nginx/access.log] にアクセス元のクライアントホストの IP アドレスがロギングされていることも確認しておくとよいでしょう。 |
Sponsored Link |