使用nginx進行負載均衡和接口定向分發

jopen 11年前發布 | 101K 次閱讀 Web服務器 Nginx

現有項目中使用到了nginx進行負載均衡和接口的定向分發。

客戶端對服務端接口的訪問是restful風格的url,例如

http://biz.abc.com:27788/interface/A1000/

http://biz.abc.com:27788/interface/A2000/


系統接口按類別分為核心業務接口和查詢業務接口,在部署上按接口規模和類別,分布在不同的應用集群中。

在前端,部署了nginx服務器進行接口的負載均衡和定向分發。

使用nginx進行負載均衡和接口定向分發


nginx配置示例如下:


worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include loadbalancing.conf;

    server {
        listen       8808;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

loadbalancing.conf配置如下:

#負載均衡配置

map $zone $loadbalancing 
{
    A1000  server_main_func_a; 
    A2000  server_main_func_b;
    A3000  server_main_query_a;
    A4000  server_main_query_b;
    default default_server;
}

#主服務器組a
upstream server_main_func_a
{  
     server 192.168.100.1:7788;
     server 192.168.100.2:7788;
     server 192.168.100.3:7788;
}  

#主服務器組b
upstream server_main_func_b
{  
     server 192.168.100.51:7788;
     server 192.168.100.52:7788;
     server 192.168.100.53:7788;
}  

#查詢服務器組a
upstream server_main_query_a
{

    server 192.168.100.101:7788;
    server 192.168.100.102:7788;
    server 192.168.100.103:7788;
} 

#查詢服務器組b
upstream server_main_query_b
{
    server 192.168.100.151:7788;
    server 192.168.100.152:7788;
    server 192.168.100.153:7788;
} 

#缺省服務器組
upstream default_server
{
    server 192.168.100.201:7788;
    server 192.168.100.202:7788;
    server 192.168.100.203:7788;
} 

server
{
    listen       27788;
    server_name  biz.abc.com;

    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    #帶命令字地址訪問
    location ~ /interface/
    {  
            proxy_pass_header Server;  
            proxy_set_header Host $http_host;  
            proxy_redirect off;  
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Scheme $scheme;

        if ( $request_uri ~ ^/interface/(\w*) ) {  
                set $zone $1;  
                proxy_pass http://$loadbalancing;  
            }             
        } 

    location = /interface
    {  
            proxy_pass_header Server;  
            proxy_set_header Host $http_host;  
            proxy_redirect off;  
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Scheme $scheme;

            set $zone $request_uri;  
            proxy_pass http://$loadbalancing;           
        } 
}


將不同的接口定向到不同的集群,實現接口的定向分發。

對于不同類別的接口,應用層面都有一個集群來處理,實現負載。

-----------------

當系統某些應用功能更新時,不會影響用戶的其他功能的使用。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!