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