使用nginx进行负载均衡和接口定向分发

现有项目中使用到了nginx进行负载均衡和接口的定向分发。

客户端对服务端接口的访问是restful风格的url,例如

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

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


系统接口按类别分为核心业务接口和查询业务接口,在部署上按接口规模和类别,分布在不同的应用集群中。

在前端,部署了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;           
        } 
}


将不同的接口定向到不同的集群,实现接口的定向分发。

对于不同类别的接口,应用层面都有一个集群来处理,实现负载。

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

当系统某些应用功能更新时,不会影响用户的其他功能的使用。

转载于:https://my.oschina.net/kaster/blog/134495

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值