赞
踩
Kong是一个云原生,快速,可扩展的分布式微服务抽象层(也被称为API网关或API中间件),
它的核心价值是高性能和可扩展性,于2015年作为一个开源项目提供;Kong可以充当微服务请求的网关(或辅助工具),同时通过插件提供负载均衡,日志记录,身份验证,速率限制,转换等功能,从而为您提供帮助。
Kong的主要特征:
• Cloud-Native:与平台无关,kong可以从裸机运行到Kubernetes
• 动态负载均衡:在多个上游服务之间平衡流量
• 基于哈希的负载均衡:具有一致的哈希/粘性回话的负载均衡
• 断路器:智能跟踪不健康的上游服务
• 运行状况检查:主动和被动监视上游服务
• 服务发现:在Consul等第三方DNS解析器中解析SRV记录
• 无服务器:直接从Kong调用和保护AWS Ladbda或OpenWhisk记录
• WebSockets:通过WebSockets与您的上游服务器进行通信
• gRPC:与gRPC服务进行通信,并通过日志记录和可观察性插件观察流量
• OAuth2.0:轻松将OAuth2.0身份验证添加到您的API中
• 记录:通过HTTP,TCP,UDP或磁盘记录对系统的请求和响应
• 安全性:ACL,僵尸程序检测,白名单/黑名单IP等
• Syslog:登录到系统日志
• SSL:为基础服务或API设置特定的SSL证书
• 监视:实时监视提供关键的负载和性能服务器指标
• 转发代理:使Kong连接到透明的中介HTTP代理
• 认证:HMAC,JWT,Basic等
• 速率限制:基于许多变量的阻止和限制请求
• 转换:添加,删除或处理HTTP请求和响应
• 缓存:在代理层缓存并提供响应
• CLI:从命令行控制Kong集群
• REST API:Kong可以使用其RESTful API进行操作,以实现最大的灵活性
• 地理复制:跨不同区域的配置始终是最新的
• 故障检测和恢复:如果您的Cassandra节点之一发生故障,则Kong不会受到影响
• 集群:所有Kong节点自动加入集群,并在各个节点之间更新其配置
• 可伸缩性:Kong本质上是分布的,只需要添加节点即可水平扩展
• 性能:Kong通过扩展和使用Nginx作为核心轻松处理负载
• 插件:可扩展的体系结构,用于向Kong和API添加功能
OS版本:CentOS 7.6 (192.168.171.5)
• PostgreSQL版本:11
• Kong版本
注意:PostgreSQL数据库的版本必须要大于9.6的版本,不然安装Kong会报数据库不兼容错误
PostgreSQL软件包官网下载地址
- yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- yum install postgresql11
- yum install postgresql11-server
- /usr/pgsql-11/bin/postgresql-11-setup initdb
- systemctl enable postgresql-11
- systemctl start postgresql-11
- ss -tunlp | grep 5432
- su - postgres
- psql
- CREATE USER kong;
- CREATE DATABASE kong OWNER kong;
- alter user kong with encrypted password '123456';
- \q
修改PostgreSQL数据库的/var/lib/pgsql/11/data/postgresql.conf配置文件中监听地址为本机所有地址
- vi /var/lib/pgsql/11/data/postgresql.conf
-
- listen_addresses = '*'
修改PostgreSQL数据库的/var/lib/pgsql/11/data/pg_hba.conf配置文件,添加如下内容
- vi /var/lib/pgsql/11/data/pg_hba.conf
-
- host all all 0.0.0.0/0 md5
- systemctl restart postgresql-11
- ss -tunlp | grep 5432
- sudo yum remove postgresql postgresql-server postgresql-contrib
-
删除 PostgreSQL 配置文件和数据
- sudo rm -rf /etc/postgresql
-
- sudo rm -rf /var/lib/postgresql
docker network create kong-net
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=192.168.171.5" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=123456" -e "KONG_CASSANDRA_CONTACT_POINTS=kong" kong:latest kong migrations bootstrap
docker run -d --name kong --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=192.168.171.5" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=123456" -e "KONG_CASSANDRA_CONTACT_POINTS=kong" -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" -e "KONG_PROXY_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 kong:latest
通过页面:http://192.168.171.5:8001/ 则看到kong部署成功。
-
- docker run -p 1337:1337 --network kong-net -e "TOKEN_SECRET=mark666" -e "DB_ADAPTER=postgres" -e "DB_HOST=192.168.171.5" -e "DB_PORT=5432:5432" -e "DB_USER=kong" -e "DB_PASSWORD=123456" -e "DB_DATABASE=kong" --name konga pantsel/konga
通过命令
docker ps
如果出现如下则部署成功
docker ps -a
docker run containId
调用 Kong Admin API /services
,创建名字为 MFW
的 service 。host 参数,用于设置对应的 upstream 的名字。
curl -X POST http://127.0.0.1:8001/services --data "name=MFW" --data "host=192.168.171.5" --data "path=/MFW"
在页面中可以看到
其中port是后来改的
调用 Kong Admin API services/${service}/routes
,创建一个请求路径为 path
的 route 。注意, {service}
路径参数,为 service 的名字。
curl -X POST http://localhost:8001/services/MFW/routes --data "name=MFW-route" --data "paths[]=/abc"
测试:http://192.168.171.5:8000/abc
参考:Kong部署与使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。