首页 > 系统相关 >手把手教你在linux中部署kong网关

手把手教你在linux中部署kong网关

时间:2023-10-02 12:03:59浏览次数:31  
标签:11 网关 postgresql Kong linux kong PostgreSQL KONG


一 Kong网关介绍

Kong是一个云原生,快速,可扩展的分布式微服务抽象层(也被称为API网关或API中间件),
它的核心价值是高性能和可扩展性,于2015年作为一个开源项目提供;Kong可以充当微服务请求的网关(或辅助工具),同时通过插件提供负载均衡,日志记录,身份验证,速率限制,转换等功能,从而为您提供帮助。

Kong的主要特征:
• Cloud-Native:与平台无关,kong可以从裸机运行到Kubernetes
• 动态负载均衡:在多个上游服务之间平衡流量
• 基于哈希的负载均衡:具有一致的哈希/粘性回话的负载均衡
• 断路器:智能跟踪不健康的上游服务
• 运行状况检查:主动和被动监视上游服务
• 服务发现:在Consul等第三方DNS解析器中解析SRV记录
• 无服务器:直接从Kong调用和保护AWS Ladbda或OpenWhisk记录
• WebSockets:通过WebSockets与您的上游服务器进行通信
• gRPC:与gRPC服务进行通信,并通过日志记录和可观察性插件观察流量
• OAuth2.0:轻松将OAuth2.0身份验证添加到您的API中
• 记录:通过HTTP,TCP,UDP或磁盘记录对系统的请求和响应
• 安全性:ACL,僵尸程序检测,白名单/黑名单IP等
• Syslog:登录到系统日志
• SSL:为基础服务或API设置特定的SSL证书
• 监视:实时监视提供关键的负载和性能服务器指标
• 转发代理:使Kong连接到透明的中介HTTP代理
• 认证:HMAC,JWT,Basic等
• 速率限制:基于许多变量的阻止和限制请求
• 转换:添加,删除或处理HTTP请求和响应
• 缓存:在代理层缓存并提供响应
• CLI:从命令行控制Kong集群
• REST API:Kong可以使用其RESTful API进行操作,以实现最大的灵活性
• 地理复制:跨不同区域的配置始终是最新的
• 故障检测和恢复:如果您的Cassandra节点之一发生故障,则Kong不会受到影响
• 集群:所有Kong节点自动加入集群,并在各个节点之间更新其配置
• 可伸缩性:Kong本质上是分布的,只需要添加节点即可水平扩展
• 性能:Kong通过扩展和使用Nginx作为核心轻松处理负载
• 插件:可扩展的体系结构,用于向Kong和API添加功能

二、Kong部署

 OS版本:CentOS 7.6   (192.168.171.5)
• PostgreSQL版本:11
• Kong版本

1:安装PostgreSQL数据库

1)安装PostgreSQL数据库

注意:PostgreSQL数据库的版本必须要大于9.6的版本,不然安装Kong会报数据库不兼容错误
PostgreSQL软件包官网下载地址

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql11
yum install postgresql11-server
/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11
ss -tunlp | grep 5432

2)创建数据库与用户

su - postgres
psql
CREATE USER kong; 
CREATE DATABASE kong OWNER kong;
alter user kong with encrypted password '123456';
\q

3)修改数据库配置文件

修改PostgreSQL数据库的/var/lib/pgsql/11/data/postgresql.conf配置文件中监听地址为本机所有地址

vi /var/lib/pgsql/11/data/postgresql.conf

listen_addresses = '*'

修改PostgreSQL数据库的/var/lib/pgsql/11/data/pg_hba.conf配置文件,添加如下内容

vi /var/lib/pgsql/11/data/pg_hba.conf

host    all             all             0.0.0.0/0               md5

4 ) 重启数据库服务

systemctl restart postgresql-11
ss -tunlp | grep 5432

卸载postgresql步骤

sudo yum remove postgresql postgresql-server postgresql-contrib

删除 PostgreSQL 配置文件和数据

sudo rm -rf /etc/postgresql

sudo rm -rf /var/lib/postgresql

2:部署kong

1、创建一个Docker network

docker network create kong-net

2、准备数据库

docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=192.168.171.5" -e  "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=123456" -e "KONG_CASSANDRA_CONTACT_POINTS=kong"  kong:latest kong migrations bootstrap

3:拉取kong并运行

docker run -d --name kong --network=kong-net  -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=192.168.171.5" -e  "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=123456"  -e "KONG_CASSANDRA_CONTACT_POINTS=kong"   -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 8001:8001 -p 8444:8444  kong:latest

  通过页面:http://192.168.171.5:8001/     则看到kong部署成功。

