如何使用入口 nginx 控制器设置负载均衡器

时间:2021-02-18 03:51:21

标签: docker nginx kubernetes microservices

我是微服务的新手。我很少有应用可以部署为微服务。

我需要一个 API 和负载均衡器。对于 API 网关,我开始了解 Ingress Nginx。但我不确定热设置负载平衡。但是我可以为 API 网关配置它,如下所示。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: example.dev
      http:
        paths:
          - path: /api/users/?(.*)
            backend:
              serviceName: auth-srv
              servicePort: 3000
          - path: /api/orders/?(.*)
            backend:
              serviceName: order-srv
              servicePort: 3000
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 3000

我也有一个困惑: enter image description here

负载均衡器位于 API 网关之前,即 nginx 控制器,

我将如何配置 Ingress-Nginx 以实现负载平衡?

因为负载均衡器会将请求重定向到 nginx 控制器

所以,Load balancer -> API Gateway > /api/orders

现在,/api/orders -> order-srv -> pods

显然负载均衡器应该决定它应该将请求路由到哪个 Pod?

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

嗯,这就像 -

您收到了来自外部世界的请求,该请求已在负载均衡器层的第一级拦截,API 网关应该是您将保留所有 URL 映射的微服务之一,例如 - /api/orders/{orderId} 将其带到您的 API 网关,在该 API 网关中,您可以通过 Fully Qualified Domain Name of order service (FQDN) :portNumber/{uri}

将其重定向到幕后的某些订单服务的逻辑

因此,通过入口规则简单地将流量路由到前端和 API 网关是个好主意,即

- path: /?(.*) 会将其带到客户端服务或前端

- path: /api/?(.*) 这将把它带到 API Gateway 服务,该服务具有到所有出现在幕后的服务的路由映射