1、需求背景
对于核心 api,需要保证搞可靠性,那么就要对于该 api 有多个 backend service,即实际后端对该 api 有多个服务的节点;那么最好在 api-gateway 即 kong 这一层实现负载均衡;
2、具体的方案
相关的参考链接有:http://www.cnblogs.com/SummerinShire/p/6925308.html ;https://getkong.org/docs/0.11.x/loadbalancing/ ; https://getkong.org/docs/0.11.x/admin-api/#upstream-objects
实际在操作过程中,采用的是 kong 的 Ring-balancer 做负载均衡。
添加一个 upstream,该 upstream 的名字是填写在 api 的 upstream_url 中的。
1)具体的例子,例如有一个 api
其 upstream_url 填写的是 test-upstreams,那么在 test-upstreams 的配置中,给 test-upstreams 配置了两个 target,权重都是 100
这样就完成了一个 api 的负载均衡。
2)测试的 nginx.conf
worker_processes auto; #nginx worker 数量
events {
worker_connections 1024;
use epoll;
}
pid /home/work/var/kong-test/nginx.pid;
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$request_time';
access_log logs/access.log main;
error_log logs/error.log notice;
keepalive_timeout 65;
server {
listen 8999;
server_name 999;
default_type application/json;
root /home/work/app/nginx-upstream/;
location / {
return 999;
}
}
server {
listen 8988;
server_name 998;
default_type application/json;
root /home/work/app/nginx-upstream/;
location / {
return 998;
}
}
}
测试结果: