IstioConMoving large scale consumer e-commerce Infrastructure to Mesh
公司背景
Carousell 是一家东南亚地区的 C2C 电商平台,月活跃用户超过 400 万,每月处理超过 1000 亿用户请求,互联网出口带宽超过 100 TB/月,内部出口带宽约 2 PB/月。
架构概述
- 用户流量基础设施覆盖 TW 区域的 3 个区域,采用 REST API 处理客户端流量,gRPC 处理服务间流量,共有约 100 个微服务,大部分服务使用 Go 语言编写。
- 服务发现和配置使用 Consul,HTTP/TCP 流量通过 HAProxy 处理,gRPC 流量通过 Envoy 处理,互联网出口使用 NAT 网关。
动机
- 提高中心代理层(HAProxy/Envoy)的可靠性。
- 提供更可控的负载均衡。
- 将应用服务从网络和配置中卸载。
- 避免其他潜在的故障源(如 Consul)。
- 可能带来更好的可观察性。
需求和改进
- 不可变部署。
- 最小化影响范围。
- 控制和预测路由/负载均衡的 Pod 发现。
- 提高性能和弹性。
- 更严格的区域路由。
- 服务认证和授权能力。
- 改进的可观察性。
- 可扩展到多区域设置。
推广方案
- 分阶段推广 Istio 设置和微服务。
- 设置控制平面和相关工具。
- 通过命名空间或按需进行 Sidecar 注入。
- 在推广期间使用 Passthrough 模式。
- 通过 Service Entry 连接内部代理。
- 在集群中部署 Kubernetes Cluster-IP 服务。
推广方案 - Istio 设置和微服务
- 将指标导出到中央 Prometheus。
- 启用异常检测以提高可靠性。
- 启用区域路由、区域部署和 HPA。
- 通过配置访问服务端点。
延迟改进
工具和自动化
- 在 Kubernetes 集群创建期间自动化 Istio 设置。
- 自动化新微服务创建或更新的端点配置。
- 模板化 Kubernetes 部署,包括 Virtual Service 和 Destination Rule。
主要结论
- 识别问题和改进点。
- 对所有已知用例和功能(如 mTLS、异常检测等)进行 POC 测试。
- Passthrough 模式将 gRPC/http2 协议降级为 Http/1.1。
- 调整连接和 TCP 设置。
- 优雅地处理信号(SIGINT、SIGTERM)。
- 自动化以简化跨环境的设置管理。
- 忽略端口/IP(如 Consul)。
- 命名空间隔离有助于减少 Istio 代理资源。
下一步计划
- 将有状态组件移入网格发现和路由。
- 通过 Istio Gateway 暴露网关服务。
- 向受限网络策略发展。
- 将服务纳入认证和授权。