分享吉隆坡服务器 Kong API 网关实战,从部署到插件配置的完整指南。
API 网关是微服务架构的入口。本文分享吉隆坡服务器 Kong API 网关实战。
API 网关的作用 1) 统一入口:所有 API 经过网关 2) 路由转发:按规则转发到后端服务 3) 认证鉴权:API Key、JWT、OAuth 4) 限流熔断:保护后端服务 5) 日志监控:统一日志和监控 6) 协议转换:REST 转 gRPC 等
Kong 架构 1) Kong:基于 Nginx + Lua 2) 数据库:PostgreSQL 或 Cassandra 3) 插件:丰富的插件生态 4) Admin API:RESTful 管理接口 5) Kong Manager:Web 管理界面
部署方式 1) 单机:开发测试用 2) 集群:生产用,多实例 + 负载均衡 3) 数据库:PostgreSQL 主从 4) 前置:Nginx 或云负载均衡 5) 高可用:多实例 + 健康检查
核心配置 ```bash # 创建服务 curl -i -X POST http://localhost:8001/services -d name=user-service -d url=http://user-service:8080
# 创建路由 curl -i -X POST http://localhost:8001/services/user-service/routes -d paths[]=/users -d strip_path=true ```
常用插件 1) Key Auth:API Key 认证 2) JWT:JWT Token 认证 3) OAuth2:OAuth 2.0 认证 4) Rate Limiting:限流 5) IP Restriction:IP 黑白名单 6) Request Transformer:请求转换 7) Response Transformer:响应转换 8) Prometheus:指标暴露 9) File Log:日志记录 10) CORS:跨域处理
插件配置示例 ```bash # 限流插件 curl -X POST http://localhost:8001/services/user-service/plugins -d name=rate-limiting -d config.minute=100
# JWT 插件 curl -X POST http://localhost:8001/services/user-service/plugins -d name=jwt ```
限流策略 1) 按消费者:每个用户限流 2) 按 IP:每个 IP 限流 3) 按服务:整个服务限流 4) 本地限流:单实例计数 5) 集群限流:Redis 存储,集群计数
认证鉴权 1) API Key:简单,适合内部接口 2) JWT:无状态,适合前后端分离 3) OAuth2:适合第三方接入 4) HMAC:适合服务间调用 5) 组合:多种认证方式
日志监控 1) 访问日志:记录所有请求 2) 错误日志:记录异常 3) Prometheus:暴露指标给监控 4) Kafka:日志发送到消息队列 5) 告警:错误率和延迟告警
性能优化 1) 上游 keepalive:复用连接 2) 缓存:可缓存的响应缓存 3) 压缩:Gzip 压缩 4) 减少插件:只启用必要插件 5) 水平扩展:多实例分担负载
安全防护 1) HTTPS:强制 HTTPS 2) WAF:Web 应用防火墙 3) IP 黑名单:封禁恶意 IP 4) 请求校验:参数验证 5) CORS:合理配置跨域
高可用 1) 多实例:至少 2 个 Kong 实例 2) 负载均衡:前置 LB 3) 数据库高可用:PostgreSQL 主从 4) 健康检查:自动剔除故障节点 5) 滚动升级:无停机更新
常见问题 问题一:响应慢 原因:插件太多;后端慢。 解决:减少插件;优化后端;开启缓存。
问题二:限流不准 原因:多实例本地计数。 解决:用集群限流(Redis)。
问题三:认证失败 原因:Token 配置错误。 解决:检查 JWT 密钥和过期时间。
问题四:Kong 宕机 原因:数据库故障;资源不足。 解决:数据库高可用;监控告警。
问题五:配置丢失 原因:数据库故障。 解决:定期备份数据库;配置版本管理。
总结:Kong API 网关要合理配置插件、限流、认证、监控。高可用和性能优化是生产环境的关键。