• kong 和konga网关部署及使用


    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
    
    • 1

    2.docker 下载postgres

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

    注意: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
    
    • 1

    然后使用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
    
    • 1

    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接口的管理端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    5.验证是否成功启动

     curl -i http://localhost:8001
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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"
    
    • 1

    9.2 配置 target

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

    9.3 配置service

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

    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"
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    format前端转义
    C++中vector的emplace_back()方法和push_back()方法
    ZYNQ之FPGA学习----IIC协议驱动模块仿真实验
    【性能测试】JMeter:集合点,同步定时器的应用实例!
    面试题:JDK、JRE、JVM三者的区别与联系+什么是字节码+采用字节码的好处是什么+List和Set的区别+ArrayList和LinkedList区别
    Discuz论坛网站搭建教程,从0开始学会搭建网站
    VoLTE基础自学系列 | VoLTE呼叫流程之VoLTE打VoLTE,主被叫接入域为LTE
    【UML】要点
    基于Selenium Grid搭建自动化并行执行环境
    基于SSM+MySQL+Bootstrap的停车场管理系统
  • 原文地址:https://blog.csdn.net/qq_39990869/article/details/133744820