Kong网关混合部署实际
部署资源为一个2核4G的虚拟机,部署在了一台虚拟机上,有条件的的能够把数据节点部署到别的机器上。
具体思路是一台虚机部署Kong的管制节点,治理端端口只能本机拜访,Konga和管制节点部署到一块。
数据节点能够部署到其余机器上,Nginx能够独自部署,也能够部署到其余机器上。
基于PostgresSQL数据库,本文不波及数据库装置局部。
因为nginx守护过程须要root,lua插件装置也要应用root用户,所以部署全程应用root用户
1. 部署Kong
- 下载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")
- 装置Kong
sudo yum install kong-enterprise-edition-2.8.1.1.rpm
部署管制节点
- 生成密钥
# 创立证书寄存的文件夹mkdir kong_certcd kong_cert# 证书默认有限期为三年 能够通过 --days参数进行调整kong hybrid gen_cert
- 将证书文件夹复制到CP节点的同一目录下。
- 进入Kong配置文件夹 并复制出配置文件
cd /etc/kong# 复制默认的配置文件cp kong.conf.default kong.conf
Kong在启动时会默认查找/etc/kong/kong.conf
/etc/kong.conf
配置文件。
- Kong配置文件批改
vim /etc/kong/kong.conf
减少以下配置:
# kong工作的文件夹prefix = /data/kong/kong# 插件plugins = bundled# 管制节点role = control_plane# 证书cluster_cert = /data/kong/kong_cert/cluster.crt# 证书keycluster_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
- 启动Kong
kong start
部署数据节点
- 将管制层面的证书复制到数据节点的文件夹中
/data/kong/kong_cert
- 进入
/etc/kong
,创立配置文件vim /etc/kong/kong-data.conf
- 批改配置文件
# 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# 证书keycluster_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
- 启动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-planesHTTP/1.1 200 OKDate: Wed, 06 Jul 2022 10:14:50 GMTContent-Type: application/json; charset=utf-8Connection: keep-aliveAccess-Control-Allow-Origin: *X-Kong-Admin-Request-ID: 1E07gFF8H29g4kGeJ2RkrLSYN9XHKsReContent-Length: 1006X-Kong-Admin-Latency: 804Server: 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
- 装置Nginx
装置Nginx依赖的组件
sudo yum install yum-utils
设置Nginx存储库,创立etc/yum.repos.d/nginx.repo
文件,把以下内容复制进去。
# 稳固版本[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true# 最新版本 [nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
默认应用稳固版本,如果想应用最新版本,执行上面的命令
sudo yum-config-manager --enable nginx-mainline
装置Nginx
sudo yum install nginx
- 批改Nginx配置文件
Nginx配置文件减少upstream ,批改/etc/nginx/nginx.conf
在 http 模块减少代码。
upstream kong { server 172.16.166.134:8000; # kong数据节点地址 个别是多个 }
批改 /etc/nginx/conf.d/default.conf
location / { # 代理upstream proxy_pass http://kong; }