这篇文章主要介绍了如何配置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
这里,只需要写一个Name
,保证Service
的配置可以正确匹配到我们就可以了。
既然是负载均衡,自然少不了后端服务,接下来配置在Upstreams
进行负载均衡的终端——Targets
。
找到我们刚才创建的upstream,然后点击DETALS
Targets
to + ADD TARGET
,填写测试接口信息,完成对UPSTREAM
的配置
2. 配置Service发布
配置一个Service
,字段Url
填写我们刚刚配置的Upstream
的Name
3. 配置Route,匹配规则
提示: 在输入
hosts,paths,methods
时,要按回车!!!
4. 验证结果
浏览器测试
通过Shift+F5 或 Ctrl+Shift+R
,不使用缓存进行请求测试
命令行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'