什么是kong ?如何使用doker搭建kong

Kong 是一个功能强大的开源 API 网关和微服务管理平台,广泛应用于现代分布式系统和微服务架构中。作为 API 网关,Kong 充当客户端请求和后端服务之间的中介,帮助管理、保护、监控和优化 API 请求。以下将详细讲解 Kong 的核心架构、功能特性、常见使用场景以及配置方式。

1. Kong 的架构

Kong 是基于 NginxOpenResty(一个基于 Nginx 和 Lua 扩展的高性能 Web 平台)构建的,能够高效处理大量并发请求。其架构主要包含两个核心组件:

  • Kong Gateway:负责拦截和处理来自客户端的请求。通过配置策略和插件,Kong Gateway 可以执行认证、速率限制、负载均衡等操作。
  • Kong Control Plane(控制平面):主要用于配置管理,通过接口将配置信息传递给网关。这些配置信息存储在支持的数据库中(例如 PostgreSQL 或 Cassandra)。

2. Kong 的主要特性

Kong 具有丰富的功能特性,能够满足大规模分布式系统的 API 管理需求。以下是 Kong 的主要功能模块:

2.1 负载均衡

Kong 能够将 API 请求分发到多个后端服务实例,通过负载均衡算法(如轮询、加权轮询等)提高系统的高可用性和可扩展性。即使在某些实例不可用时,Kong 也会自动将流量引导到其他可用的实例,保证服务的稳定性。

2.2 认证和授权

Kong 支持多种认证方式,包括 OAuth2JWT(JSON Web Tokens)Basic AuthKey Auth 等,开发者可以选择适合的认证机制保护 API 资源。借助 Kong,企业可以统一管理 API 访问权限,从而提高系统的安全性和易管理性。

2.3 流量控制(速率限制和限流)

流量控制是 API 网关的重要功能之一,Kong 支持对 API 请求进行限流设置,例如设置每秒、每分钟、每小时的请求次数上限。通过速率限制,Kong 可以有效防止 API 滥用以及保护后端服务免受突发流量的影响。

2.4 日志记录和监控

Kong 提供多种日志记录方式,包括将日志发送到 Syslog文件HTTP 服务第三方日志管理平台(如 ELK、Splunk)。此外,Kong 还可以与 PrometheusGrafana 等监控工具集成,实现实时监控和可视化分析。

2.5 服务发现和动态路由

Kong 支持与 ConsulKubernetes 等服务发现工具集成,能够自动感知新服务的注册或下线,实现动态路由。动态路由帮助开发者将请求准确地路由到后端服务,无需手动修改网关配置。

2.6 插件扩展机制

Kong 的插件架构使其具有极高的灵活性,开发者可以通过 Lua 编写自定义插件或使用已有的插件来实现更多的功能。例如,Kong 的插件可以用于请求和响应的修改、数据缓存、添加自定义安全策略等。

3. Kong 的常见使用场景

3.1 API 管理和保护

在大型分布式系统中,各微服务通常会暴露多个 API 接口。Kong 可以作为这些接口的入口,通过认证、授权、加密等手段对 API 进行统一管理和保护。例如,在开放平台或第三方集成场景中,Kong 可以帮助企业控制访问权限,保护敏感数据。

3.2 流量调控与负载均衡

在电商或游戏等高并发场景下,应用往往面临突发流量的挑战。Kong 可以在此类场景中进行限流和负载均衡,有效调控流量,防止后端服务过载,并且在某些服务节点出现故障时,自动将流量分发到其他可用节点,确保服务的稳定运行。

3.3 微服务架构的服务治理

Kong 可用于微服务架构中的服务治理。通过集成 Consul 或 Kubernetes 等服务发现工具,Kong 能自动更新后端服务列表,实现微服务的自动扩展和缩容。此外,Kong 还能为不同的微服务提供不同的访问策略,提高服务的可管理性。

4. Kong 的配置与使用

要使用 Kong,首先需要进行安装。Kong 提供了多种安装方式,如通过 Docker、Kubernetes、源代码编译等。下面以 Docker 为例,简要说明 Kong 的安装和配置

4.1 安装 Kong(Docker 方式)

在终端中运行以下命令:

docker pull kong   
# 创建网络           
docker network create kong-net

启用 postgres数据库最好9.6以下

# 启动数据库
docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong"  -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" postgres:9.6

#kong-database 是数据库创建的名字
#5432是使用5432端口
#POSTGRES_USER 是数据库用户名
#POSTGRES_DB  数据库密码
#postgres:9.6 是数据库版本号

让后初始化数据库




# 启动 Kong 并连接数据库
docker run --rm --network=kong-net  -e "KONG_LOG_LEVEL=debug" -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database"  -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  kong:latest kong migrations bootstrap

#KONG_LOG_LEVEL 日志级别
#KONG_DATABASE   数据库名 
#KONG_PG_HOST   表名
#KONG_PG_PASSWORD  密码
#KONG_CASSANDRA_CONTACT_POINTS 联络点数据库名就对啦
#kong:3.0 下载kong的3.0
# kong migrations bootstrap kong进行迁移

启用kong

docker run -d --name kong --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database"     -e "KONG_PG_PORT=5432" -e "KONG_PG_PASSWORD=kong"    -e "KONG_PG_DATABASE=kong"     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  -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"  -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444"  -p 8000:8000   -p 8443:8443    -p 8001:8001     -p 8444:8444     kong:latest
 
8000:对应的http请求代理端口
8001:  http接口的管理端口
8443:  对应的https请求的代理端口
8444:  https接口的管理端口

验证一下是否成功

http://localhost:8001

 安装Konga可视化

#拉去konga UI
docker pull pantsel/konga
 
docker run  -d -p 1337:1337 --network kong-net --name konga -e "DB_ADAPTER=postgres" -e "DB_URI=postgresql://kong:kong@kong-database/kong" pantsel/konga

konga默认端口是1337启动成功之后,输入http://{你的IP}:1337/,检查konga是否安装成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值