当前位置: 首页 > news >正文

Linux安装云原生网关Kong/KongA

目录

  • 1 概述
  • 2 创建服务器
  • 3 安装postgres
  • 4 安装kong
  • 5 安装node
  • 6 安装KONGA

1 概述

Kong

Kong是一款基于OpenResty(Nginx+Lua模块)编写的高可用、易扩展的开源API网关,专为云原生和云混合架构而建,并针对微服务和分布式架构进行了特别的优化。Kong网关在世界范围内广受欢迎。它建立在超轻量级代理之上,为海量微服务应用程序提供性能保障和可伸缩性扩展。用户使用Kong网关可以轻松地对流量进行精细化管理和控制。

部署方式

根据底层元数据存储方式的不同,Kong网关可分为三种部署方式,本文使用PostgreSQL数据库模式部署

  • 无数据库部署模式
  • 数据库部署模式,支持PostgreSQL和Cassandra
  • 混合部署模式

提示:本文所涉及安装包已同步上传至CSDN文库,传送地址:kong&konga完整安装包

2 创建服务器

创建服务器

本文选用华为云竞价计费实例,仅用于测试使用,成本低,其它云厂商亦有同类产品。

image-20230226155010500

设置安全组

为保证云服务器安全,建议22ssh登录端口权限仅限自身访问

  • 查询外网IP
curl cip.cc
  • 设置安全组

image-20230226160019960

3 安装postgres

下载postgres

提示:本文所涉及安装包已同步上传至CSDN文库,传送地址:kong&konga完整安装包

mkdir ~/postgres && cd ~/postgres
wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz --no-check-certificate

安装依赖

yum install -y gcc zlib-devel readline-devel readline gcc-c++ make automake

编译安装

# 解压
tar -zxvf postgresql-12.2.tar.gz# 检查当前环境能否安装pgsql
cd postgresql-12.2
./configure# 编译安装
make && make install# 创建postgres用户,用于管理pqsql
adduser postgres# 初始化数据库
su postgres
/usr/local/pgsql/bin/initdb -D /home/postgres/data# 启动数据库,并将报错日志存入logfile文件内
/usr/local/pgsql/bin/pg_ctl -D /home/postgres/data -l /home/postgres/logfile start

修改配置文件,开放远程连接

cd /home/postgres/data
vi postgresql.conf# 搜索localhost,放开注释,改为“*”

image-20230226161406021

配置pg_hba,用于远程访问

# 配置pg_hba,用于远程访问
vi pg_hba.conf
# 搜索IPv4,加入以下规则(本地连接无需密码,远程连接需要输入密码)
host    all             all             0.0.0.0/0               md5

重启

/usr/local/pgsql/bin/pg_ctl -D /home/postgres/data -l /home/postgres/logfile restart

创建kong用户

# 连接pgsql
/usr/local/pgsql/bin/psql# 创建用户、数据库,注意单引号、分号
create user kong with password '123456';
create database kong owner kong;

测试

/usr/local/pgsql/bin/psql --host 127.0.0.1 --port 5432 --dbname=kong --username=kong

4 安装kong

下载(切回到root用户)

提示:本文所涉及安装包已同步上传至CSDN文库,传送地址:kong&konga完整安装包

# 下载地址 https://download.konghq.com/gateway-3.x-centos-7/Packages/k/
mkdir ~/kong && cd ~/kong
wget https://download.konghq.com/gateway-3.x-centos-7/Packages/k/kong-3.1.1.el7.amd64.rpm

安装

rpm -ivh kong-3.1.1.el7.amd64.rpm

配置

cp /etc/kong/kong.conf.default /etc/kong/kong.conf# 修改pg连接配置
vi /etc/kong/kong.conf

image-20230226162121256

初始化数据库

kong migrations bootstrap -c /etc/kong/kong.conf

启动

kong start -c /etc/kong/kong.conf

检查是否启动

curl -i http://localhost:8001

5 安装node

下载

提示:本文所涉及安装包已同步上传至CSDN文库,传送地址:kong&konga完整安装包

mkdir ~/node && cd ~/node
wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz

解压

# 解压
tar -xvf node-v14.15.4-linux-x64.tar.xz# 移动
mv node-v14.15.4-linux-x64 /usr/local/node

