我们使用 kong api 网关作为所有 api 的单一网关。我们的api很少(1500-2000ms)面临延迟问题。后来当我们检查时,由于“速率限制”插件,正在创建延迟。当我们禁用插件时,延迟会得到改善,并且响应与我们直接从 IP 获得的响应相同(接近 300 毫秒)。我正在尝试设置 redis 节点来缓存数据库查询,我不确定我们如何配置 kong 以从 redis 本身读取。我们如何将数据库查询缓存到 redis 节点。我们正在为 kong 使用 postgresql。
从Kong 1.1开始,您可以使用无数据库(声明式)配置。
我找不到有关如何在无数据库/声明模式下启动基于Kong 1.1的容器的任何信息,而无需先建立数据库连接。有谁知道如何做到这一点?
我目前正在运行 Docker 19.03.5 并尝试复制本文的内容,但在第三步中出现以下错误:
第一步:
docker network create kong-net
Run Code Online (Sandbox Code Playgroud)
第二:
docker run -d --name kong-database \
--network=kong-net \
-p 5555:5432 \
-e “POSTGRES_USER=kong” \
-e “POSTGRES_DB=kong” \
postgres:9.6
Run Code Online (Sandbox Code Playgroud)
第三:
docker run --rm \
--network=kong-net \
-e “KONG_DATABASE=postgres” \
-e “KONG_PG_HOST=kong-database” \
kong:latest kong migrations up
Run Code Online (Sandbox Code Playgroud)
在第三步,如果我使用详细选项,我会看到以下错误:
2019/12/02 15:51:25 [verbose] Kong: 1.4.0
Error:
/usr/local/share/lua/5.1/kong/cmd/migrations.lua:93: [PostgreSQL error] failed to retrieve
PostgreSQL server_version_num: connection refused
stack traceback:
[C]: in function 'assert'
/usr/local/share/lua/5.1/kong/cmd/migrations.lua:93: in function 'cmd_exec'
/usr/local/share/lua/5.1/kong/cmd/init.lua:87: in function </usr/local/share/lua/5.1/kong/cmd/init.lua:87>
[C]: in …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Kong 的 oauth2 授权插件在顶部 kong 上添加一个 API。我按照他们的Kong 文档遵循的步骤:
我从上述步骤中获得了 client_id、client_secret、provision_key 等,但我想知道是否需要在我的一端创建 oauth2 服务器或 kong 本身在他们的一端配置它,我们只需要调用他们的端点。我正在 Laravel 中构建我的 API。
我试图更好地理解 Kong API Gateway - Routes
假设我向 Kong Admin API 添加了一个服务。该服务只允许 GET 请求,当您向该服务发出 GET 请求时,它所做的只是生成一个随机数。
我已经向管理 API 发布了一个新服务。为什么我需要路线?我看过文档,但我仍然不明白它的目的。
问题
我在 Kong 错误日志中收到一条错误消息,报告上游服务器已超时。但我知道上游进程只花了一分钟,当它完成时(在 Kong 记录了错误之后)它会记录一个 java 错误“Broken Pipe”,这意味着 Kong 不再监听响应。
这是上游进程花费的时间超过 60 秒时的行为。在某些情况下,只需不到 60 秒,一切正常。
如何延长 Kong 的超时时间?
细节
金刚版
1.1.2
Run Code Online (Sandbox Code Playgroud)
Kong的错误信息(略有编辑):
2019/12/06 09:57:10 [error] 1421#0: *1377 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xyz.xyz.xyz.xyz, server: kong, request: "POST /api/...... HTTP/1.1", upstream: "http://127.0.0.1:8010/api/.....", host: "xyz.xyz.com"
Run Code Online (Sandbox Code Playgroud)
这是上游服务器日志中的错误(Java / Tomcat via SpringBoot)
Dec 06 09:57:23 gateway-gw001-99 java[319]: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
Dec 06 09:57:23 gateway-gw001-99 java[319]: at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364) ~[tomcat-embed-core-8.5.42.jar!/
Dec 06 09:57:23 gateway-gw001-99 java[319]: …Run Code Online (Sandbox Code Playgroud) 我使用 Kong 作为 api 网关。它通过 aws ec2 实例上的 docker 运行。我已经在 kong 创建了 api,我的应用程序正在通过 http 访问它,但我想保护它,应该使用 https 访问它。我能够为实例生成证书,但不确定在 kong 中的何处包含这些 cert.pem 和 privkey.pem。以下是我参考的链接
https://docs.konghq.com/install/docker/?_ga=2.186266273.983237265.1537771850-1639019919.1537433662
我有一个KongIngress关于 Ingress 资源的对象配置属性,它调用 kong 作为 Ingress 控制器。我实际上有这个配置:
apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
name: echo-site-ingress
namespace: hello-world
annotations:
kubernetes.io/ingress.class: "kong"
proxy:
protocols:
- http
- https
# path: /
route:
methods:
- POST
- GET
strip_path: true
preserve_host: true
---
#My Ingress resource
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubernetes.io/ingress.class: kong
plugins.konghq.com: helloworld-customer-acceptance-basic-auth, hello-world-customer-acceptance-acl
name: echo-site-ingress
namespace: hello-world
spec:
rules:
- host: hello-world.bgarcial.me
http:
paths:
- backend:
serviceName: echo
servicePort: 80
path: /
tls:
- hosts:
- …Run Code Online (Sandbox Code Playgroud) basic-authentication kong kubernetes-ingress kong-plugin kong-ingress
我们目前正在研究kong API网关。
我们了解 Kongs API 身份验证和所有其他事情。我们不知道如何在 php 中实现它。
我们如何从数据库中插入和检索数据并通过 Kong API 网关返回它。
如果您有任何演示,请提供给我们,以便我们轻松理解。
kong ×9
docker ×3
api-gateway ×1
kong-ingress ×1
kong-plugin ×1
nginx ×1
oauth-2.0 ×1
php ×1
postgresql ×1
redis ×1
routes ×1
timeout ×1
ubuntu-18.04 ×1