9.Nginxの負荷分散

Nginxの負荷分散

Webサーバーは直接ユーザーに面しており、多くの場合、多数の同時リクエストを実行する必要があります。単一のサーバーをロードするのは困難です。フロントエンドでWEBサーバークラスターとNginxロードバランシングを使用しています。リクエストはバックに分散されます。負荷分散分散を実現するためのエンドサーバークラスター。次に、システムのスループット、要求のパフォーマンス、および高い災害耐性が大幅に向上します。

LBロードバランス

SLBサーバーlb
ここに画像の説明を挿入

1.Nginxの負荷分散はレイヤーで分割されます

1.2負荷分散のアプリケーションシナリオは、レイヤーごとに分けられます。

1.2.1.4層の負荷分散

IPアドレス

TCP / UDP

ポート番号

1.2.2.7層の負荷分散

HTTP

HTTPS

FTP

SMTP

2.Nginx負荷分散構成シナリオ

Nginxは、負荷分散を実現するためにproxy_passプロキシモジュール構成を使用する必要があります。

Nginxの負荷分散は、クライアント要求を一連のアップストリーム仮想サービスプールにプロキシすることです

3.Nginxアップストリーム構成構文

構文:上流名{…}

デフォルト:-

コンテキスト:http

//上流の例

upstream backend {
    
    
	server backend1.example.com weight=5;
	server backend2.example.com:8080;
	server unix:/tmp/backend3;
	server backend1.example.com:8080 backup;
	}
server {
    
    
		location / {
    
    
				proxy_pass http://backend;	
		}	
}

4.環境計画実験7階

役割 エクストラネット イントラネット CPU名
LB1 ens33:192.168.154.41 ens32:172.168.20.12 bl01
web1 192.168.154.132 172.168.20.6 web01
web2 192.168.154.133 172.168.20.7 web02

4.1.web1構成

[root@web01 www1]# echo "hellow 172.168.20.6" > index.html

[root@web01 www1]# cat /etc/nginx/conf.d/www1.conf 
server {
	listen 80;
	server_name yan.www.com;
	access_log /html/www1/log/access.log;
	error_log /html/www1/log/error.log;
	location / {
		root /html/www1/;
		index index.html;
	}
}

[root@web01 www1]# systemctl reload nginx

4.2.web02構成

[root@web02 www1]# echo "hellow 172.168.20.7" > index.html

[root@web01 www1]# cat /etc/nginx/conf.d/www1.conf 
server {
	listen 80;
	server_name yan.www.com;
	access_log /html/www1/log/access.log;
	error_log /html/www1/log/error.log;
	location / {
		root /html/www1/;
		index index.html;
	}
}

[root@web02 www1]# systemctl reload nginx

4.3.LB01構成

[root@bl01 nginx]# cat proxy_params 
proxy_set_header Host $http_host; 
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30; 
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

[root@bl01 conf.d]# cat upstream.conf 
upstream web {
    
    					#创建及群组
	server 172.168.20.6;
	server 172.168.20.7;
}
server {
    
    
	listen 80;
	server_name yan.www.com;
	location / {
    
    
		proxy_pass http://web;
		include proxy_params;		#调用及群组
	}
}

[root@bl01 conf.d]# systemctl restart nginx

4.4。検証

ブラウザを使用してyan.www.comにアクセスし、テストを常に更新します

5.Nginx負荷分散バックエンドサーバーのステータス

フロントエンドNginxロードスケジューラのバックエンドWebサーバーのステータス

状態 概要概要
ダウン 現在のサーバー表示は負荷分散に参加していません
バックアップ 予約済みバックアップサーバー
max_fails 失敗したリクエストの数を許可する
fail_timeout max_failsが失敗した後、サービスの一時停止時間
max_conns 受け入れられる接続の最大数を制限する

テストケース:

1.ダウン状態をテストし、サーバーが負荷分散スケジューリングに参加していないことをテストします

upstream load_pass {
    
    

	server 172.168.20.6 down;

	}

2.测试backup及down状态
upstream load_pass {
    
    
	server 172.168.20.6 down;
	server 172.168.20.7 backup;
    server 172.168.20.6 max_fails=1 fail_timeout=2s;
	}
location / {
    
    
	proxy_pass http://load_pass;
	include proxy_params;
	}

3.失敗したmax_failとfail_timeoutの数をテストしてから、マークダウンします

upstream load_pass {
    
    
		server 172.168.20.6;
        server 172.168.20.7 max_fail=2 fail_timeout=10s;
}

4.max_connsのTCP接続の最大数をテストします

upstream load_pass {
    
    
		server 172.168.20.6;
		server 172.168.20.7 max_conns=1;
}

6.Nginx負荷分散スケジューリングアルゴリズム

スケジューリングアルゴリズム 概要概要
ポーリング バックエンドサーバーを1つずつ割り当てて、内部のニーズを見つけます。デフォルト(rr)
重量 加重ポーリング、加重値が大きいほど、道徳的訪問を割り当てる可能性が高くなります(wrr)
ip_hash 各リクエストは、アクセスIPのハッシュ結果に従って割り当てられるため、バックエンドサーバーは同じIPアドレスから固定的にアクセスされます。
url_hash 訪問したURLのハッシュ結果に従ってリクエストを配信し、各URLは同じバックエンドサーバーに送信されます
less_conn 最小の接続数、最小の接続数のマシンが分散されます(lc)
wlc 加重最小接続

1.Nginxロードバランシング[rr]ポーリング固有の構成

upstream load_pass {
	server 172.168.20.6;
	server 172.168.20.7;
	}

2. [重量]重量ポーリング固有の構成のバランスをとる

upstream load_pass {
    
    
		server 172.168.20.6 weight=5;
		server 172.168.20.7;
}

3.Nginxストック災害バランスip_hashの特定の構成を重み付きで使用することはできません。

//クライアントが同じプロキシを使用している場合、特定のサーバーへの接続が多すぎます

upstream load_pass {
    
    
		ip_hash;
		server 172.168.20.6;
		server 172.168.20.7;
}

7.4層の負荷分散を構成します

7.1メイン構成ファイル/etc/nginx/nginx.confを変更します

[root@bl01 ~]# cat /etc/nginx/nginx.conf 
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    
    
    worker_connections  1024;
}
#四层代理
include /etc/nginx/conf.c/*.conf;    //添加代理目录
[root@bl01 ~]# mkdir /etc/nginx/conf.c   //创建负载配置文件目录
[root@bl01 ~]# vim /etc/nginx/conf.c/lb.conf  //配置四层负载文件
stream {
    
    
        upstream ssh_web01 {
    
    
                server 192.168.154.132:22;
        }
        upstream ssh_web02 {
    
    
                server 192.168.154.133:22;
        }
        upstream mysql_01 {
    
    
                server 192.168.154.135:3306;
        }
        server {
    
    
                listen 5555;
                proxy_pass ssh_web01;
                proxy_connect_timeout 1s;
                proxy_timeout 300s;
        }
        server {
    
    
                listen 6666;
                proxy_pass ssh_web01;
        }
        server {
    
    
                listen 33061;
                proxy_pass mysql_01;
        }
}

おすすめ

転載: blog.csdn.net/weixin_43357497/article/details/113764162