注-「負荷分散とnginxの使用を要約し、デモを作成します

最近、負荷分散関連の作業を行っています。いくつかの問題が発生しました。次のように要約してください。

1.なぜ負荷分散が必要なのですか?

従来のWebサイトはすべてクライアント(無数)+サーバー(1つ)であるため、最初に負荷分散が必要な理由について説明します。サーバーがダウンしている場合、クライアントはリクエストを受信できず、問題は深刻です。そのため、この時点でさらにいくつかのサーバーを追加し、各サーバーに同じビジネスコードをデプロイします。サーバーAがデプロイまたはダウンしている場合、クライアントはサーバーBとサーバーCを要求することもできます。次に、この時点で問題が発生します。クライアントに割り当てる要求リンクURLは一意です。クライアントは、サーバーBとサーバーCにどのように要求できますか?答えは、サーバーAがダウンしていることを検出し、サーバーBまたはCに要求を転送できるこの負荷分散にあります。

2.負荷分散とは何ですか?

このスプリングボードを使用して、負荷分散をハードウェア製品として理解したり、踏み台として使用したり、ロードバランサーとして直接理解したり(Baiduも可能)、クライアント要求をさまざまなサーバーに分散できます。各サーバーは単一のサービスを提供します負荷分散は、4層の負荷分散と7層の負荷分散に分けられます。層4の負荷分散とは、OSIプロトコルの第4層(つまり、情報伝達のレベルとして理解できるトランスポート層)を指します。第7層は、OSIプロトコルの第1層を指します。層7(つまり、ビジネスロジックを含む層として理解できるアプリケーション層)、層7の負荷分散は、層4の負荷に基づいて構築されます。レイヤー4負荷分散を使用して、より信頼性の高い要求分散を実現できます。4層の負荷分散の実現は、nginxリバースプロキシを介して実現されます。

リバースプロキシとは何かを示す興味深い写真があります。

真剣に、

3、デモ

1. nginxをダウンロードします。このデモはWindowsで実行されているため、Linuxで実行されている場合は、自分でダウンロードできますhttp://nginx.org/en/download.html

リンク:https://pan.baidu.com/s/1_6iHwFOY4JDrWa2j7yXKCw抽出コード:aqm2 

2.ダウンロード後、圧縮パッケージを解凍し、フルイングリッシュパスのあるフォルダーに配置します。nginx.confファイルを変更します。

    

2.この構成ファイルを変更します。各パラメーターの意味に注釈が付けられています。

worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致
events {
    worker_connections  1024;#单个进程最大连接数(最大连接数=连接数*进程数) 
}
http {
	upstream  mysite{ 
		server 127.0.0.1:8082 weight=2;#权重,eg:8082 weight=2,8092 weight=1;访问3次,会先访问两次8082端口,再访问一次8092端口
		server 127.0.0.1:8092 weight=1;  
    }
    #当前的Nginx的配置 
    server {
	    #监听80端口,可以改成其他端口。这个端口号是一个虚拟的临时端口号,可自定义未被占用的端口号,
		#来自外部的请求会先通过这个虚拟的8083端口再转发到配置的真正端口上去
        listen       8083;
		#server_name当前服务的域名,如果只有一个server域的话,此参数是不起作用的,可以去掉或者随便定义。只有当配置了多个server的时候,这个参数才会发挥作用
        server_name  localhost;
        location / {
		    #这个参数的值自定义,只需要与upstream后面的名字一致即可,不用顾虑其他
            proxy_pass http://mysite; 
			#不进行重定向
			proxy_redirect off;
			#不隐藏端口号
            proxy_set_header Host $host:$server_port;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			#请求超时时间
			proxy_connect_timeout 1; 
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }       
    }	
}

 以下、より冗長に説明しましょう。2つのサーバーをシミュレートするために異なるTomcatポート番号でローカルに2つのspringbootアプリケーションを起動しました。これら2つのアプリケーションは、同じコードを使用して同じデータベースに接続します。これらの2つのポート番号は8082と8092ですが、これら2つのポート番号を公開したくないので、アナログポート番号8083を定義しました。このプロキシインターフェイスにアクセスしているときに、イントラネットのIPアドレスからアクセスする場合は、127.0.0.1:8083を介してアクセスできます。コンテンツが外部ネットワークによってマッピングされ、外部ネットワークドメイン名を介してアクセスされている場合、外部ネットワーク侵入ツールで元の8082ポート番号を8083に設定し、ドメイン名を介してアクセスできます。バックエンドには複数のサーバーがありますが、シミュレートされたポートを介して複数のサーバーを1つにシミュレートします。これは、クラスタリングの概念の具体化です。これにより、内部ネットワーク構造が隠され、サーバーの実ポートへの攻撃が防止され、実サーバーの安全性が高まり、サーバーの安定性が向上します。

3.にアクセスします。負荷分散の効果を得るには、アクセスする前にnginxを起動する必要があります。構成ファイルを変更するたびに、それを再ロードする必要があります。一般的なcmdコマンドは次のとおりです。Linuxコマンドはそれ自体がBaiduです。

nginx構成ファイルの形式が正しいかどうかを確認します:nginx.exe -t
すべてのnginxポート占有バックグラウンドを閉じます:taskkill / IM nginx.exe / F
nginxロードバランシングを開きます:nginx
リロードnginx変更を開始します(構成ファイルを変更した後に使用します) :nginx.exe -sreload
終了nginxロードバランシングnginx.exe-s終了

おすすめ

転載: blog.csdn.net/nienianzhi1744/article/details/102552361