我是微服务的新手。我很少有应用可以部署为微服务。
我需要一个 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
负载均衡器位于 API 网关之前,即 nginx 控制器,
我将如何配置 Ingress-Nginx 以实现负载平衡?
因为负载均衡器会将请求重定向到 nginx 控制器
所以,Load balancer -> API Gateway > /api/orders
现在,/api/orders -> order-srv -> pods
显然负载均衡器应该决定它应该将请求路由到哪个 Pod?
我怎样才能做到这一点?
答案 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 服务,该服务具有到所有出现在幕后的服务的路由映射