首页 > 其他分享 >Kong入门学习实践(3)路由转发

Kong入门学习实践(3)路由转发

时间:2023-06-14 20:00:11浏览次数:61  
标签:Kong sample api 转发 order 路由

最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。

本篇,我们学习快速配置一个最常见的基本功能:路由转发。

关于路由转发

路由转发是Nginx等代理软件最常见的使用场景,对于这类应用层路由转发,通常相对传输层路由转发(例如LVS)来说能够解析出更多的信息,从而做出更加灵活的路由决策。

对于Kong来说,我们需要先添加一个服务和路由信息,当一个请求到达Kong网关之后要先进行路由匹配,匹配后再将请求转发到路由匹配的服务上。

NOTE:一个服务可以配置多个路由

配置服务

配置服务和和路由由两种方式:一种是通过Kong Admin API,另一种则是通过Konga可视化操作。

这里,我们选择Konga来进行可视化的配置操作。

假设,我们已经部署了一个ASP.NET Core WebAPI项目 sample-order-api,它的地址为:172.16.16.4:5000。

首先,在Konga的Services面板中,单击ADD NEW SERVICE按钮,输入以下信息:

点击Submit后即可在Services列表看到新添加的Service:

配置路由

在Services列表点击新创建的这个sample.order-api.com进入详情页,然后点击Routes,即可看到路由列表。我们刚刚说到,一个服务可以绑定多个路由。在路由列表,点击ADD ROUTE即可添加路由。

需要注意的是,这里的Host的名字需要和后面要添加的Upstream的名字保持一致,否则无法找到上游服务器。

配置上游

点击Konga左侧菜单中的UPSTREAMS,然后再点击CREATE UPSTREAM按钮,添加上游信息:

这里只需要填写Name即可,其他均为默认参数。

然后设置ACTIVE HEALTHCHECK,暂时设置以下内容为3。

配置目标节点

上游创建完成后,在上游列表中即可看到刚刚创建的上游,点击DETAILS按钮进入详情页,然后点击Targets即可看到目标节点列表,随后点击ADD TARGET按钮进入添加目标节点界面。

填写sample-order-api项目的IP和端口号即可,相信配置过Nginx的童鞋应该都很熟悉:

验证结果

首先,在本机的Windows Hosts中将sample.order-api.com指向Kong网关的IP地址。

其次,在浏览器中进行验证:http://sample.order-api.com:8000/api/orders

这里通过Host方式指向Kong网关的代理端口8000,Kong网关帮我们做了路由转发,从sample-order-api项目中获取到了数据。

最后,如果配置了目标节点但是节点状态为Unhealthy,在测试验证时会返回以下错误信息:

它表示Kong无法从环形均衡器中获取到有效的上游服务器目标节点。

对此,你可以手动先将其设置为Healthy再做测试验证:

 当然,要解决这个问题还需要为我们的sample-order-api项目增加一个健康检查的接口用于Kong进行主动的健康检查。

using Microsoft.AspNetCore.Mvc;

namespace EDT.MSA.Ordering.API.Controllers
{
    [Route("api/Health")]
    [ApiController]
    [ApiExplorerSettings(IgnoreApi = true)]
    public class HealthController : ControllerBase
    {
        [HttpGet]
        public IActionResult Get() => Ok($"ok");
    }
}

重新部署sample-order-api之后,编辑UPSTEAM的健康检查Path为/api/health即可:

配置之后,目标节点再也不会Unhealthy了:

示例应用

本节示例应用:https://github.com/EdisonChou/EDT.EventBus.Sample,分支:feature/kong-practice-1

参考资料

闫观涛,《Kong入门与实践-基于Nginx和OpenRestry的云原生微服务网关》

风起云边,《Kong - Overview》

风一样的程序员,《45张图带你从0玩转Kong Gateway

 

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

标签:Kong,sample,api,转发,order,路由
From: https://www.cnblogs.com/edisonchou/p/edc_kong_learning_notes_chap3.html

相关文章

  • 悟空派WuKongPi全志H3(香橙派orangepi zero)折腾记录(u-boot移植)
    最近在某宝上看到一个悟空派,仔细一看这不就是香橙派orangepizero吗,不过它的USB是Type-C,于是我买了一块打算折腾一下。 拿到了首先获取一下u-boot源码,因为板子和香橙派orangepizero一样就直接用香橙派的源码了gitclonehttps://github.com/orangepi-xunlong/u-boot-orange......
  • IIS配置代理转发到Apache或其他端口监听服务
    目标:iis运行asp程序;Apache运行php,iis监听占用80端口,由iis转发代理到Apache的php应用;iis转发到其他应用,如tornado服务。iis配置代理转发及路由重写https://iis-umbraco.azurewebsites.net/downloads官网下载Urlrewrite和ApplicationrequestRouter两个exe并安装选择上面安装......
  • 路由守卫
    一、分类(1)全局守卫router.beforeEach全局前置守卫进入路由之前router.beforeResolve全局解析守卫(2.5.0+)在beforeRouteEnter调用之后调用router.afterEach全局后置钩子进入路由之后(2)路由独享守卫beforeEnter(3)路由组件内的守卫beforeRouteEnter进入......
  • Kong入门学习实践(2)实验环境搭建
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。本篇,我们学习如何快速搭建一个Kong实验环境。搭建方式目前,我们可以选择多种部署方式,包括:宿主机部署、Docker部......
  • vue路由
    1、在dos窗口下安装npminstallvue-router@3--save-dev--registry=http://registry.npmmirror.com2、配置路由①在src目录下面,新建router文件夹②然后再其中创建index.js路由文件、index.js代码importVuefrom'vue'//导入路由插件importVueRouterfrom'......
  • 路由协议EIGRP知识小结
    EIGRP(EnhancedInteriorGatewayRoutingProtocol)增强内部网关路由协议,EIGRP结合了链路状态和距离矢量型路由选择协议的Cisco专用协议,采用弥散修正算法(DUAL)来实现快速收敛,可以不发送定期的路由更新信息以减少带宽的占用,支持Appletalk、IP、IPX、Novell和NetWare等多种网络层协......
  • 案例1:路由交换无冗余线路设计1
    JR-SW1:undoterminalmonitorsystem-viewsysnameJR-SW1 user-interfacecon0 idle-timeout00 quit undoinfo-centerenable vlanbatch11to12100200 interfaceEthernet0/0/1 portlink-typeaccess portdefaultvlan11 interfaceEt......
  • Vue路由的基本概念
    Vue路由的基本概念Vue路由是一个非常重要的概念,它允许你在应用程序中创建多个页面并在这些页面之间进行导航。在Vue中,路由是通过VueRouter实现的。本文将介绍VueRouter的基本概念和用法,并对路由配置进行详细解析。基础认知/路由路由是指应用程序中的一个页面。在Vue......
  • 二、Gin路由
    二、Gin路由2.1、路由方法路由系统支持任意方式的请求,如下的的方法用来提供对应的接受请求:func(group*RouterGroup)DELETE(relativePathstring,handlers...HandlerFunc)IRoutesfunc(group*RouterGroup)GET(relativePathstring,handlers...HandlerFunc)IRoutesf......
  • vuex使用,Router的使用,多级路由
    vuex使用:vuex:状态管理器--->存数据(变量)的地方,所有组件都可以操作1.概念在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。基本使用:1.在Home......