关于kong:Kong网关混合部署实践

32次阅读

共计 3479 个字符,预计需要花费 9 分钟才能阅读完成。

Kong 网关混合部署实际

部署资源为一个 2 核 4G 的虚拟机,部署在了一台虚拟机上,有条件的的能够把数据节点部署到别的机器上。

具体思路是一台虚机部署 Kong 的管制节点,治理端端口只能本机拜访,Konga 和管制节点部署到一块。

数据节点能够部署到其余机器上,Nginx 能够独自部署,也能够部署到其余机器上。

基于 PostgresSQL 数据库,本文不波及数据库装置局部。

因为 nginx 守护过程须要 root,lua 插件装置也要应用 root 用户,所以部署全程应用 root 用户

1. 部署 Kong

  1. 下载 kong 安装包
 mkdir -p /data/kong
 cd /data/kong
 curl -Lo kong-enterprise-edition-2.8.1.1.rpm $(rpm --eval "https://download.konghq.com/gateway-2.x-centos-%{centos_ver}/Packages/k/kong-enterprise-edition-2.8.1.1.el%{centos_ver}.noarch.rpm")
  1. 装置 Kong
 sudo yum install kong-enterprise-edition-2.8.1.1.rpm

部署管制节点

  1. 生成密钥
# 创立证书寄存的文件夹
mkdir kong_cert
cd kong_cert
# 证书默认有限期为三年 能够通过 --days 参数进行调整
kong hybrid gen_cert
  1. 将证书文件夹复制到 CP 节点的同一目录下。
  2. 进入 Kong 配置文件夹 并复制出配置文件
cd /etc/kong
# 复制默认的配置文件
cp kong.conf.default  kong.conf

Kong 在启动时会默认查找 /etc/kong/kong.conf /etc/kong.conf配置文件。

  1. Kong 配置文件批改
vim /etc/kong/kong.conf

减少以下配置:

# kong 工作的文件夹
prefix = /data/kong/kong
# 插件
plugins = bundled
# 管制节点
role = control_plane
# 证书
cluster_cert = /data/kong/kong_cert/cluster.crt
# 证书 key
cluster_cert_key = /data/kong/kong_cert/cluster.key
# 治理后盾监听的端口 通过此端口进行数据的增加
admin_listen = 127.0.0.1:8001
# 集群监听端口
cluster_listen = 0.0.0.0:8005
# 数据库 相干信息依据本人状况进行批改
database = postgres
# 主机
pg_host = 172.16.166.129            
# 端口
pg_port = 5432
# 用户名
pg_user = kong                  
# 明码
pg_password = kong                  
# 数据库
pg_database = kong
  1. 启动 Kong
kong start

部署数据节点

  1. 将管制层面的证书复制到数据节点的文件夹中 /data/kong/kong_cert
  2. 进入 /etc/kong,创立配置文件 vim /etc/kong/kong-data.conf
  3. 批改配置文件
# kong 工作的文件夹 因为我部署到一块了 所以批改了一下名字
prefix = /data/kong/kong-data
# 插件 以及自定义插件
plugins = bundled
# 数据立体
role = data_plane
# 敞开数据库 数据都从管制层面获取
database = off
#数据申请监听端口
proxy_listen = 0.0.0.0:8000
# 管制立体端口
cluster_control_plane = 172.16.166.134:8005
# 证书
cluster_cert = /data/kong/kong_cert/cluster.crt
# 证书 key
cluster_cert_key = /data/kong/kong_cert/cluster.key
# 缓存大小设置 具体参考 此链接 https://docs.konghq.com/gateway/latest/plan-and-deploy/sizing-guidelines/#in-memory-caching
# 4core and 8G ram 倡议 4-6G 缓存
mem_cache_size = 4028M
  1. 启动 kong
kong start -c /etc/kong/kong-data.conf

验证是否部署胜利

执行以下命令,验证是否部署胜利,<admin-hostname> 替换为你的主机地址。

curl -i -X GET http://<admin-hostname>:8001/clustering/data-planes

查看执行后果

[root@localhost ~]# curl -i -X GET http://localhost:8001/clustering/data-planes
HTTP/1.1 200 OK
Date: Wed, 06 Jul 2022 10:14:50 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
X-Kong-Admin-Request-ID: 1E07gFF8H29g4kGeJ2RkrLSYN9XHKsRe
Content-Length: 1006
X-Kong-Admin-Latency: 804
Server: kong/2.8.1.1-enterprise-edition

{"next":null,"data":[{"id":"2eca2deb-8813-443a-adbb-a9cddc68cd8a","ttl":1209574,"config_hash":"9a5678342c9ed85a8fc474c746082bf0","sync_status":"normal","ip":"127.0.0.1","last_seen":1657158142,"hostname":"localhost.localdomain","version":"2.8.1.1-enterprise-edition"}]}

请留神: /clustering/data-planes 此站点返回的数据是在数据库 clustering_data_planes 表中存储的因为 id 是随机的,所以每次重启数据节点都会新增一条数据,Kong 应用 cluster_data_plane_purge_delay 配置来避免表有限扩充,默认是 14 天没有收到 DP 的音讯,就会将其数据删除。

部署数据节点的对立入口 Nginx

  1. 装置 Nginx

装置 Nginx 依赖的组件

sudo yum install yum-utils

设置 Nginx 存储库,创立 etc/yum.repos.d/nginx.repo 文件, 把以下内容复制进去。

# 稳固版本
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# 最新版本 
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

默认应用稳固版本,如果想应用最新版本,执行上面的命令

sudo yum-config-manager --enable nginx-mainline

装置 Nginx

sudo yum install nginx
  1. 批改 Nginx 配置文件

Nginx 配置文件减少 upstream , 批改/etc/nginx/nginx.confhttp 模块减少代码。

upstream kong {server 172.16.166.134:8000; # kong 数据节点地址 个别是多个}

批改 /etc/nginx/conf.d/default.conf

  location / {
               # 代理 upstream
        proxy_pass http://kong;
    }

正文完
 0