美文网首页Openresty/Kong
一、kong的介绍和安装

一、kong的介绍和安装

作者: 黎明你好 | 来源:发表于2018-04-26 16:54 被阅读59次

    Kong是一个基于Openresty开发的网关平台,可以基于插件的形式控制网关的认证、负载、限速等。

    Kong默认插件

    1. 身份认证:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。

    2. 安全:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。

    3. 流量控制:请求限流(基于请求计数限流)、上游响应限流(根据upstream响应计数限流)、请求大小限制。限流支持本地、Redis和集群限流模式。

    4. 分析监控:Galileo(记录请求和响应数据,实现API分析)、Datadog(记录API Metric如请求次数、请求大小、响应状态和延迟,可视化API Metric)、Runscope(记录请求和响应数据,实现API性能测试和监控)。

    5. 转换:请求转换(在转发到upstream之前修改请求)、响应转换(在upstream响应返回给客户端之前修改响应)。

    6. 日志:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

    在docker上运行kong

    1.安装pg

    docker run -d --name kong-database \
                  -p 5432:5432 \
                  -e "POSTGRES_USER=kong" \
                  -e "POSTGRES_DB=kong" \
                  postgres:9.5
    

    2.初始化postgres数据库

    docker run --rm \
        --link kong-database:kong-database \
        -e "KONG_DATABASE=postgres" \
        -e "KONG_PG_HOST=kong-database" \
        -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
        kong:0.12.3 kong migrations up
    

    3.运行起来kong

    docker rm $(docker ps -a -q)
    docker run -d --name kong \
        --link kong-database:kong-database \
        -e "KONG_PG_HOST=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:0.12.3
    

    centos安装

    1.1 centos6安装pgsql数据库

    Install the repository RPM:

    yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-centos10-10-2.noarch.rpm
    

    Install the client packages:

    yum install postgresql10
    
    

    Optionally install the server packages:

    yum install postgresql10-server
    

    Optionally initialize the database and enable automatic start:

    service postgresql-10 initdb
    chkconfig postgresql-10 on
    service postgresql-10 start
    

    1.2 centos7安装pgsql数据库

    Install the repository RPM:

    yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
    

    Install the client packages:

    yum install postgresql10
    

    Optionally install the server packages:

    yum install postgresql10-server
    
    

    Optionally initialize the database and enable automatic start:

    /usr/pgsql-10/bin/postgresql-10-setup initdb
    systemctl enable postgresql-10
    systemctl start postgresql-10
    

    2.创建pgsql用户

    进入数据库

    su - postgres
    psql
    

    得到:

    psql (9.3.2)  
    Type "help" for help.  
      
    postgres=#
    

    修改密码

    postgres=# \password postgres  
    

    创建用户和数据库

    postgres=# CREATE USER kong WITH PASSWORD 'kong';  
    postgres=# CREATE DATABASE kong OWNER kong;  
    

    3.修改pgsql配置文件

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

    listen_addresses = 'localhost'  
    修改为:
    listen_addresses = '*'  
    

    pg_hba.conf修改:
    会看到如下样式的规则:

    # TYPE    DATABASE        USER            ADDRESS                 METHOD  
      host    all             all             127.0.0.1/32            md5  
      local   all             postgres                                peer  
    

    type:

    local — Unix-domain socket  
    host — plain or SSL-encrypted TCP/IP socket  
    hostssl — is an SSL-encrypted TCP/IP socket  
    hostnossl — plain TCP/IP socket  
    

    METHOD:

    md5 -- 客户端需要提供密码来进行md5算法处理  
    ident -- 根据操作系统获取连接的客户端的用户名,并且使用指定匹配查询用户名  
    trust -- 任何连接到PostgreSQL的人都可以作为任何用户并且不需要提供密码  
    peer -- 从操作系统中获取用户名,并确认用户名是否匹配数据库用户名  
    

    我们添加一个

    host all all 127.0.0.1/32 trust
    

    4.下面安装kong

    centos6:

    https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/6/kong-community-edition-0.13.0.el6.noarch.rpm
    

    centos7:

    https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/7/kong-community-edition-0.13.0.el7.noarch.rpm
    
    

    安装:

    sudo yum install epel-release
    $ sudo yum install kong-community-edition-0.13.0.*.noarch.rpm --nogpgcheck
    

    源码安装:

    安装make命令

    yum install -y gcc gcc-c++
    

    安装openresty
    openssl openssl-devel 或者使用yum安装

    wget https://openresty.org/download/openresty-1.11.2.5.tar.gz
    
    ./configure --prefix=/opt/openresty-1.11.2.5 \
    --with-luajit \
    --with-http_realip_module \
    --with-pcre-jit \
    --with-ipv6 \
    --with-http_realip_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_v2_module \
    --with-openssl=../openssl-1.0.2o --with-pcre=../pcre-8.40 -j4 --with-zlib=../zlib-1.2.11
    
    
    $ export PATH="$PATH:/opt/openresty-1.11.2.5/bin"
    

    安装luarocks

    http://luarocks.github.io/luarocks/releases/luarocks-2.4.3.tar.gz
    
    
    ./configure --prefix=/opt/luarocks-2.4.3 \
      --lua-suffix=jit \
      --with-lua=/opt/openresty-1.11.2.5/luajit \
      --with-lua-include=/opt/openresty-1.11.2.5/luajit/include/luajit-2.1
    

    提示找不到unzip的时候,安装unzip

    wget https://downloads.sourceforge.net/infozip/unzip60.tar.gz
    make prefix=/usr MANDIR=/usr/share/man/man1 \
     -f unix/Makefile install
    

    设置环境变量

    $ export PATH="$PATH:/opt/luarocks-2.4.3/bin"
    

    安装kong

    luarocks install kong 0.12.3-0
    

    5.修改配置文件

    proxy_listen = 0.0.0.0:80
    admin_listen = 0.0.0.0:8001
    
    nginx_worker_processes = 1
    
    database = postgres
    pg_host = 127.0.0.1 
    pg_port = 6432
    pg_user = kong 
    pg_password = kong
    pg_database = kong   
    

    6.初始化数据库

    初始化数据配置:

    kong migrations up [-c /etc/kong/kong.conf]
    

    7.启动kong

    kong start -c kong.conf
    

    可以访问127.0.0.1:8001就OK

    可以安装一个管理端

    # Install Kong Dashboard
    npm install -g kong-dashboard
    
    # Start Kong Dashboard
    kong-dashboard start --kong-url http://127.0.0.1:8001
    

    相关文章

      网友评论

      本文标题:一、kong的介绍和安装

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