kong 和konga网关部署及使用

news2024/10/7 8:32:06

Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

Kong主要有三个组件:
Kong Server :基于nginx的服务器,用来接收API请求。
Apache Cassandra/PostgreSQL :用来存储操作数据。
Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。
Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

1.docker 安装kong

docker pull kong:3.0

2.docker 下载postgres

docker network create kong-net    ##创建网络
docker pull postgres:9.6

注意:postgres的版本最好是9.6.x以下的。

3.启动postgres

docker run --privileged=true --name kong-database -e "POSTGRES_USER=kong" -e POSTGRES_PASSWORD=kong  --network=kong-net -p 5432:5432 -v /my/local/path:/var/lib/postgresql/data -d postgres:9.6

然后使用docker ps查看是否启动成功
4.启动Kong
4.1 准备数据库

docker run --rm --network=kong-net  -e "KONG_LOG_LEVEL=debug" -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database"  -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  kong:3.0 kong migrations bootstrap

4.2 启动kong

docker run -d --name kong --network=kong-net   -e "KONG_DATABASE=postgres"    -e "KONG_PG_HOST=kong-database"     -e "KONG_PG_PORT=5432" -e "KONG_PG_PASSWORD=kong"    -e "KONG_PG_DATABASE=kong"     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  -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"  -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444"  -p 8000:8000   -p 8443:8443    -p 8001:8001     -p 8444:8444     kong:3.0
 
8000:对应的http请求代理端口
8001:  http接口的管理端口
8443:  对应的https请求的代理端口
8444:  https接口的管理端口

然后根据docker ps命令查看kong是否启动成功。

5.验证是否成功启动

 curl -i http://localhost:8001

6.安装Konga可视化

docker pull pantsel/konga
 
docker run  -d -p 1337:1337 \
        --network kong-net \
        --name konga \
        -e "DB_ADAPTER=postgres" \
        -e "DB_URI=postgresql://kong:kong@kong-database/kong" \
        pantsel/konga

konga默认端口是1337,这里也需要对外暴露
启动成功之后,输入http://ip:1337/register,检查konga是否安装成功
在这里插入图片描述

首先注册一个账号。

  1. Kong应用
    7.1创建连接点
    在这里插入图片描述

在这里插入图片描述
默认的端口是8001当然可以在启动kong的时候自己创建映射端口。

7.2 创建Upstreams
输入name,然后提交
点击刚添加的upstream点击DETAILS添加targets,然后点击ADD TARGET输入target(ip+port)后点击SUBMIT TARGET即可,ip为本地电脑ip保证kong容器内可访问,端口为本地服务端口,这个地方可以理解为你的springboot服务的ip+端口

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.3 配置对应的services和routes
在这里插入图片描述
在这里插入图片描述
输入name、host(可以与前面Upstreams的name保持一致)
protocol(协议类型,这里是http)
port这里是8000,kong启动之后,http的代理端口是8000

