个人理解,仅供参考:
首先,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.6
restart: always #每次总是启动
networks:
- kong-net
environment:
POSTGRES_USER: kong
POSTGRES_DB: kong
POSTGRES_PASSWORD: kong
ports:
- "5432:5432"
#######################
# 执行数据库迁移
######################
kong-migration:
image: kong:latest
command: "kong migrations bootstrap"
networks:
- kong-net
restart: on-failure
environment:
- KONG_DATABASE=postgres
- KONG_PG_DATABASE=kong
- KONG_PG_PASSWORD=kong
- KONG_PG_HOST=kong-database
links:
- kong-database #连接的是kong-database服务的
depends_on:
- kong-database #依赖于kong-database服务
#####################
# kong gateway
#####################
kong:
image: kong:latest
restart: always
networks:
- kong-net
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: kong-database
KONG_PG_PASSWORD: kong
KONG_PROXY_LISTEN: 0.0.0.0:8000
KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443
KONG_ADMIN_LISTEN: 0.0.0.0:8001
depends_on:
- kong-migration
links:
- kong-database
healthcheck:
test: ["CMD", "curl", "-f", "http://kong:8001"]
interval: 5s
timeout: 2s
retries: 15
ports:
- "8001:8001"
- "8000:8000"
- "8443:8443"
#######################
#以下两个是konga GUI
#######################
konga-prepare:
image: pantsel/konga:latest
command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga" #注意是用户名:密码@数据库服务名称:端口
networks:
- kong-net
restart: on-failure
links:
- kong-database
depends_on:
- kong #依赖kong服务
- kong-database #依赖kong-database服务
konga:
image: pantsel/konga:latest
restart: always
networks:
- kong-net
environment:
DB_ADAPTER: postgres
DB_HOST: kong-database
DB_USER: kong
DB_DATABASE: konga
DB_PASSWORD: kong #必须加上密码,不然会失败
depends_on:
- kong
- kong-database
ports:
- "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负载均衡的例子,如下:
对比一下,嗯,感觉也就那么回事。。。