作者:张宇驰,喻纯政 

职务:解决方案顾问

公司:F5

本章节为 F5 现代应用网关系列文章之 Eureka 部分。本次主要分享 MSDA 现代应用网关融合 Eureka 服务注册发现中心,实现服务动态发现;通过这种融合,F5 就充当了传统单体应用架构与现代分布式应用架构的链接桥梁。

Eureka 简介

Eureka 是一个由 Netflix 开发的发现服务器。用户可以通过发出 REST 请求来注册服务,取消注册,以及发现其他服务。除此以外,Eureka 还提供负载均衡的能力。

Eureka 包含两个组件:Eureka Client 和 Eureka Server。配合用户的应用客户端、应用服务端一起协同工作,以达到服务注册及调用的效果。

Eureka 具体的架构图如下:

图片来自官网

如图所示,应用服务会把 IP 地址和端口注册到 Eureka 上,并通过定时发送心跳包来告诉 Eureka 自己的健康状态。为了防止服务的消费方(图中的 Application Client)调用到已经下线的服务,应用服务在下线的时候,会给 Eureka 服务器发送消息,通知 Eureka 服务器把自己从服务列表删除。服务的消费方会通过查询 Eureka 服务器获取自己想要调用服务的具体信息。

当获取到服务的具体信息后,就会发送对服务的直接调用了。Eureka 服务器本身也是以集群的方式部署的,不同节点直接会复制同步数据。

通过这方法,微服务架构中的东西向流量调用才能有条不紊的进行。

Eureka 特性

1

对等通信

Eureka 可以通过集群的方式部署, Eureka Server 利用节点之间的对等通信机制,而并非采用常见的选举机制,没有主从节点之分,每一个节点的关系都是平等的。节点互相通信,交换信息来保持一致,提高了可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。每个节点都可被视为其他节点的副本。

2

故障转移

如果集群中某节点出现故障,Eureka 客户端就会自动切换,请求新节点。故障节点恢复后会重新加入集群节点中。

3

心跳检测

Eureka 会和注册的服务保持心跳检测,默认时间为30秒,如果发现某服务不能在30秒发送心跳信息,并持续3次(90秒),Eureka 服务器会下线这个实例。

4

数据一致性

Eureka 等服务注册中心的主要使用场景就是分布式、微服务架构。在分布式系统中,一个绕不开的概念就是一致性原则。根据 CAP 理论,我们知道,一个分布式系统在一致性的策略上,最多只能满足一致性、可用性和分区容错性三者中的两者。

Eureka 在设计时满足了可用性和分区容错性两项原则,也就是说,在 Eureka 集群中,只要有一台 Eureka 能够正常提供服务,就可以保证注册服务可用,但是带来的后果是 Eureka 会放弃强一致性,但这并不是完全放弃数据一致性,数据的最终一致性还是可以保障的。

相信通过前几期的文章,您已经了解到不同注册中心的特点差异了,在一致性方面,市面主流服务注册中心的的对比如下:

FLTM 通过 iApps LX  Eureka 的融合实现服务发现

随着架构技术的演进,分布式、微服务架构越来越流行,为如何把敏态的微服务组件与传统 F5 硬件负载均衡设备联动,是基础架构团队、网络团队、应用开发团队三者面临的一个难题。现在我们可以利用 F5 上的 iApps LX 组件,使 F5 负载均衡设备和第三方注册中心 Eureka 通信,实时获取在 Eureka 上注册的微服务组件信息,同时在 F5 设备上创建维护 Pool。

具体流量交互过程:

我们给提前定义好的接口发送一个创建服务的请求,POST 请求的 payload 为 json 格式的 template,这个 template 的内容是支持我们自定义的,在这里我们需要包含服务发现的类型,比如我们指定 Eureka。我们还要在这个 json 里面提供 Eureka 的 ip 地址,需要发现的服务名等。

当我们 iApps LX 组件收到这个 POST 请求的时候,就会触发 iApps LX 里定义的事件函数,去向服务注册中心发送 REST 请求,拿到数据。当然这个过程也完全支持用图形化界面 GUI 的方式配置。

