个人理解,仅供参考:
首先,kong+konga除去其他高级功能,个人觉得就是把nginx,变成可以页面配置的了。比如,配置的router,service就是反向代理,配置upstream就是负载均衡。
本文只介绍KONGA配置service,router,upstream。
使用docker-compose安装:
docker-compose.yml
[root@ecs-f841-0003 kong]# cat docker-compose.yml
version: '3'
services: kong-database:image: postgres:9.6restart: always #每次总是启动networks: - kong-netenvironment:POSTGRES_USER: kongPOSTGRES_DB: kongPOSTGRES_PASSWORD: kongports:- "5432:5432"
#######################
# 执行数据库迁移
######################kong-migration:image: kong:latestcommand: "kong migrations bootstrap"networks: - kong-netrestart: on-failureenvironment:- KONG_DATABASE=postgres- KONG_PG_DATABASE=kong- KONG_PG_PASSWORD=kong- KONG_PG_HOST=kong-databaselinks: - kong-database #连接的是kong-database服务的depends_on:- kong-database #依赖于kong-database服务#####################
# kong gateway
#####################kong:image: kong:latestrestart: alwaysnetworks:- kong-netenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_PASSWORD: kongKONG_PROXY_LISTEN: 0.0.0.0:8000KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443KONG_ADMIN_LISTEN: 0.0.0.0:8001depends_on:- kong-migrationlinks: - kong-databasehealthcheck:test: ["CMD", "curl", "-f", "http://kong:8001"]interval: 5stimeout: 2sretries: 15ports:- "8001:8001"- "8000:8000"- "8443:8443"
#######################
#以下两个是konga GUI
#######################konga-prepare:image: pantsel/konga:latestcommand: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga" #注意是用户名:密码@数据库服务名称:端口networks:- kong-netrestart: on-failurelinks:- kong-databasedepends_on:- kong #依赖kong服务- kong-database #依赖kong-database服务konga:image: pantsel/konga:latestrestart: alwaysnetworks:- kong-netenvironment:DB_ADAPTER: postgresDB_HOST: kong-databaseDB_USER: kongDB_DATABASE: kongaDB_PASSWORD: kong #必须加上密码,不然会失败depends_on:- kong- kong-databaseports:- "1337:1337"
networks:kong-net:driver: bridge
执行:docker-compose up -d
查看执行结果:docker-compose ps
docker ps
启动服务:
启动俩个节点8801和8901服务,用来测试,启动脚本start.sh内容如下:
#!/bin/bash
kill -9 $(sudo netstat -tlnp | grep 8801 |awk '{print $7}'|awk -F '/' '{print $1}')
nohup java -server -Xmx1200m -Xms600m -jar hsa-pss-pw-local-svc-generic.jar --server.port=8801 --spring.config.location=hsa-pss-pw-local-generic.yml > app.log 2>&1 &
kill -9 $(sudo netstat -tlnp | grep 8901 |awk '{print $7}'|awk -F '/' '{print $1}')
nohup java -server -Xmx1200m -Xms600m -jar hsa-pss-pw-local-svc-generic.jar --server.port=8901 --spring.config.location=hsa-pss-pw-local-generic.yml > app22.log 2>&1 &
访问地址为:
http://172.16.6.146:8801/hsa-pss-pw/swagger-ui.html
http://172.16.6.146:8901/hsa-pss-pw/swagger-ui.html
访问konga:
http://172.16.6.146:1337/
使用账号密码登录:
(这里一顿操作猛如虎,也不知道自己干了啥,好像是注册来的。。。然后第一次会让创建首个用户的账号密码)
admin/xxxxxx
输入账号密码登入
配置konga链接kong:
kong admin url:默认端口是8001
在配service之前,简单介绍下,个人理解:
1)services:配置要被转发的域名和地址(我们启动的服务)
2)routes:配置转发到的域名和地址(我们前端要访问的地址)
3)consumers:kong的用户管理,可以创建用户
4)plugins:kong的插件,可以安装等
5)cwetificates:域名的证书,https肯定有证书吧,配置在这
6)upstreams:负载均衡
配置service:
service参数说明:
配置路由:
注:这里的methods没有默认,在输入框中输入GET,POST然后回车键,再保存即可。http/https的输入框同理。(开始时候输入完一直submit报错,这设计也是醉了)
router参数说明:
配置完后,浏览器访问地址:
http://172.16.6.146:8000/hsa-local-test/api/hsa-pss-pw/swagger-ui.html
而原我们启动的其中一个服务的地址是:
http://172.16.6.146:8801/hsa-pss-pw/swagger-ui.html
nginx的反向代理。之前用nginx配置的如下,可以达到同样的效果。。。
接下来测试配置upstream:
输入个name,就保存就行,其他什么健康检查啥的,如果需要再搞。(注:名字记住,配service时候会用)
点击details,配置target:
新建两个启动的俩节点服务,配置上,并且给它set healthy。
然后,去配置service,除了host和port如下,其他跟之前的配置相同。
配置router:(就把path改了下,等下访问时候,好区分)
以上,接下来,就可以测试了
服务器打开启动的俩服务的日志,然后访问:http://172.16.6.146:8000/hsa-local-test/api/hsa-pss-pw-ups/swagger-ui.html
然后,多次访问,两个日志输出方式,是否为轮询交替。就是说负载已经配置完成。
网上随便找的一段nginx负载均衡的例子,如下:
对比一下,嗯,感觉也就那么回事。。。