入門Nginxの-負荷等化(SpringBoot)


概要
1つのSpringBootバックエンドサービスを採用し、異なるポートで起動し、複数のサービスをシミュレートし、ここでは2つを例に説明する.
  • オペレーティングシステム:Windows 7
  • 最初のステップは多くのサービスを準備し、起動します.
  • コード
  • package com.nginx.loadbalance.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * LoadBalanceController
     */
    @RestController
    public class LoadBalanceController {
    
        @Value("${server.port}")
        private String port;
    
        @GetMapping("/api/v1/serve")
        public String serve() {
            return "This is Server: " + port;
        }
    
    }
    
  • 起動
  • 先に梱包:mvn clean package;そして2つのサービスを開始します.
    java -jar loadbalance-0.0.1-SNAPSHOT.jar --server.port=8000
    java -jar loadbalance-0.0.1-SNAPSHOT.jar --server.port=9000
    

    第2ステップNginxでの負荷分散構成の完了
  • Nginxプロファイルをnginxで編集する.confファイルに追加するupstreamserverノードは以下の通り(Linuxは一般的にvi /etc/nginx/nginx.confによって修正される)
  • である.
        upstream api-server {  
            server 127.0.0.1:8000;
            server 127.0.0.1:9000;
        }
        server {
            listen       80;
            server_name  localhost;
    
            location /  {
                proxy_pass   http://api-server;
                proxy_redirect default;
            }
        }
    

    第3ステップ負荷分散の検証
    確認する前に、nginx -s reloadを使用してNginx構成をリフレッシュしてください.http://localhost/api/v1/serveにアクセスし、ページに表示される情報を観察し、2つのサービス間でデフォルトの配布方法で配布されます.
  • This is Server: 8000
  • This is Server: 9000

  • Notes:発生する可能性のある問題
          ,         “HTTP Status 400 – Bad Request”,             
    
        upstream api_server {  
            server 127.0.0.1:8000;
            server 127.0.0.1:9000;
        }
        server {
            listen       80;
            server_name  localhost;
    
            location /  {
                proxy_pass   http://api_server;
                proxy_redirect default;
            }
        }
    

    しかし、nginx-tテストの結果、バックエンドのサービスログでエラーが発生しました.
  • 原因分析:nginxのupstreamの後ろの名前に下線を含めることはできません.Nginxプロファイルの属性名と競合します(eg:server_name).
  • 解決策:下線を削除するか、-に置き換えます.

  • これにより,NginxとSpringBootに基づいて負荷等化を実現した.
    If you have any questions or any bugs are found, please feel free to contact me.
    Your comments and suggestions are welcome!