Kong网关配置负载均衡

October 27, 2020

这篇文章主要介绍了如何配置Kong网关进行负载均衡。首先,文章提供了两个微服务接口用于测试。然后,通过Konga和Kong Admin API两种方式分别进行了详细的配置步骤说明。在Konga部分,包括了如何配置upstream、Service发布、Route匹配规则以及验证结果。在Kong Admin API部分,也包括了如何配置upstream、service和route。最后,文章提供了通过浏览器和命令行API进行测试的方法。

环境说明

注:由于docker network原因,宿主机127.0.0.1可能会访问不到,可直接使用外网域名+端口

# 开放两个测试的微服务接口
http://myhost1:8881
http://myhost2:8882

通过konga实现

1. 配置upstream

打开Konga左侧列表菜单中的UPSTREAMS, 点击 CREATE UPSTREAM

img

这里,只需要写一个Name,保证Service的配置可以正确匹配到我们就可以了。

img

既然是负载均衡,自然少不了后端服务,接下来配置在Upstreams进行负载均衡的终端——Targets。 找到我们刚才创建的upstream,然后点击DETALS

img

Targets to + ADD TARGET,填写测试接口信息,完成对UPSTREAM的配置

img

img

2. 配置Service发布

配置一个Service,字段Url填写我们刚刚配置的UpstreamName

img

3. 配置Route,匹配规则

img

img

提示: 在输入 hosts,paths,methods时,要按回车!!!

4. 验证结果

浏览器测试 通过Shift+F5 或 Ctrl+Shift+R,不使用缓存进行请求测试

img

命令行API 测试

$ curl -i -X GET --url http://localhost:8000 --header 'Host: test.app.com'

通过 Kong Admin API实现

route根据paths转发给相应的service根据host(upstream的name)转发给 upstream负载均衡至targets,这就是kong的负载均衡执行流程。

下面再学习一下通过Admin API如何完成负责均衡配置

1. 配置upstream

创建upstream

$ curl -X POST localhost:8001/upstreams \
--data "name=app.com"

为upstream配置target

$ curl -X POST localhost:8001/upstreams/app.com/targets \
--data "target=myhost1:8881" \
--data "weight=100"

$ curl -X POST localhost:8001/upstreams/app.com/targets \
--data "target=myhost2:8882" \
--data "weight=100"

等同于创建了如下配置:

upstream upstream.api {
    server myhost1:8881 weight=100;
    server myhost2:8882 weight=100;
}

2. 配置service

$ curl -X POST localhost:8001/services \
--data "name=my-app-service" \
--data "host=app.com"

3. 配置route(more)

$ curl -X POST localhost:8001/services/a9b8a3e9-826b-47fa-ae78-0fcf111662a1/routes \
--data "name=test-app-route" \
--data "hosts[]=test.app.com" \
--data 'strip_path=false'

或者

$ curl -X POST localhost:8001/routes \
--data "name=test-app-route" \
--data "hosts[]=test.app.com" \
--data "service.id=a9b8a3e9-826b-47fa-ae78-0fcf111662a1" \
--data 'strip_path=false'

其他网关

IARNO

服务端开发

通过图片url获取图片尺寸大小

宽带、带宽、流量、网速、内网、外网之间的区别