kong 是一个api网关,类似nginx的网关,一般用于api服务的管理
kong 可以从consul中通过dns获取服务路由,可以自动实现负载均衡
kong
kong最新版没有了conteos的安装文档,现在用Ubuntu来安装kong
1 下载kong
curl -Lo kong-enterprise-edition-3.1.0.0.all.deb "https://download.konghq.com/gateway-3.x-ubuntu-$(lsb_release -sc)/pool/all/k/kong-enterprise-edition/kong-enterprise-edition_3.1.0.0_amd64.deb"
2 安装kong
sudo dpkg -i kong-enterprise-edition-3.1.0.0.all.deb
sudo apt-mark hold kong-enterprise-edition
3 新增kong.conf
kong安装完成后在/etc/kong 目录下会生成配置文件
在 kong目录下新增kong.conf
database = postgres
pg_host = 192.168.1.111.142 # 这里得配置对外ip地址 不能是127.0.0.1
pg_port = 5432 # pgsql端口
pg_timeout = 5000 # pgsql 连接超时时间
pg_user = kong # pgsql 用户名
pg_password = kong # pgsql密码
pg_database = kong # pgsql表
dns_resolver = 127.0.0.1:8600 #这个配置很重要,配置的是consul的dns端口,默认是8600 可以自己修改默认端口
admin_listen = 0.0.0.0:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384
proxy_listen = 0.0.0.0:80 reuseport backlog=16384, 0.0.0.0:443 http2 ssl reuseport backlog=16384
4 安装postgresql
pgsql 可以使用docker安装启动
docker pull postgres
docker run -d --name kong-database -p 5432:5432 -e "POSTGRES_USER=kong"
-e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong"
-e "POSTGRES_DB=kong" postgres
5 启动kong
kong migrations bootstrap up -c /etc/kong/kong.conf #初始化数据库
kong start -c /etc/kong/kong.conf
konga
konga是kong的可视化管理系统,可以通过ui操作kong的服务、路由配置等
konga 安装
1 使用docker 安装konga
docker pull pantsel/konga
docker run -d -p 1337:1337 --name konga pantsel/konga
2 下载konga汉化包
konga 管理系统是全英文的,可通过插件将konga系统语言改为中文
docker pull jsonljd/konga-lang-plugin
3 启动konga,将konga中需要汉化的资源复制到本地运行konga-lang-plugin进行汉化
docker stop b0d0f905f3f5 # 停止konga容器
docker cp b0d0f905f3f5:/app/assets ./ # 将konga中的 assets资源复制到本地
docker run --name konga-lang-plugin -v /etc/konga-lang/assets:/app/assets jsonljd/konga-lang-plugin # 启动konga-plugin 汉化konga的资源文件
docker cp ./assets b0d0f905f3f5:/app/assets # 将已汉化的konga资源文件复制到konga容器中
docker start b0d0f905f3f5 # 重启konga容器, 此时konga就已经汉化好了
# 后续启动konga的时候可以直接挂载已汉化的资源文件, 如
docker run -d -p 1337:1337 -v /etc/konga-lang/assets:/app/assets --name konga pantsel/konga
konga使用
1 konga 操作
在浏览器中输入konga的ip+1337端口就会进入konga管理后台
此时是konga初始化页面,页面还是英文,等下注册完后登陆页面开始就是中文了
注册完后可以看到,登陆页面已经变成中文的了
进入konga需要新增kong的网关地址
完整的konga页面
2 新增服务
3 给服务添加路由
只有服务是不行的,还要给服务添加路由,不然无法匹配连接
点击新增的服务,进入router配置新增路由
调用接口
可以看到请求地址是两个blog,第一个blog是kong路由的路由入口,第二个blog是后端服务器的blog路由入口
网页没有css js 等一系列文件,这是因为该后端服务器是mvc的服务,kong没有配置静态文件代理,所以才会出现这样的情况
konga负载均衡配置
1 新增负载均衡管理
2 进入新创建的负载均衡detail 中 添加服务配置
3 添加服务或将已有的服务改为负载均衡的名称
4 路由配置
查看效果:
在浏览器上访问两次接口,可以看到,每一个服务都被访问了一次,实现了负载均衡效果
接入consul
api服务器接入consul教程:服务接入consul
新增consul服务器后,给服务添加路由,路由添加同上
服务添加完成后, 当请求进来的时候,kong会判断是否是consul服务,如果是consul服务的话会自动从consul中获取api服务器的ip+端口然后进行服务调用,consul的服务自动实现负载均衡功能,kong从consul中获取到服务对应的ip后会ip中选一个调用,一个consul服务器可以有多个api