使用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; } }
對于不同類別的接口,應用層面都有一個集群來處理,實現負載。
-----------------
當系統某些應用功能更新時,不會影響用戶的其他功能的使用。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!