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