Consul场景用例:服务注册(Service discovery) & 服务网格(Service mesh)

简介: Consul服务注册于发现

Consul概念

Easy Service Networking 便捷的网络服务
Consul是一个可以跨任何运行时平台和公共或私有云提供连接和保护服务的网络服务解决方案。

应用场景

  1. 服务注册与发现
    服务注册,集成了健康检查,以及DNS和HTTP协议接口用来服务注册与发现。

    • 背景
      服务端负载平衡在当前多变的世界中效率不高。
      r1
      负载平衡器通常需要前置于应用层并为其提供静态IP,这增加了成本,增加了延迟,且引入了单点故障,并且随着服务的扩展必须 更新配置。
    • 解决方案
      灵活动态的服务注册基础架构。
      r1
      作为替代传统负载均衡器,在动态的基础架构引入了服务发现机制进行通信。服务发现机制使用注册表来保存服务、其位置和运行状况的实时列表。(client-end)服务查询注册表以发现上游服务的地址,然后直接连接。这套积极允许服务自动伸缩,并在没有负载平衡器介入的情况下优雅地处理故障。
    • 特性
      1)服务注册
      Consul维护了一个包含所有节点和服务以及它们当前健康状态的注册列表。这方便了操作人员或运营商可以及时了解掌握当前环境状态,应用情况以及自动化运维工具通过HTTP协议的API与动态基础设施交互。
      r1

      2)基于DNS的服务查找接口
      Consul可以使用内置DNS服务器进行服务发现。这简化了现有应用程序的集成,因为几乎所有的应用程序都支持使用DNS来解析IP地址。使用DNS替代静态IP地址可以使服务非常轻松地做到弹性伸缩及故障转移。

      $ dig web-frontend.service.consul. ANY
      
      ; <<>> DiG 9.8.3-P1 <<>> web-frontend.service.consul. ANY
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29981
      ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
      
      ;; QUESTION SECTION:
      ;web-frontend.service.consul. IN ANY
      
      ;; ANSWER SECTION:
      web-frontend.service.consul. 0 IN A 10.0.3.83
      web-frontend.service.consul. 0 IN A 10.0.1.109

      3)基于HTTP协议的服务查找接口
      Consul 提供了一套用来查询服务注册表中的节点,服务以及它们健康状况的HTTP API。这套API提供了阻塞时查询,以及对任何状态变化的长轮训。这允许自动化工具对服务注册或运行状况更改行为做出反应,以便及时更改配置或路由流量。

      curl http://localhost:8500/v1/internal/ui/nodes?dc=dc1
      [
          {
              "ID": "8b6d6270-a267-6b6a-fb64-7b9bd2761d63",
              "Node": "localhost",
              "Address": "127.0.0.1",
              "TaggedAddresses": {
                  "lan": "127.0.0.1",
                  "wan": "127.0.0.1"
              },
              "Meta": {
                  "consul-network-segment": ""
              },
              "Services": [
                  {
                      "ID": "consul",
                      "Service": "consul",
                      "Tags": null,
                      "Address": "",
                      "Meta": {
                          "raft_version": "3",
                          "serf_protocol_current": "2",
                          "serf_protocol_max": "5",
                          "serf_protocol_min": "1",
                          "version": "1.6.1"
                      },
                      "Port": 8300,
                      "Weights": {
                          "Passing": 1,
                          "Warning": 1
                      },
                      "EnableTagOverride": false,
                      "Proxy": {
                          "MeshGateway": {}
                      },
                      "Connect": {},
                      "CreateIndex": 9,
                      "ModifyIndex": 9
                  }
              ],
              "Checks": [
                  {
                      "Node": "localhost",
                      "CheckID": "serfHealth",
                      "Name": "Serf Health Status",
                      "Status": "passing",
                      "Notes": "",
                      "Output": "Agent alive and reachable",
                      "ServiceID": "",
                      "ServiceName": "",
                      "ServiceTags": null,
                      "Definition": {},
                      "CreateIndex": 9,
                      "ModifyIndex": 9
                  }
              ]
          }
      ]
      

      4)多数据中心(这是zk和etcd不具备的)
      Consul 天然支持多数据中心且不需要复杂的配置。这允许在其他数据中心查找服务并在本地访问。预查询高级特性实现了自动故障转移到其他数据中心。

      curl http://localhost:8500/v1/catalog/datacenters
      [
        "DC1",
        "DC2"
      ]

      5)健康检查
      健康检查配合服务发现可以防止将请求路由到不健康的服务,并能使服务轻松提供断路器功能。
      r1

  2. 服务网格

    • 背景

      网络设备如负载均衡器和防火墙,不能动态扩展配置来支持现代应用程序。
      网络防火墙基于ip规则来控制进出流量。在现实世界中,应用服务跨机器移动,频繁创建和销毁,这种基于边界的形式很难扩展,因为它会导致复杂的网络拓扑结构,以及短期防火墙规则和代理配置的蔓延。

      _2019_11_07_11_50_33

