技术架构
Rainbond 技术架构
Rainbond 践行以应用为中心的理念,吸纳优秀的社区解决方案,形成了应用控制、应用运行时,集群控制三大模块结合的数据中心逻辑技术架构,结合以管理节点、计算节点、网关节点、存储节点给类节点类型划分的物理架构形成高可用、高扩展性的数据中心架构体系。
在数据中心架构之上,根据使用目标人群划分为应用管理控制终端和资源管理控制终端,来分别服务于应用开发运维者和资源使用者。支撑用户同时管理和控制多个数据中心的多数据中心模式。
数据中心服务组件说明
数据中心 API 服务
API 服务作为数据中心级抽象的核心控制服务,对外提供 Restful 风格的 API 服务,是数据中心控制请求的唯一入口,安全控制基于 TLS 双向安全认证。自主签发证书后分发到客户端。
API 服务请求进入后由 router 模块进行请求分发,普通请求进入 Handle 请求处理模块,这类请求主要是操作数据库模型的请求,API 服务基于 ORM 支持 Mysql 数据库和 CockroachDB 数据库。进入 Proxy 的请求分为 API 请求和 Websocket 请求。由 Discover 模块通过 etcd 服务发现其代理目标并转发请求。因此其他组件提供的 API 可通过服务注册由 API 服务代理转发请求。
应用网关服务
应用网关是外部流量进入 Rainbond 租户内部组件的唯一入口, 提供 HTTP, HTTPs 路由, TCP/UDP 服务, 负载均衡器, 高级路由(A/B 测试, 灰度发布),虚拟 IP 支持等功能.
应用网关的设计灵感来自于 NGINX Ingress Controller, 基于从 kube-apiserver 将监听到的 Kubernetes 资源(Ingress, Service, Secret, Endpoint)模型转化为 Proxy 控制器的配置,提供一种自动工作、实时 生效、动态热配置的 7 层、4 层网关服务。
应用网关可以通过水平扩展的方式来增加并发能力和基础性能,通用配置在所有网关节点中同步生效。对于 74IP+
单节点应用网关服务的架构目标是支持多种数据源、支持多 IP、支持高并发能力、支持多 Server 能力、支持动态配置变化能力。基于此需要应用网关架构设计如下:
应用网关服务集成 Openresty 服务作为前置流量代理服务,基于 lua 对 Openresty 实现功能扩展,Lua-Config-Controller 实现对 Openresty 的动态配置、Upstream 管理、负载均衡策略实现, Lua-Monitor-Controller 实现对请求数据的记录和汇总上报、Lua-Security-Controller 实现对请求的安全控制。三个 Lua 模块由 Openresty-Controller 驱动工作,Metric-Controller 模块汇聚网关的各类监控数据并向外暴露 Prometheus 规范的 Metric-Server。Openresty-Controller 由数据驱动,数据来源于 Gateway-Model-Controller,两层无耦合关系,其实现了标准的接口规范。根据需要我们可以实现基于其他 proxy 服务的驱动器,比如 F5。
应用网关的数据模型来源支持 kubernetes 的 ingress 模型或从 etcd 中发现精简模型,由数据发现服务驱动整个网关动态工作。IP 是网关的重要资源,IP-Port-Pool 模块启动后将获取当前集群的所有可用 IP 地址和端口,并建立对 IP 地址变化的感知,IP-Manage 模块将根据 IP 和端口数据判断网关策略是否在当前节点生效。