Appearance
负载均衡
orapis 集群默认启用负载均衡功能,当客户端以 集群请求方式 访问集群中的任意节点时,系统会依据所配置的负载均衡算法,将请求分配至集群内的空闲节点,从而实现资源的高效利用与服务的稳定运行。
客户端访问 orapis-engine 服务时,可以 集群请求 和 单机请求 两种不同的方式进行访问:
集群请求 :被请求节点作为负载均衡服务器,通过负载均衡算法分配请求到集群内的某节点。
单机请求 :被请求节点的 orapis-engine 直接处理请求,不进行集群负载均衡的转发。
使用以下不同的访问方式,以实现不同的请求:
集群请求方式 :以 6638
端口进行请求。 例: http://192.168.2.10:6638/api/getInfo
。
单机请求方式 :以 6636
端口进行请求。 例: http://192.168.2.10:6636/api/getInfo
。
支持的负载均衡算法:
SWRR(加权最短请求响应轮询)
基于加权轮询的算法,适用于性能不均的服务器或负载不均的场景。
Round Robin(轮询)
经典的轮询算法,适用于负载均衡的服务器配置相似、负载均衡需求较低的场景。
Least Connections(最少连接数)
根据每个节点当前的连接数分配请求,适合处理长连接或高负载的服务。
选择适合的负载均衡算法,依据您的服务器性能、请求的性质以及系统架构来做决定。
测试示例
环境准备
服务器 :预先准备三台 Linux 服务器,并在其上安装 Ubuntu 系统。
网络环境 :三台服务器需处于同一网络环境下。 IP 地址依次为:192.168.2.28
、192.168.2.38
、192.168.2.48
。 下文中分别将服务器称为 “28服务器” 、“38服务器” 和 “48服务器”。
配置中心 Tendis :在同一网络环境中准备一个提供 Tendis 数据库服务的服务器。 IP 地址为 192.168.2.29
,Tendis 访问端口为 51002
,访问密码为 123
。
示例环境准备情况如下图:

集群配置
根据操作步骤(点击 此处 跳转 Linux 操作文档),分别为 集群 范围内的各服务器 安装 、启动 orapis-engine ,并 登录 各服务器的管理网页。
根据操作步骤(点击 此处 跳转操作文档),分别为各服务器 orapis-engine 完成 注册 。
创建集群
登录 28服务器 的 orapis-engine 管理网页,在集群配置界面中创建集群:
填写预备的 Tendis 配置。
当前示例不启用高可用配置,所以直接以服务器真实IP 192.168.2.28
作为浮动IP即可。
不启用高可用配置时,浮动IP的配置对集群管理与使用无特殊作用,所以填写集群内任一服务器的真实IP即可。

添加节点
分别为集群添加 38服务器 和 48服务器:


创建完成的集群:

创建完成后,28服务器、38服务器、48服务器 都处于集群内,客户端可通过 IP192.168.2.28
访问集群。
集群结构图为:

服务设计
准备一个获取并返回服务器 IP 地址和请求端口的服务,通过请求集群查看实际处理请求消息的服务器,以验证请求是否被集群真实地进行负载均衡的转发。
使用 orapis-design 进行服务开发:

服务设计流程如下:
添加 获取请求的服务器地址控件
添加 获取请求的服务器端口号控件
添加输出控件 返回数据格式设置为:
json{ "IP": "#{serverIP}", "Port": "#{serverPort}" }
{ "IP": "#{serverIP}", "Port": "#{serverPort}" }
服务部署
服务开发完成后,提交、打包 并到 28服务器 orapis-engine 后台管理网页上 部署 服务包。
部署时,该服务包会被同时同步到集群内的所有其它节点上的 orapis-engine 。
通过不同的IP访问各服务器节点的 orapis-engine 管理网页,查看APP发布界面,观测到服务包被正确地同步部署到所有节点。
28服务器 :

38服务器 :

48服务器 :

服务访问
根据服务访问 Url 的拼接规则,可获得该示例服务的访问 Url 为: http://engine_ip:port/clusterExample/getServerInfo
。
我们以调用 28服务器 为例,即以上 Url 的 engine_ip
替换成 192.168.2.28
。
以下对服务分别进行 单机请求 和 集群请求 的调用测试:
单机请求
单机请求时,访问端口需为 6636
,所以最终的访问 Url 为: http://192.168.2.28:6636/clusterExample/getServerInfo
。
在任一客户端,使用 curl 命令请求服务:
$ curl http://192.168.2.28:6638/clusterExample/getServerInfo
$ curl http://192.168.2.28:6638/clusterExample/getServerInfo
调用结果如下:

通过调用记录可以发现,通过 6636
端口调用服务时,输出消息 IP 和 Port 始终跟请求 IP192.168.2.28
、端口6636
一致,说明处理请求的服务器始终是我们所调用的服务器。
集群请求
集群请求时,访问端口需为 6638
,所以最终的访问 Url 为: http://192.168.2.28:6638/clusterExample/getServerInfo
。

通过调用记录可以发现,通过 6638
端口调用服务时,输出消息 IP 分别有 192.168.2.28
、192.168.2.38
、192.168.2.48
,即说明实际处理请求的服务器一直在集群范围内变换,并且调用端口都统一为了单机请求的端口 6636
。
说明在通过 集群请求方式 调用服务时,所调用的服务器作为负载均衡服务器,根据负载均衡算法分配请求给集群内的服务器,并且在分发请求的过程中,是以 单机请求方式 调用 6636
端口进行的。