美文网首页
Kong网关-初探

Kong网关-初探

作者: Panama_228b | 来源:发表于2020-03-26 17:17 被阅读0次

    1 Kong网关介绍

    Kong是在Nginx的基础上构建的,更确切的说Kong是在Nginx中运行的Lua应用程序,Kong包含了OpenResty。Kong 提供了大量的插件和动态管理API功能。
    Kong 大致功能特性

    • 动态路由: Kong 的背后是 OpenResty+Lua,所以从 OpenResty 继承了动态路由的特性
    • 熔断
    • 健康检查
    • 日志: 可以记录通过 Kong 的 HTTP,TCP,UDP 请求和响应。
    • 鉴权: 权限控制,IP 黑白名单,同样是 OpenResty 的特性
    • 监控: Kong 提供了实时监控插件
    • 认证: 如数支持 HMAC, JWT, Basic, OAuth2.0 等常用协议
    • 限流
    • REST API: 通过 Rest API 进行配置管理,从繁琐的配置文件中解放
    • 可用性: 天然支持分布式
    • 高性能: 背靠非阻塞通信的 nginx,性能自不用说
    • 插件机制: 提供众多开箱即用的插件,且有易于扩展的自定义插件接口,用户可以使用 Lua 自行开发插件

    2 安装包准备

    Kong的一些配置存储可以是单机文件,也可以是postgre,cassandra。本文使用cassandra做Kong的数据库。

    3 安装单机版

    3.1 安装Cassandra

    Cassandra cqlsh 依赖了python2.7 我使用的Centos7自带。假设已经安装了JDK1.8.
    Cassandra目前也是单机部署。

    tar -xvf apache-cassandra-3.11.6-bin.tar.gz
    cd apache-cassandra-3.11.6
    

    Cassandra 不推荐使用root用户启动服务,我们创建一个cassandra组和用户

       groupadd cassandra
       useradd cassandra -g cassandra
       su - cassandra
       chown -R cassandra:cassandra apache-cassandra-3.11.6
    

    需要修改Cassandra配置文件,找到以下属性进行修改

    [root@sybj-int-26 apache-cassandra-3.11.6]# cd conf/
    [root@sybj-int-26 conf]# vim cassandra.yaml 
    
    # cassandra 节点之间的监听地址
    listen_address: 10.0.3.26
    # rpc 监听地址
    rpc_address: 10.0.3.26
    seed_provider:
        # Addresses of hosts that are deemed contact points. 
        # Cassandra nodes use this list of hosts to find each other and learn
        # the topology of the ring.  You must change this if you are running
        # multiple nodes!
        - class_name: org.apache.cassandra.locator.SimpleSeedProvider
          parameters:
              # seeds is actually a comma-delimited list of addresses.
              # Ex: "<ip1>,<ip2>,<ip3>"
              - seeds: "10.0.3.26"
    

    修改conf/jvm.options配置文件,设置一下内存

    -Xms6G
    -Xmx6G
    

    启动Cassandra

    [cassandra@sybj-int-26 apache-cassandra-3.11.6]$ cd bin
    [cassandra@sybj-int-26 bin]$ ./cassandra
    
    

    添加到开机启动

    [Unit]
    Description=Cassandra Server Service
    After=network.service
     
    [Service]
    Type=simple
    Environment=JAVA_HOME=/usr/local/jdk1.8.0_231
     
    PIDFile=/opt/ylbzj/apache-cassandra-3.11.6/bin/cassandra.pid
    User=cassandra
    Group=cassandra
    ExecStart=/opt/ylbzj/apache-cassandra-3.11.6/bin/cassandra -p /opt/ylbzj/apache-cassandra-3.11.6/bin/cassandra.pid
    ExecStop=/bin/kill -s QUIT $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
    

    3.1 安装Kong

    Cassandra单机版安装到了10.0.3.26,另找一台机器10.0.3.25安装Kong Gateway

     yum install kong-2.0.2.*.noarch.rpm --nogpgcheck
    

    执行安装命令后,安装成功,但是会报一个脚本错误,暂时不处理。
    kong安装成功后配置文件在/etc/kong/目录

    修改Kong配置文件

      cd /etc/hong
      cp kong.conf.default kong.conf
      vim kong.conf
    
    数据库使用cassandra
    database = cassandra
    
    # cassandra 服务地址
    cassandra_contact_points = 10.0.3.26 
    
    cassandra_port = 9042 
    
    # Kong poll 数据库的周期配置。
    db_update_frequency = 5 
    
    # 使用Cassandra数据库需要指定此配置,数据变更传播到 kong 集群的最大时间是 db_update_frequency + db_update_propagation 秒。(cassandra的数据一致性延迟)。
    db_update_propagation = 5 
    
    # 该配置项的时间(单位秒)是 kong 缓存数据库实体的时间(包括缓存命中或者穿透),该存活时间是一种保护措施,以防 kong 节点漏掉处理缓存无效事件,避免旧数据长时间没有被清理。当缓存生存时间到了,缓存值将会被清理掉,下一次将会从数据库读取数据并再次缓存起来
    db_cache_ttl = 3600 
    

    启动

    # 初始化数据库
    kong migrations bootstrap
    # 启动
    kong start
    

    测试Admin 服务,能否访问

    [root@sybj-int-25 kong]# curl -i  http://localhost:8001
    HTTP/1.1 200 OK
    Date: Thu, 26 Mar 2020 09:14:00 GMT
    Content-Type: application/json; charset=utf-8
    Connection: keep-alive
    Access-Control-Allow-Origin: *
    Server: kong/2.0.2
    Content-Length: 8959
    X-Kong-Admin-Latency: 160
    
    1. 添加服务
    [root@sybj-int-25 ~]# curl -i -X POST   --url http://localhost:8001/services/   --data 'name=test_baidu'   --data 'url=http://baidu.com'
    HTTP/1.1 201 Created
    Date: Thu, 26 Mar 2020 10:08:55 GMT
    Content-Type: application/json; charset=utf-8
    Connection: keep-alive
    Access-Control-Allow-Origin: *
    Server: kong/2.0.2
    Content-Length: 289
    X-Kong-Admin-Latency: 11
    
    {"host":"baidu.com","created_at":1585217335,"connect_timeout":60000,"id":"49f4423b-87b9-45f1-a57b-c7f6f3fd4b40","protocol":"http","name":"test_baidu","read_timeout":60000,"port":80,"path":null,"updated_at":1585217335,"retries":5,"write_timeout":60000,"tags":null,"client_certificate":null}
    
    1. 添加服务路由
    [root@sybj-int-25 ~]# curl -i -X POST   --url http://localhost:8001/services/test_baidu/routes --data 'hosts[]=baidu.com'
    HTTP/1.1 201 Created
    Date: Thu, 26 Mar 2020 10:13:09 GMT
    Content-Type: application/json; charset=utf-8
    Connection: keep-alive
    Access-Control-Allow-Origin: *
    Server: kong/2.0.2
    Content-Length: 427
    X-Kong-Admin-Latency: 24
    
    

    相关文章

      网友评论

          本文标题:Kong网关-初探

          本文链接:https://www.haomeiwen.com/subject/wskcuhtx.html