Consul场景用例:服务注册(Service discovery) & 服务网格(Service mesh)
Consul概念
Easy Service Networking 便捷的网络服务 Consul是一个可以跨任何运行时平台和公共或私有云提供连接和保护服务的网络服务解决方案。
应用场景
-
服务注册与发现
服务注册,集成了健康检查,以及DNS和HTTP协议接口用来服务注册与发现。- 背景
服务端负载平衡在当前多变的世界中效率不高。
负载平衡器通常需要前置于应用层并为其提供静态IP,这增加了成本,增加了延迟,且引入了单点故障,并且随着服务的扩展必须 更新配置。 - 解决方案
灵活动态的服务注册基础架构。
作为替代传统负载均衡器,在动态的基础架构引入了服务发现机制进行通信。服务发现机制使用注册表来保存服务、其位置和运行状况的实时列表。(client-end)服务查询注册表以发现上游服务的地址,然后直接连接。这套积极允许服务自动伸缩,并在没有负载平衡器介入的情况下优雅地处理故障。 -
特性
1)服务注册
Consul维护了一个包含所有节点和服务以及它们当前健康状态的注册列表。这方便了操作人员或运营商可以及时了解掌握当前环境状态,应用情况以及自动化运维工具通过HTTP协议的API与动态基础设施交互。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)健康检查
健康检查配合服务发现可以防止将请求路由到不健康的服务,并能使服务轻松提供断路器功能。
- 背景
-
服务网格
-
背景
网络设备如负载均衡器和防火墙,不能动态扩展配置来支持现代应用程序。 网络防火墙基于ip规则来控制进出流量。在现实世界中,应用服务跨机器移动,频繁创建和销毁,这种基于边界的形式很难扩展,因为它会导致复杂的网络拓扑结构,以及短期防火墙规则和代理配置的蔓延。 ![_2019_11_07_11_50_33](https://yqfile.alicdn.com/86e376f9e4aa73013acf2f3717042ce2220d8149.png)
-
解决方案
服务网格作为一种自动化和分布式的网络通信和安全方案,可以跨平台、私有和公共云运行。 服务网格是一种新的方案来保护服务本身,而不是依赖于网络。Consul通过使用集中管理的服务策略和配置来实现基于服务标识的动态路由和安全管理。这些策略在没有基于IP的规则或网络中间件的数据中心和大型集群之间自动扩展。 ![r1](https://yqfile.alicdn.com/db7894c043621d52d84de98c38858dc981ddb8a8.png)
- 特性
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集中管理的服务可观测性,包括所有服务间通信的详细指标,如连接数、传输字节、重试次数、超时情况、开路、请求成功错误率和响应码。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层的路由问题,同时保留了端到端的加密,并限制了每个网络边缘的攻击面。 -
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从0到千万DAU,这5年闲鱼架构如何演进? | 11月6号栖夜读
点击订阅云栖夜读日刊,专业的技术干货,不容错过! 阿里专家原创好文 1.从0到千万DAU,这5年闲鱼架构如何演进? 闲鱼品牌创立于14年阿里的某个茶水间,从0开始到现在千万DAU,5年时间里闲鱼见证了闲置物品从线下到线上交易的转移。而线上交易的繁荣,则需要业务架构做相应的调整、演进才能支撑业务的快速发展。本文主要通过介绍闲鱼从0发展到千万级DAU应用的不同阶段的业务特点、核心问题以及针对性的架构演进,来阐述业务架构的演进思路与心得。阅读更多》》 2.初识 Knative: 跨平台的 Serverless 编排框架 Knative 是 Google 在 2018 的 Google Cloud Next 大会上发布的一款基于 Kubernetes 的 Serverless 框架。Knative 一个很重要的目标就是制定云原生、跨平台的 Serverless 编排标准。Knative 是通过整合容器构建(或者函数)、工作负载管理(和动态扩缩)以及事件模型这三者来实现的这一 Serverless 标准。Knative 社区的主要贡献者有 Google、Pivotal、IBM、Red Hat。可...
- 下一篇
微服务架构案例(05):SpringCloud 基础组件应用设计
本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明02:业务架构设计,系统分层管理03:数据库选型,业务数据设计规划04:中间件集成,公共服务管理05:SpringCloud 基础组件应用设计 一、组件应用规划 1、注册中心 Eureka 组件是 Netflix 开发的,用于定位服务,基于RESTFul方式实现服务注册与发现。包括一个EurekaServer服务端(通常是指微服务中的注册中心) 和EurekaClient客户端(通常指微服务中的业务服务)。Eureka支持高可用的配置,当注册中心发现有故障的服务时,Eureka就会转入自动保护模式,故障时不影响服务的发现和注册,当故障恢复正常时,注册中心的服务会进行状态同步,继续提供服务。 2、服务调用 Feign 组件是一个声明式的 WebService客户端。在Eureka注册的服务中,可以使用Feign接口的形式来进行相关服务间的请求调用,并提供超时回退,快速熔断的相关特性。Feign是一个便利的RestFul框架,简化调用,通过ribbon在注册服务器中找到服务实...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群