- 解决方案
    服务网格作为一种自动化和分布式的网络通信和安全方案,可以跨平台、私有和公共云运行。
    服务网格是一种新的方案来保护服务本身,而不是依赖于网络。Consul通过使用集中管理的服务策略和配置来实现基于服务标识的动态路由和安全管理。这些策略在没有基于IP的规则或网络中间件的数据中心和大型集群之间自动扩展。

r1

- 特性
  1)Layer 7 Traffic Management L7网络流量控制
  L7服务通信策略可以集中管理,支持高级流量管理模式,如服务故障转移、基于路径的路由和流量转移,这些模式可以应用于公共或私有云、平台和网络。
Kind = "service-splitter"
Name = "billing-api"

Splits = [
    {
        Weight        = 10
        ServiceSubset = "v2"
    },
    {
        Weight        = 90
        ServiceSubset = "v1"
    },
]
  2)Layer 7 Observability L7 可视化监控
  L7集中管理的服务可观测性,包括所有服务间通信的详细指标,如连接数、传输字节、重试次数、超时情况、开路、请求成功\错误率和响应码。

r1

  3)Secure services across any runtime platform 跨运行时平台的安全服务
  传统和现代工作负载之间的安全通信。SIDEAR代理允许应用程序在没有代码更改的情况下集成。L4 支持提供几乎通用的协议兼容性。

  4)Certificate-Based Service Identity 基于证书的服务标识
  TLS证书用于标识服务和保证通信安全。使用SPIFFE格式的证书与其他平台进行交互。Consul可以作为证书颁发机构以简化部署,也可以与外部签名颁发机构(如Vault)集成。
  
  5)Encrypted communication通信加密
  所有服务间通信都使用TLS进行加密和身份验证。使用TLS为服务间安全通信提供了强有力的保证,并确保传输中的所有数据都是加密的。
  
  6)Mesh Gateway 网格网关
  不同云区域、vpc之间以及Overlay网络和Underlay网络之间的连接通信不在需要负载的网络隧道和NAT。
  网格网关解决了TLS层的路由问题,同时保留了端到端的加密,并限制了每个网络边缘的攻击面。

相关文章
|
7月前
|
存储 安全 Go
Golang 语言微服务的服务注册与发现组件 Consul
Golang 语言微服务的服务注册与发现组件 Consul
57 0
|
1天前
|
负载均衡 监控 Go
Golang深入浅出之-Go语言中的服务网格(Service Mesh)原理与应用
【5月更文挑战第5天】服务网格是处理服务间通信的基础设施层,常由数据平面(代理,如Envoy)和控制平面(管理配置)组成。本文讨论了服务发现、负载均衡和追踪等常见问题及其解决方案,并展示了使用Go语言实现Envoy sidecar配置的例子,强调Go语言在构建服务网格中的优势。服务网格能提升微服务的管理和可观测性,正确应对问题能构建更健壮的分布式系统。
17 1
|
6天前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践之路
【4月更文挑战第30天】 在现代云计算的大背景下,微服务架构以其灵活性和可扩展性成为众多企业转型的首选。然而,随着服务的激增和网络交互的复杂化,传统的服务通信模式已无法满足需求,服务网格(Service Mesh)应运而生。本文通过分析服务网格的核心组件、运作机制以及在企业中的实际应用案例,探讨了服务网格在微服务架构中的关键作用及其带来的变革,同时提出了实施过程中面临的挑战和解决策略。
|
8天前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践
【4月更文挑战第28天】 在现代云原生应用的后端开发领域,微服务架构已成为一种广泛采用的设计模式。随着分布式系统的复杂性增加,服务之间的通信变得愈加关键。本文将深入探讨服务网格这一创新技术,它旨在提供一种透明且高效的方式来管理、监控和保护微服务间的交互。我们将从服务网格的基本概念出发,分析其在实际应用中的优势与挑战,并通过一个案例研究来展示如何在现有的后端系统中集成服务网格。
|
24天前
|
存储 网络协议 数据中心
服务注册中心Consul
服务注册中心Consul
28 1
|
2月前
Consul安装教程和注册
Consul安装教程和注册
17 0
|
2月前
|
微服务
三个微服务注册中心eureka、consul、zookeeper之间的异同点以及CAP理论图
三个微服务注册中心eureka、consul、zookeeper之间的异同点以及CAP理论图
20 0
|
5月前
|
存储 机器学习/深度学习 负载均衡
模型服务网格:云原生下的模型服务管理
模型服务网格:云原生下的模型服务管理
78381 1
模型服务网格:云原生下的模型服务管理
|
7月前
|
监控 安全 大数据
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
201 39