service保存后,点击service name进入详情页面,然后点击Routes添加路由规则
点击ADD ROUTE输入name、paths(输入转发规则需按回车才生效),Strip Path(是否把匹配成功的paths删除后在转发后端服务器.),Preserve Host(转发后端是否带host参数,默认不带,Protocols 只保留http即可,最后点击SUBMIT ROUTE
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.测试网关是否可用
配置网关前
在这里插入图片描述

配置网关后
在这里插入图片描述
9.命令行创建upstream、target、service、route
9.1配置 upstream

curl -X POST http://localhost:8001/upstreams --data "name=helloUpstream"

9.2 配置 target

curl -X POST http://localhost:8001/upstreams/helloUpstream/targets --data "target=后端微服务ip:端口" --data "weight=100"

9.3 配置service

curl -X POST http://localhost:8001/services --data "name=hello" --data "host=helloUpstream" --data "port=8000" --data "protocol=http"

9.4 配置route

以service id作为标识
curl -X POST http://localhost:8001/routes --data "paths[]=/hello" --data "service.id=3650cc19-f314-4b87-a7e4-b07c63ad434e"
也可以后面加参数命名
curl -X POST http://localhost:8001/routes --data "paths[]=/hello" --data "service.id=3650cc19-f314-4b87-a7e4-b07c63ad434e" --data "name=dsds"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1076246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2D函数优化实战

优化目标函数如下: 该函数有四个极小值点,值都为0 先对函数进行绘图 初始化起始点,再设置优化器,进行梯度下降优化 完整代码: import torch import numpy as np import matplotlib.pyplot as plt from mpl_toolk…

Linux系统编程(2)

手动文件锁定 #include <stdio.h> void flockfile(FILE* stream);void funlockfile(FILE* stream);//非阻塞函数 int ftrylockfile(FILE* stream); 不会锁定流的操作 #define _GNU_SOURCE #include <stdio.h>int fgetc_unlocked(FILE* stream); char *fgets_unl…

C语言利用计算机找系统的最小通路集的算法

背景&#xff1a; 有人求助到博主希望分析一下他们老师给出的题目&#xff0c;博主思路分析和解题过程如下 题目要求&#xff1a; 联络矩阵法&#xff0c;当 n 较小时可以用手算,当然也可以用计算机计算。但当 n 很大时&#xff0c;需要计 算机的容量很大才行。为此要探求有…

网络机顶盒哪个好?达人分享最新网络电视机顶盒排名TOP5

看视频、网游戏、上网课等等功能网络机顶盒都能实现&#xff0c;可以说是我们使用频率最高的了&#xff0c;尤其是对老人小孩来说。我每年都会进行上百次测评&#xff0c;网络机顶盒就是其中品类之一&#xff0c;很多朋友都在私信我不知道网络机顶盒哪个好&#xff0c;跟着我一…

京东运营数据分析:2023年8月京东饮料行业品牌销售排行榜

鲸参谋监测的京东平台8月份饮料市场销售数据已出炉&#xff01; 8月份&#xff0c;饮料市场整体销售下滑。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年8月&#xff0c;京东平台饮料市场的总销量将近820万&#xff0c;环比下滑约8%&#xff0c;同比下滑约20%&am…

高精度电流源的应用领域有哪些

高精度电流源是一种能够提供稳定、准确、可控的电流输出的仪器设备&#xff0c;广泛应用于多个领域。以下是一些高精度电流源的应用领域。 科学研究&#xff1a;在物理学、化学、材料科学等领域中&#xff0c;需要进行精确的电流实验和测试。高精度电流源可以提供稳定的电流输出…

方法在template内用v-if调用,在main.js内引入并挂载全局

utils内index.js内的isAuth方法 main.js内引入isAuth&#xff0c;并全局注册 vue页面在template内用v-if调用isAuth方法

linux 给根目录扩容(lvm CentOS 7.6 kylinx86)

问题:Linux系统挂载到根目录的磁盘空间满了,如何扩容? 用命令:lsblk 可以查看磁盘和分区情况,可以发现磁盘vda下面的还有大部分空间没有使用。 操作步骤 1、使用 fdisk -l 查看硬盘序号,并用 fdisk 对硬盘操作,格式化成lvm的格式 (用命令lsblk可以看到,挂载到根目录…

算法题:K 次取反后最大化的数组和(典型的贪心算法问题)

这道题没有看题解&#xff0c;直接提交&#xff0c;成绩超越99.5%&#xff0c;说明思路是优的。就是考虑的情况里面弯弯绕比较多&#xff0c;需要考虑全面一点。&#xff08;本题完整题目附在了最后面&#xff09; 具体思路如下&#xff1a; 1、首先排序&#xff0c;然后从最…

如何在 Spring Boot 中进行文件上传

在 Spring Boot 中进行文件上传 文件上传是Web应用程序中常见的功能之一&#xff0c;它允许用户将文件从客户端上传到服务器。Spring Boot提供了便捷的方式来处理文件上传&#xff0c;并且整合了Spring框架的强大功能&#xff0c;使文件上传变得相对简单。本文将介绍如何在Spr…

深度学习DAY2:n-gram

什么是LM(language model语言模型)&#xff1f; 引例&#xff1a; 1、统计机器学习时期的语言模型–语音识别 2、贝叶斯公式求P(s|A)——在有了语音信号的前提下是文本的概率 1 n-gram模型概述 n-gram模型是一种统计语言模型&#xff0c;用于建模文本数据中的语言结构。…

释放Sqlite数据库占用的多余空间

当删除sqlite数据库中的数据之后&#xff0c;会发现内容确实删除掉了&#xff0c;但是sqlite数据库占用的磁盘大小没有缩小&#xff0c;那是因为&#xff0c;删除数据后&#xff0c;未使用的磁盘空间被添加到一个内在的“空闲列表”中用于储存你下次插入的数据&#xff0c;磁盘…

使用yum 安装mysql数据库

h这是参照msyql官方文档写的&#xff08;网上的教程五花八门&#xff0c;各有各的特色和技巧&#xff0c;不过还是以官方文档为主要参考最靠谱&#xff09; 注意 : 适用于第一次安装的情况&#xff0c;系统上已经有之前安装过的版本的话&#xff0c;官方文档同一章也有升级、替…

【广州华锐互动】AR轨道交通综合教学平台的应用

轨道交通是一种复杂且精密的系统&#xff0c;涵盖了众多技术和工程学科&#xff0c;包括机械、电气和计算机科学等。对于学生来说&#xff0c;理解和掌握这些知识是一项挑战。然而&#xff0c;AR技术的出现为解决这一问题提供了可能。 通过AR技术&#xff0c;教师可以创建生动、…

Linux ❀ 磁盘IO较大故障告警排查确认方法

文章目录 1、iotop2、iostat3、磁盘压力测试 问题描述&#xff1a;在日常运维工作中&#xff0c;经常会遇到Linux服务器出现Disk磁盘I/O&#xff08; I/O 英文全称是 Input/Output&#xff0c;中文译为 输入与输出&#xff0c;通常指存储器与其他设备之间的数据交换操作&#x…

sip网络话筒主机SIP桌面式对讲广播主机

sip网络话筒主机SIP桌面式对讲广播主机 SV-8003VP是我司的一款SIP桌面式对讲主机&#xff0c;具有10/100M以太网接口&#xff0c;配置了麦克风输入和扬声器输出&#xff0c;还配置多达22个按键和2.8英寸液晶显示屏&#xff0c;可以配合SIP服务器使用。SV-8003VP网路寻呼话筒可以…

SAP SD定价过程 含税未税 最大区别

SAP SD定价过程 含税&未税 最大区别 最大区别应该为&#xff0c;税条件类型&#xff1a; 含税一般用 MWSI 未税一般用 MWST

HarmonyOS/OpenHarmony原生应用开发-华为Serverless认证服务说明(二)

一、支持HarmonyOS(Stage模型-API9)应用的账户注册登录方式 文档中的TS作者认为就是ArkTS之意。暂时支持四种模式&#xff0c;手机、邮箱、匿名、自有账户。 二、暂时不支持HarmonyOS(Stage模型-API9)应用的账户注册登录方式 包括华为账户注册登录&#xff0c;HarmonyOS…

使用Fillder的一点总结

文章目录 最近使用Fillder的一点总结一、前言二、关于FildderScript的吐槽三、关于filters四、关于快捷方式的吐槽五、关于断点 最近使用Fillder的一点总结 纯乱搞&#xff0c;但是不得不说Fillder确实厉害 一、前言 安装请在官网下载 简单食用方法可参阅&#xff1a;https…

C#实现OPC DA转OPC UA服务器

运行软件前提前安装好OPC运行组件&#xff1a; 为方便演示&#xff0c;提前准备好了一个DAServer服务器&#xff1a; 接下来开始配置&#xff1a; 该软件主要实现的功能如下&#xff1a; 配置过程也相对简单&#xff1a; 第一步&#xff1a; 编辑如下文件&#xff1a; 第二步…