MSDA for Eureka 的配置过程

与前几篇文章介绍的操作方式相似,在创建之前,我们需要设置好 Eureka 注册中心。

然后我们就开始 F5 的配置。

1

第一步

我们需要在 BIG IP 的 iApps LX 模块中导入事先下载好的 f5-iapplx-msda-eureka rpm 包

2

第二步

上传完成后会生成一个新的msdazk 的 Templetes,点击查阅 iApps LX->Templates->Templates LX

3

第三步

然后我们就可以通过 iApps LX->Application Services->Application LX 创建我们的服务

4

第四步

我们需要在 GUI 上填入对应信息,如 Eureka 的 IP 地址,端口,以及要访问的 URL,

我们还可以配置负载均衡算法及健康检查,如下图:

5

第五步

设置完毕,GUI 会将我们填入的信息自动生成一份 Json 文件,如下图所示:

以下 json 文件为示例,具体以实际生成为准:

{"id": "6f718f63-f5c5-375f-b8eb-fee761520c5b","name": "","inputProperties": [{"id": "eurekaEndpoint","type": "STRING","value": "http://10.1.10.9:8080","metaData": {"description": "eureka endpoint list, include authtication information if applicable. eg. http://user:pass@1.1.1.1:8761","displayName": "eureka endpoints","isRequired": true}},{"id": "servicePath","type": "STRING","value": "/eureka/apps/","metaData": {"description": "Service path of your eureka server","displayName": "Service path in registry","isRequired": true}},{"id": "serviceName","type": "STRING","value": "msda-demo-service","metaData": {"description": "Service name to be exposed","displayName": "Service Name in registry","isRequired": true}},"dataProperties": [{"id": "pollInterval","type": "NUMBER","value": 30,"metaData": {"description": "Interval of polling from BIG-IP to registry, 30s by default.","displayName": "Polling Invertal","isRequired": false}}],"configurationProcessorReference": {"link": "https://localhost/mgmt/shared/iapp/processors/msdaeurekaConfig"},"auditProcessorReference": {"link": "https://localhost/mgmt/shared/iapp/processors/msdaeurekaEnforceConfiguredAudit"},"audit": {"intervalSeconds": 60,"policy": "ENFORCE_CONFIGURED"},"sourcePackage": {"packageName": "f5-iapplx-msda-eureka-0.0.3-0004.noarch"},"configProcessorTimeoutSeconds": 30,"statsProcessorTimeoutSeconds": 15,"configProcessorAffinity": {"processorPolicy": "LOAD_BALANCED","affinityProcessorReference": {"link": "https://localhost/mgmt/shared/iapp/processors/affinity/load-balanced"}},"state": "TEMPLATE","lastUpdateMicros": 1662020040184764,"kind": "shared:iapp:blocks:blockstate","selfLink": "https://localhost/mgmt/shared/iapp/blocks/6f718f63-f5c5-375f-b8eb-fee761520c5b","generation": 5}

▼可上下滑动查看全部内容

6

第六步

我们点击 Deploy,则 iApps LX 服务就可以成功部署了。部署完成如下图:

检查Pool的创建

Pool 的详情如下

通过在 Local Traffic 中新建 Virtual Servers,这样我们就向外部用户或传统应用实现了微服务应用的暴露。

利用 MSDA 实现基于 Eureka 的平台的服务发现,可以让现有单体架构可以快速融入分布式机构,并且打通传统负载均衡设备与微服务架构的隔阂。

F5 对接 Eureka 实现服务发现相关推荐

  1. API 网关 Apache APISIX 集成 Eureka 作为服务发现

    微服务架构中,大型复杂的系统按功能或者业务需求垂直切分成更小的子系统,这些子系统以独立部署的子进程存在,它们之间通过网络调用进行通信.这些独立部署的服务如何发现对方成为了首先要解决的问题,所以在微服务 ...

  2. 【过程记录】springcloud配置使用Eureka作服务发现组件并进行微服务注册

    Eureka介绍 工具准备 步骤 编写eureka server 编写微服务应用: 查询指定微服务在Eureka上的实例列表 Eureka的自我保护模式 Eureka介绍 Eureka是Netflix ...

  3. SpringCloud系列--eureka(三)服务发现DiscoveryClient

    对于注册到Eureka的微服务,可以通过服务发现来获得该服务的信息. 下面将介绍如何使用DiscoveryClient获取注册中心上的实例信息. 1.Controller中注入DiscoveryCli ...

  4. Spring Cloud Netfilx Eureka(服务发现工具)

    一.架构 (1)单体架构 单体架构就是一个项目里面包含这个项目中全部代码.一个应用程序完成全部功能的实现. 优点 部署简单.维护方便.开发成本低. 缺点 当项目规模大.用户访问频率高.并发量大.数据量 ...

  5. SpringCloud组件:Eureka的服务发现与消费

    在之前的章节我们已经把服务注册到Eureka Server,那么我们该怎么调用已经注册后的服务呢? 我们本章来简单的介绍我们具体该怎么调用服务节点请求内容. 本章目标 消费Eureka注册的服务节点的 ...

  6. 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端

    1.     服务发现:Eureka客户端 服务发现是微服务架构的关键原则之一.使用手动配置或一些约定方式来处理多服务多实例的方式是非常困难,并且十分脆弱的.Eureka同时是Netflix服务发现的 ...

  7. [享学Eureka] 一、源生Eureka介绍 --- 基于注册中心的服务发现

    凡事皆有代价,一切皆是取舍. 本专栏所有文章均计划逐步重写搬迁至本人公号:Java方向盘,且免费开放!故不再建议下单购买,可关注我公号前往免费学习.交流 –> 返回Netflix OSS套件专栏 ...

  8. 微服务系列:服务发现与注册-----Eureka(面试突击!你想了解的Eureka都在这里.持续更新中......)

    1.什么是落地SOA(面向服务架构)? SOA面向服务架构,是一种架构思想,是跨语言和平台的.SOA宗旨简单明了,根据项目服务完成架构搭建,以服务为基准点完成组件化和模块化.提供服务是项目的基本内容, ...

  9. Netflix Eureka 简介、架构原理、及服务发现

    目录 Netflix Eureka 简介 spring-cloud-netflix 简介 Eureka 原理 服务发现 客户端发现模式 服务端发现模式 服务注册表 自注册方式 第三方注册模式 总结 N ...

最新文章

  1. 纪念乔布斯,推出四期iPad、iphone赠书活动【第一期】
  2. python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...
  3. 基于jQuery/zepto的单页应用(SPA)搭建方案
  4. 雾计算精华问答 | 雾计算是如何构成的?
  5. android 按钮控制线程,关于手机安卓-线程测试
  6. 面试:Zookeeper
  7. Vue「四」—— 组件生命周期、数据共享
  8. 力控批量添加变量_力控变量.ppt
  9. 开机动画,铃声添加制作
  10. 倾斜摄影三维建模全流程
  11. Linux用户和权限管理看了你就会用啦
  12. Runtime源码剖析-对象
  13. [转载]中华桥梁先驱——茅以升
  14. 10万级半导体无尘车间尘埃粒子检测器
  15. HUANAN-X99-QD4 E5 2698V3 笔记本电脑 Hackintosh 黑苹果efi引导文件
  16. bmp图片显示(任意位置任意大小)
  17. Python高级编程-如何将多个小字符串拼接成一个大的字符串?
  18. 上海电力学院计算机研究生就业去向,上海电力大学是一所普通高校,考上了好就业、有前途吗?...
  19. 解决VMware 12安装VMware Tools后共享文件夹不出现的问题
  20. ​Xilinx UltraScale 介绍与产品选型

热门文章

  1. “文件创建错误-参数错误”解决办法
  2. 简明量子力学的学习 量子计算 笔记量子概念
  3. css之 vertical-align用法详解
  4. 后端思维篇:手把手教你写一个并行调用模板
  5. 微信小程序运营系列(一)
  6. multiple definition of 问题解决方法
  7. Appium日记20161031 徐慧迅
  8. 移动端开发网页时,有部分字体无故变大或变小
  9. Stephen 博客开通
  10. excel版本号对应