4:安装可视化界面konga

docker run -p 1337:1337  --network kong-net      -e "TOKEN_SECRET=mark666"      -e "DB_ADAPTER=postgres"      -e "DB_HOST=192.168.171.5"     -e "DB_PORT=5432:5432"      -e "DB_USER=kong"      -e "DB_PASSWORD=123456"     -e "DB_DATABASE=kong"      --name konga    pantsel/konga

手把手教你在linux中部署kong网关_kong

通过命令

docker ps

如果出现如下则部署成功

手把手教你在linux中部署kong网关_linux_02

参考:Kong部署与使用

如何在docker中安装kong网关 - 风纳云

标签:11,网关,postgresql,Kong,linux,kong,PostgreSQL,KONG
From: https://blog.51cto.com/u_16147772/7682600

相关文章

  • linux中hive常用命令
     kill-929676杀死进程ps-ef|grep23697查看进程tail-flogs/hiveserver2.log查看2信息nohupbin/hive--servicehiveserver2>>logs/hiveserver2.log2>&1&后台加载报错和运行信息到2start-all.sh启动所有服务 ......
  • linux 中 tr -dc 命令
     001、tr-dcstring:表示删除字符以外(补集complement)的所有字符[root@pc1test]#lsa.txt[root@pc1test]#cata.txt##测试文本0102abdef03jkk.04,f05f06[root@pc1test]#cata.txt|tr-dc[:digit:]##表示删除数字......
  • NO.8 静态库+动态库的创建(Linux环境)
    一、动态库/共享库(sharedlibrary)共享库的命名:共享库的命名一般分为三个部分:前缀:lib库名称:自己定义即可,如test后缀:.so所以最终的静态库的名字应该为:libtest.so 共享库的制作:步骤1:生成目标文件.o,此时要加编译选项:-fPIC(fpic)gcc......
  • linux 中实现将目录中的文件仅显示大小和文件名
     001、[root@pc1test]#ls##测试文件a.txtb.txt[root@pc1test]#ll-htotal110M-rw-r--r--.1rootroot10MOct122:13a.txt-rw-r--r--.1rootroot100MOct122:13b.txt[root@pc1test]#du-h*......
  • 【知识杂谈#2】如何查看Linux的(本地与公网)IP地址与SSH服务的端口号
    1.本地Ip地址查看使用查看linux主机是否有net-toolsdpkg-lnet-tools显示以下代码就说明已安装成功||/NameVersionArchitectureDescription+++-==============-============-============-=================================iinet-tools2......
  • 【知识杂谈#1】Linux如何安装net-tools和sbin配置PATH
    1.Linux下载net-tools在Linux上下载net-tools包的方法可能会因你所使用的Linux发行版而有所不同。在某些现代的Linux发行版中,net-tools已经被弃用,而推荐使用iproute2来替代它。#对于Debian/Ubuntu系统:sudoaptinstallnet-tools#对于CentOS/RHEL系统:sudoyuminstallnet......
  • NO.7 Linux 系统编程-备忘
    一、命令备忘实时查看文件内容:实时显示日志:tail-ftest.log 软连接+硬链接创建软链接:ln-s文件名快捷方式的名字注意事项:ln创建软连接要用绝对路径创建硬链接: ......
  • NO.6 Linux 获取文件属性
    1/*2用于获取文件的属性和元数据信息,并输出到终端。3程序接受一个参数作为路径名,通过lstat函数获取指定文件的属性信息,并使用printf函数输出到终端。4注释对代码进行了简要解释,帮助理解各个部分的功能。5*/6#include<sys/types.h>7#include<sys/stat.h>8......
  • Linux操作系统学习2
    本周学习了Linux操作系统centos的用户管理,了解了用户和组的概念,同时也掌握了创建,修改与删除用户和组的方法。首先就是用户标识,也就是uid与gid,uid就是用户的id,gid就是用户组所属的id。学习了如下命令:查看当前用户登录信息的命令,id。查看文件所有者的命令:ll。查看进程的命令:psau......
  • 第四周Linux教材第七、八章学习笔记——文件操作、系统调用
    第七章7.1 文件操作级别文件操作分5个级别(从低到高):(1)硬件级别:文件操作包括:fdisk——将硬盘、U盘或SDC盘分区;             mkfs——格式化磁盘分区,为系统做好准备;             fsck——检查和维修系统;      ......