searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

多活容灾产品接入层 MSFE 的实现调研

2024-04-03 05:33:48
27
0

1.基本信息

MSFE 全称为 MSHA-FRONT-END,由多活容灾产品(MSHA)产品提供的流量网关,负责⼊口流量的分发及路由。MSHA 产品架构上通常将业务系统自上而下分为接入层、应用层和数据层三层。而本文要介绍的 MSFE 主要工作在接⼊层,其核心是⼀个基于 Tengine 的多活组件。

MSFE需要多单元部署,它能承接所有的单元前端流量,并按照路由规则将流量分流到各个单元的后端应⽤。多活控制台提供MSFE集群新建、扩容、缩容等常规运维能⼒。

本⽂介绍如何配置MSFE。官⽹中,MSFE 的配置过程主要就是配置域名,或者ip的信息。 MSFE 是基于Tengine实现的,因此可以推测,我们可以利⽤ Nginx + lua ,或者openresty去实现相同的功能。

2.参考Apache APISIX动态路由的⽅案去实现 MSFE

为了实现路由动态配置,Apache APISIX 做了两件事:

  1. 在 Nginx 配置⽂件⾥⾯配置单个 server,这个 server ⾥⾯只有⼀个 location。我们把这个 location作为主⼊⼝,这样所有的请求都会⾛到这个地⽅上来。
  2. 我们⽤ Lua 完成路由分发的⼯作。Apache APISIX 的路由分发模块,⽀持在运⾏时增减路由,这样就能动态配置路由了。

3.⽅案设计

  • 路由标提取⽅式:【多活接⼊⽹关】从HTTP请求信息中提取路由标的⽅式,⽀持从Parameter/Header/Cookie中提取。需要跟业务系统提前约定提取⽅式,并由业务系统将流量的路由标设置进HTTP请求约定key值中。当流量到达多活接⼊层后由接⼊⽹关进⾏提取识别,以便对流量进⾏路由计算和纠错处理。
  • 路由标解析规则:⽤于定义如何解析路由标的逻辑,表⽰为对路由标的计算,解析规则分为精准和范围两类
    • 精准:路由标解析逻辑没有限制
    • 范围:解析逻辑⽣成的路由标固定落到⼀个数值范围中,如哈希、取模、截取等
  • 路由规则:流量分配规则,与路由标解析规则相对应
    • 精准:采⽤⽩名单的⽅式来配置各单元的路由标名单
    • 范围:按照范围区间来配置各单元的路由规则

4.具体实现步骤

1). 获取http请求中的路由标,其值分为“精确”和“范围”两种。

  1. 从 Parameter 中获取,(demo已实现),路由标key为 “routeflag”,
  2. 从 Header 中获取,
  3. 从 Cookie 中获取,

2). 根据路由标解析规则计算,“精确”的情况设置⽩名单,“范围”的情况设置范围直接转发。

  1. 精确:实现⽩名单的功能,逐个对⽐转发,
  2. 范围:实现哈希值计算,将计算结果落⼊到某个范围中,按照落⼊区间转发
  3. (⽬前demo实现了进⼊判断之后,直接转发)

3). 实现转发功能。(即分流给后端的服务器)

  1. 利⽤ proxy_pass 转发,在 server 层⾯,(demo已实现)。
  2. 利⽤ lua 代码调⽤ nginx 函数进⾏转发

 

0条评论
0 / 1000