一、优势:

提供统一的 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限流





(.net core)Kong网关的使用的更多相关文章

  1. API网关之Kong网关简介

    1. Kong简介 那么,Kong是一个什么东东呢?它是一个开源的API网关,或者你可以认为它是一个针对API的一个管理工具.你可以在那些上游service之上,额外去实现一些功能.Kong是开源的, ...

  2. Ocelot - .Net Core开源网关

    Ocelot - .Net Core开源网关 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10857688.html 源码地 ...

  3. Ocelot(一)- .Net Core开源网关

    Ocelot - .Net Core开源网关 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10857688.html 源码地 ...

  4. 使用KONG网关实现接口迁移的灰度验证

    在我们对一个API站点进行微服务化的过程中,使用KONG网关可以实现以下几个效果: 1. 业务线无感知,其实内部已经被Kong转到其他站点上执行了,这对业务线特别友好. 2. 可以实现租户级/接口级灰 ...

  5. kong网关: service+route+upstream

    对于刚开始学习kong网关,总是一脑子浆糊迷迷糊糊.虽然已经安装好,但却不知道接下来如何下手, 因为包含项太多:service.routes.upstream.consumer.plugins等等.一 ...

  6. kong网关命令(一)

    上次在虚拟机里安装kong网关后,因为版本(1.4)太高,目前Kong Dashboard无法支持, 后续发现Git上有个开源工具Kong admin ui,下载源码并部署到NGINX. 但是发现使用 ...

  7. MacOs下安装Kong网关

    写在前面: 持续记录一下自己在解决api网关kong上的各种问题. 1.关于Kong网关 这是官网地址:https://konghq.com/ 2.通过brew安装postgres 因为kong的数据 ...

  8. 在K3s上使用Kong网关插件,开启K3s的无限可能!

    我的工作中很重要的一部分是参加各种各样的技术会议.最近参加的是去年11月的北美KubeCon,在会议的最后一天,所有人都焦头烂额,我也一直机械地向不同的人重复我的自我介绍.后来,我已经十分烦躁,决定逃 ...

  9. Kong网关安装之Docker版(2)

    1.安装kong管理工具:konga或者kong-dashboard,这里选择konga 拉取konga镜像: sudo docker pull pantsel/konga:0.14.4 初始化kon ...

  10. Kong网关安装之Docker版(1)

    前言: Kong 是天生的微服务网关.她的官方简介是:Kong 是一个云原生,高效,可扩展的分布式 API 网关. 自 2015 年在 github 开源后,广泛受到关注,目前已收获 1.9w+ 的 ...

随机推荐

  1. node.js 安装过程(绿色免安装版)

    20220908_node.js 安装过程(绿色免安装版) 1.下载 下载一个长期支持(LTS)版本:https://nodejs.org/en/download/ 我选择绿色免安装版 2.解压 将下 ...

  2. 【Azure Bot Service】部署Python ChatBot代码到App Service中

    问题描述 使用Python编写了ChatBot,在部署到App Service,却无法启动. 通过高级工具(Kudu站点:https://<your site name>.scm.chin ...

  3. AI绘画漫谈——从AI网页生成说起

    1. 又说"前端已死" 为什么说"又"呢?因为前两年我在一些博客网站三天两头就能看到这个标题,虽然今年好像换话题了,但感觉前端每年都要死个七八次,当然这里面还是 ...

  4. k8s之容器运行时

    Kubernetes 中的容器运行时 容器运行时(Container Runtime)是 Kubernetes 最重要的组件之一,负责真正管理镜像和容器的生命周期.Kubelet 通过 Contain ...

  5. clone:克隆数据,可深度克隆

    这里列出了原始类型,时间.正则.错误.数组.对象的克隆规则,其他的可自行补充 function clone(value, deep){ if(isPrimitive(value)){ return v ...

  6. C# 请求 form-data格式的 接口 POSTMAN form-data

    HttpClient _httpClient = new HttpClient(); var postContent = new MultipartFormDataContent(); string ...

  7. docker实现redis集群

    1.主从模式(Master-Slave) 1.1主从复制原理 主从复制是redis的一种基本的集群方式,它通过将一个Redis节点(主节点)的数据复制到一个或多个其他Redis节点来实现数据的冗余和备 ...

  8. 关于template标签用法总结(含vue中的用法总结)

    一.html5中的template标签html中的template标签中的内容在页面中不会显示.但是在后台查看页面DOM结构存在template标签.这是因为template标签天生不可见,它设置了d ...

  9. 子/次模 (Submodular)、超模 (Supermodular)和模(Modular)函数

    定义 子模 (Submodular).超模 (Supermodular)和模(Modular)函数是组合优化中用到的集合函数概念.函数定义域为某个有限集$\Omega$的幂集$2^\Omega$,值域 ...

  10. 使用 ASM 实现 Java 语言的“多重继承”

    问题的提出 在大部分情况下,需要多重继承往往意味着糟糕的设计.但在处理一些遗留项目的时候,多重继承可能是我们能做出的选择中代价最小的.由于 Java 语言本身不支持多重继承,这常常会给我们带来麻烦,最 ...