Consul Connect 服务网格
HashiCorp Consul 是服务发现和配置管理的标杆产品。Consul Connect 是 Consul 的服务网格扩展,提供服务间安全通信能力。不同于 Istio 和 Linkerd,Consul Connect 将服务发现与服务网格深度融合,提供了一体化的解决方案。
Consul 核心概念
服务网格 vs 服务发现
Consul 架构
Consul 使用两种协议:
- Gossip Protocol:用于服务发现和成员关系
- Raft Consensus:用于配置一致性
Consul Connect 架构
组件概览
数据流
核心功能
服务注册与发现
service-registration.yaml
服务分割(Service Segmentation)
Consul Connect 通过 Intentions(意图) 控制服务间的访问权限:
intention-allow.yaml
intention-deny.yaml
意图层级
Envoy 配置
自动配置
Consul Connect 自动生成 Envoy 配置:
生成的配置包括:
- 监听器:15006(入站)、15001(出站)
- 集群:上游服务集群
- 路由:基于服务的路由规则
- 端点:健康的上游实例
上游/下游配置
upstream-config.yaml
健康检查
health-check.yaml
流量管理
负载均衡
Consul Connect 支持多种负载均衡策略:
lb-config.yaml
流量分割
traffic-split.yaml
重试配置
retry-config.yaml
安全配置
mTLS 自动配置
Consul Connect 默认启用 mTLS:
意图配置
l7-intention.yaml
TLS 配置
tls-config.yaml
安装与配置
安装 Consul
启用 Connect
启动 Sidecar Proxy
Kubernetes 集成
Consul on Kubernetes
consul-k8s.yaml
安装 consul-k8s
自动 Sidecar 注入
auto-inject.yaml
优缺点分析
优势
劣势
适用场景
总结
Consul Connect 提供了一个将服务发现与服务网格融合的方案:
适用场景:如果你的基础设施已经使用 Consul,Consul Connect 是一个无缝扩展的选择;如果需要构建多数据中心服务网格,Consul Connect 也是值得考虑的方案。
延伸思考:Consul Connect 将服务发现和服务网格结合的思路,代表了服务网格发展的一个方向。未来可能出现更多「服务网格 + 服务发现」一体化的产品。