Kong入门学习实践(3)路由转发
最近在学习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,在测试验证时会返回以下错误信息:

对此,你可以手动先将其设置为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》

Kong入门学习实践(3)路由转发的更多相关文章
- SpringCloud学习之Zuul路由转发、拦截和熔断处理(七)
Spring Cloud Zuul 服务网关是微服务架构中一个不可或缺的部分.通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能. Sp ...
- 万字长文:SpringCloud gateway入门学习&实践
官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/# ...
- Nacos入门学习&实践
文中涉及到了一些模块代码没有给出,我一并上传到github了,可以整个项目clone下来进行调试. 地址:https://github.com/stronglxp/springcloud-test 1 ...
- Linux数据包路由原理、Iptables/netfilter入门学习
相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wik ...
- 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题
在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...
- 入门python:《Python编程从入门到实践》中文PDF+英文PDF+代码学习
入门python推荐学习久负盛名的python入门书籍<Python编程从入门到实践>. 书中涵盖的内容是比较精简的,没有艰深晦涩的概念,最重要的是每个小结都附带有"动手试一试& ...
- 《Python编程:从入门到实践》基础知识部分学习笔记整理
简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...
- 学习资源 Docker从入门到实践 pdf ,docker基础总结导图
学习资源 Docker从入门到实践 pdf ,docker基础总结导图 Docker从入门到实践 pdf 云盘地址:https://pan.baidu.com/s/1vYyxlW8SSFSsMuKaI ...
- 红帽学习笔记[RHCE]网络配置与路由转发
目录 网络配置基本的IPV4与IPV6 拓扑图 操作 新加一块网卡 将增加的网卡分别加到两台虚拟机上 在两台虚拟机上配置IPV4与 IPV6 配置域名访问 拓展路由转发 拓扑图 操作 关于网关设置 重 ...
- Keepalived入门学习
一个执着于技术的公众号 Keepalived简介 Keepalived 是使用C语言编写的路由热备软件,该项目软件起初是专门为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后 ...
随机推荐
- 用于线程同步的Interlocked系列函数主要有哪些
原子访问 通过Interlocked系列函数是 Windows API 提供的一组原子操作函数,用于在多线程环境中安全地操作共享变量.当我们执行这些Interlocked系列函数的时候 ,函数会对总线 ...
- 集合的通用遍历方法--java进阶day09
1.集合的三种通用遍历方法 之前我们学习过集合的遍历方法,为什么这里还要再学呢? 这是因为,之前我们用的遍历方法使用了索引,但我们知道set接口的实现类的集合均无索引,所以我们要学习通用的遍历方法 2 ...
- 头晕的android SDK Manager and 找不到真机
这张图很完美!可是出问题就头晕了. 问题场景:执行Andriod.bat出现下面界面后,然后跳出Andriod SDK的界面: android SDK Manager的界面就孤零零的几条记录挂在那里. ...
- 关于CH182LED配置的说明
CH182的LED配置有两种模式: 传统LED功能 该功能可通过页7寄存器19控制bit 3-5控制 使用时可将页7寄存器19 bit3 置0 通过bit4-5实现不同模式,默认情况下bit3为0,b ...
- 记一次 .NET某云HIS系统 CPU爆高分析
一:背景 1. 讲故事 年前有位朋友找到我,说他们的系统会偶发性的CPU爆高,有时候是爆高几十秒,有时候高达一分多钟,自己有一点分析基础,但还是没找到原因,让我帮忙看下怎么回事? 二:CPU爆高分析 ...
- App自动化环境部署
1.所需工具 Android-SDK:自行百度下载 Appium-Desktop:自行百度下载 真机或模拟器:自行准备 2.部署步骤 1)配置Android-SDK 解压Android-SDK压缩包 ...
- 如何对 Java 的垃圾回收进行调优?
如何对 Java 的垃圾回收进行调优? Java 垃圾回收的调优涉及多个方面,从选择合适的垃圾回收器到调整堆内存的大小.配置 GC 参数等,下面是一些常见的调优方法: 1. 选择合适的垃圾回收器 不同 ...
- 掌握DevEco Studio模拟器这些“隐藏功能”,让鸿蒙应用调试效率事半功倍
在鸿蒙应用开发过程中,调试环节常常直接影响开发效率与体验.为提升开发者调试的便捷性与效率,华为在DevEco Studio上提供了模拟器功能,它不仅能模拟鸿蒙手机.折叠屏.平板等真实设备的基本功能,还 ...
- 代码随想录第二十三天 | Leecode 39. 组合总和、40.组合总和II、131. 分割回文串
Leecode 39. 组合总和 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 ...
- Selenium中解决输入法导致sendKeys输入内容与预期不一致的问题
有时候由于系统输入法处于中文状态或英文状态输入内容与预期不一致的问题,我们采用文本内容拷贝的方式传递给相关元素,从而解决该问题,具体代码如下: /*** * 通过拷贝的方式输入文字内容,防止输入法中英 ...