KONG API网关中的负载均衡

时间:2016-09-07 07:50:46

标签: load-balancing kong

我们在Kong API网关后面有多个微服务实例,我们希望平衡用户请求的负载。

Say Micro服务1在多个实例中相乘,这些实例保留在KONG API网关之后;在这种情况下,来自用户1的请求应该命中第一个实例,并且来自用户2的请求应该基于它们的可用性(负载平衡)命中相同服务的某个其他实例。 (即)我是否可以在kong中为单个API提供多个上游URL。我们不想使用nginx进行负载均衡。请告知我们如何解决它。

2 个答案:

答案 0 :(得分:2)

如果您不想要基于DNS的负载均衡,可以在Kong中使用Ring-balancer策略。有关详细信息,请参阅Kong Load Balancing Reference

# create an upstream
$ curl -X POST http://kong:8001/upstreams \
    --data "name=address.v1.service"

# add two targets to the upstream
$ curl -X POST http://kong:8001/upstreams/address.v1.service/targets \
    --data "target=192.168.34.15:80"
    --data "weight=100"
$ curl -X POST http://kong:8001/upstreams/address.v1.service/targets \
    --data "target=192.168.34.16:80"
    --data "weight=50"

# create an API targeting the Blue upstream
$ curl -X POST http://kong:8001/apis/ \
    --data "name=address-service" \
    --data "hosts=address.mydomain.com" \
    --data "upstream_url=http://address.v1.service/address"

将主机标头设置为address.mydomain.com的请求现在由Kong代理到两个定义的目标; 2/3的请求将转到http://192.168.34.15:80/address(权重= 100),而1/3将转到http://192.168.34.16:80/address(权重= 50)。

答案 1 :(得分:1)

从0.10开始,您将能够创建一个名为upstream的上游,并从中关联/删除目标。

例如,如果您有upstream_url=http://helloworld/,则可以创建helloworld上游并将目标与其关联:

curl -d "name=helloworld" 127.0.0.1:8001/upstreams
curl -d "host=some.host.com" 127.0.0.1:8001/upstreams/helloworld/targets/
curl -d "host=2.2.2.2" 127.0.0.1:8001/upstreams/helloworld/targets/