(.net core)Kong网关的使用

一、优势:
提供统一的 API 管理,简化流量控制、负载均衡、安全性控制等工作。
有可视化界面可操作,支持高度 可扩展性,可以通过插件来扩展功能。
在 微服务架构 中表现优异,支持多种协议和高并发场景。
具有 高可用性、高性能 和良好的 监控、日志记录 功能。
基于 Nginx 和 Lua 构建,能够提供低延迟的请求处理。

二、使用Docker安装,.net core webapi做测试
这里有个坑,国内很多镜像加速网址都失效了,所以我们加载镜像很可能会报错:
Unable to find image 'postgres:13' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded.
东找西找 找到了目前我的配置:

点击查看代码
"registry-mirrors": [
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://6k0ibwjk.mirror.aliyuncs.com",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]

1.docker network create kong-net
【Docker 容器默认运行在隔离的网络环境中。如果你运行多个容器(例如,Kong 网关、数据库、服务容器等),这些容器之间需要通信,而 Docker 的自定义网络可以实现以下目的:

  • 容器互通:在同一个网络中的容器可以通过容器名(而不是 IP 地址)直接访问彼此。
  • 网络隔离:只有加入相同网络的容器才能相互通信,增强了安全性。
  • 网络驱动:自定义网络支持不同的驱动类型(如 bridge、overlay 等),满足多样化需求。】

2.docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kongpass" postgres:13
【Kong 目前使用PostgreSql(也可以使用Facebook开源的分布式的NoSQL数据库:Cassandra)】

3.docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_PASSWORD=kongpass" kong:3.5.0 kong migrations bootstrap
【初始化或者迁移数据库】

4.docker run -d --name kong-gateway --network=kong-net -u root -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kongpass" -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 192.168.1.4:8001:8001 -p 192.168.1.4:8444:8444 kong:3.5.0
【启动kong容器】
如果想支持所有IP都可以访问,那就可以不加本机IP

5.浏览器调用 http://{服务器ip}:8001/ 来验证Kong Admin 是否联通 (出现大json说明安装成功了)。

6.docker run -p 1337:1337 --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kongpass" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -e "DB_DATABASE=konga" -e "KONGA_HOOK_TIMEOUT=120000" --name konga pantsel/konga:latest
【安装konga】
我这里是简单的Development环境
注意!!!这里有个坑就是,我所有的国内镜像加速器都用了但是仍然拉取失败(连接超时),后来查了查,可能是因为konga的镜像存放位置国内镜像获取不到,爬梯子才成功拉取到了......

运行完后,如果成功的话可以通过http://192.168.1.4:1337/访问控制台


这里的URL要填写http://192.168.1.4:8001/(kong admin)

Kong实现负载均衡

1.IIS发布两个webapi项目,分别是9999和9998端口(两个项目的方法路径一致)

这里我遇到过一个问题就是任务栏可以显示IIS但是界面上没有
先查看IIS管理器属性,找到其位置

管理员模式打开cmd命令行,并切换到上面的文件夹下运行Inetmgr.exe /reset

2.首先创建一个UPSTREAM

3.给我们创建的UPSTREAM创建两个Target

4.创建Service
Host对应UPSTREAM的Name

5.Route设置

  • Path Handling v0:Kong 会将路径 /activity 去除,只留下 /,因此请求会被转发到后端服务的 / 路径。
  • Path Handling v1:Kong 会保留 /activity 路径,将请求转发到后端服务的 /activity 路径。

6.实现负载均衡

Kong实现API限流


posted @   sq1201  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示