添加环境变量

ln -s /usr/local/node/bin/node /usr/local/bin/
ln -s /usr/local/node/bin/npm /usr/local/bin/

测试

node -v
npm -v

6 安装KONGA

下载

提示:本文所涉及安装包已同步上传至CSDN文库,传送地址:kong&konga完整安装包

# 官方地址: https://github.com/pantsel/konga
mkdir ~/konga && cd ~/konga
wget https://github.com/pantsel/konga/archive/refs/tags/0.14.9.tar.gz

安装并配置git(编译需要)

yum install -y git
git config --global http.sslVerify false
git config --global url."https://".insteadOf git://

解压+编译

# 解压
tar -zxvf 0.14.9.tar.gz# 编译
cd konga-0.14.9/
rm package-lock.jsonnpm install --unsafe-perm=true --allow-root

不出意外还是会编译失败

这个是科学上网的问题,本文通过在其它机器编译好打包,然后scp过来安装,安装包【konga-0.14.9-install.tgz】已上传到文库,传送地址:kong&konga完整安装包

image-20230226163814739

解压已编译好的安装包

mv konga-0.14.9-install.tgz ~/konga 
cd konga
tar -zxvf konga-0.14.9-install.tgz

后台启动

nohup npm start >log.txt 2>&1 &# 查询端口是否启动
lsof -i:1337

控制台安全组放开1337端口,浏览器访问:

image-20230226165442997

相关文章:

Linux安装云原生网关Kong/KongA

目录1 概述2 创建服务器3 安装postgres4 安装kong5 安装node6 安装KONGA1 概述 Kong Kong是一款基于OpenResty(NginxLua模块)编写的高可用、易扩展的开源API网关,专为云原生和云混合架构而建,并针对微服务和分布式架构进行了特别…...

Vue学习笔记(2)

2.1 事件处理 2.1.1 事件监听器 JavaScript:通过获取DOM对象再往DOM对象上使用addEventListener注册监听事件 const btn document.querySelector(#my-button) btn.addEventListener(click, function() {alert(点击事件!) })jQuery:通过$选择器绑定对象…...

2023年三月份图形化四级打卡试题

活动时间 从2023年3月1日至3月21日,每天一道编程题。 本次打卡的规则如下: 小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 小朋友做完题目后,截图到朋友圈打卡并把打卡的截图发到活动群…...

Python操作Excel

Python中对Excel文件的操作包括:读、写、修改。如果要对其进行如上的操作需要导入Python的第三方模块:xlrd、xlwd、xlutils,其分别对应Python的读、写、修改的操作 一、安装Python的第三方模块 二、操作Excel的基本步骤 1、导入响对应的模…...

Codeforces Round #853 (Div. 2) C. Serval and Toxel‘s Arrays【统计次数,算贡献】

链接 传送门 分析 这道题想法其实很简单,样例的计算方法一定要看懂。以样例1为例,根据他的操作方法可以得到两个新的数组,和一个原来的数组,总共三个数组。 1 2 3 4 2 3 4 5 3 他们两两配对去重,求出总的value。由于每…...

微信小程序-1:比较两数的大小

程序来源》微信小程序开发教程&#xff08;第二章&#xff09; 主编&#xff1a;黄寿孟、易芳、陶延涛 ISBN&#xff1a; 9787566720788 程序运行结果&#xff1a; <!--index.wxml--> <view class"container"> <text>第一个数字&#xff1a;&…...

数据结构——树

深度优先/广度优先遍历深度优先&#xff1a;访问根节点对根节点的 children 挨个进行深度优先遍历const tree {val: "a",children: [{val: "b",children: [{val: "d",children: [],},{val: "e",children: [],},],},{val: "c&quo…...

【华为OD机试模拟题】用 C++ 实现 - 找到它(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明找到它题目输入输出示例一输入输出示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD …...

python中yield的使用

在 Python 中&#xff0c;yield 是一个关键字&#xff0c;它用于定义生成器函数。生成器函数是一个特殊的函数&#xff0c;可以返回一个迭代器&#xff0c;当生成器函数被调用时&#xff0c;它不会立即执行&#xff0c;而是返回一个生成器对象&#xff0c;通过迭代生成器对象可…...

GO进阶(4) 深入Go的内存管理

Go语言成为高生产力语言的原因之一自己管理内存&#xff1a;Go抛弃了C/C中的开发者管理内存的方式&#xff0c;实现了主动申请与主动释放管理&#xff0c;增加了逃逸分析和GC&#xff0c;将开发者从内存管理中释放出来&#xff0c;让开发者有更多的精力去关注软件设计&#xff…...

【C++】类与对象理解和学习(下)

放在专栏【C知识总结】&#xff0c;会持续更新&#xff0c;期待支持&#x1f339;建议先看完【C】类与对象理解和学习&#xff08;上&#xff09;【C】类与对象理解和学习&#xff08;中&#xff09;本章知识点概括Ⅰ本章知识点概括Ⅱ初始化列表前言在上一篇文章中&#xff0c;…...

【Neo4j】Spring Data Neo4j APi阅读随笔

引言 关于Spring boot整合Neo4j的官方api翻译&学习随笔 (TOC) 一、准备工作 1.注入依赖 <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId></dependency>2.配置yml文件 这里是本…...

JVM内存模型简介

1 程序计数器 程序计数器是一块较小的内存空间&#xff0c;可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令&#xff0c;分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。 ja…...

k8s如何给node添加标签

一、为什么需要标签&#xff1f; k8s集群如果由大量节点组成&#xff0c;可将节点打上对应的标签&#xff0c;然后通过标签进行筛选及查看,更好的进行资源对象的相关选择与匹配 二、怎么查看目前node上具有的标签 [rootmaster01 ~]# kubectl get node --show-labels NAME …...

【大数据Hive】Hive ddl语法使用详解

一、前言 使用过关系型数据库mysql的同学对mysql的ddl语法应该不陌生&#xff0c;使用ddl语言来创建数据库中的表、索引、视图、存储过程、触发器等&#xff0c;hive中也提供了类似ddl的语法。本篇将详细讲述hive中ddl的使用。 二、hive - ddl 整体概述 在Hive中&#xff0c;DA…...

Connext DDS录制服务 Recording Service(2)

2.4 远程管理 控制客户端(如RTI管理控制台)可以使用此接口远程控制录制服务。 注:记录服务远程管理基于第10.3节中描述的RTI远程管理平台。有关录制服务中远程管理工作的详细讨论,请参阅该手册 下面是所有支持操作的API引用。 2.4.1 启用远程管理 默认情况下,在录制服务中…...

mysql数据类型选择

数据类型选择 完整性约束 是完整性约束是为保证数据库中数据的正确性和相容性&#xff0c;对关系模型提出的某种约束条件或规则。 通常包括&#xff1a;实体完整性约束、参照完整性约束、域完整性约束、用户自定义完整性约束。 实体完整性(Entity integrity)是指主键必须非空…...

【Java】Spring Boot 配置文件

文章目录SpringBoot 配置文件1. 配置文件的作用2. 配置文件的格式3. properties配置文件说明3.1 properties基本语法3.2 读取配置文件3.3 properties缺点分析4. yml配置文件说明4.1 yml基本语法4.2 yml使用进阶4.2.1 yml配置不同的数据类型及null4.2.1 yml配置的读取4.2.2 配置…...

AtCoder Beginner Contest 290 G. Edge Elimination(思维题 枚举+贪心)

题目 T(T<100)组样例&#xff0c;每次给出一棵深度为d的k叉树&#xff0c; 其中&#xff0c;第i层深的节点个数为 保证k叉树的所有节点个数tot不超过1e18&#xff0c; 求在k叉树上构建一棵大小恰为x的连通块&#xff0c;所需要断开的最少的树边的条数(x<tot<1e18)…...

数据挖掘概述

目录1、数据挖掘概述2、数据挖掘常用库3、模型介绍3.1 分类3.2 聚类3.3 回归3.4 关联3.5 模型集成4、模型评估ROC 曲线5、模型应用1、数据挖掘概述 数据挖掘&#xff1a;寻找数据中隐含的知识并用于产生商业价值 数据挖掘产生原因&#xff1a;海量数据、维度众多、问题复杂 数…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...