Skip to main content

V平台集群服务部署方案

1. 概览

1.1 概要说明

传统的单节点中心服务器虽然应用集中、部署简单、管理方便,但缺点也是非常显而易见,一旦节点出现异常,则全部应用受到影响,还有系统的可扩展性/可靠性/性能较差,不能满足日益剧增的用户所带来高吞吐量,高并发的使用场景,因此我们通过多节点集群技术,构成分布式系统,让每个节点都可以承担一定的处理负载,提高系统性能,降低设备成本,提高可扩展性和增强可靠性。

1.2 总体部署图

img

1.3 集群搭建总体流程

img

2. 集群节点规划

2.1 基本软硬件需求

搭建V平台集群环境,需要单独准备以下中间件服务:(数据库、mongodb、redis、neo4j、负载均衡服务)、明确V服务节点数量、计算机主机硬件配置、网络配置、以及服务部署规划。

集群环境推荐使用的中间件版本及配置需求见下表:(注意推荐版本并不涵盖平台支持的所有中间件类型、操作系统等)

img

2.2 集群节点规划样例

集群节点规划参考样例表:

img

此处将各服务节点放到了不同服务器上,实际项目也可以根据需求进行调整,把多个服务部署到一个集群节点(一台服务器);节点的规划主要依据服务器的硬件配置资源。

3. 中间件准备

3.1 数据库准备

V平台支持常见的各种数据类型:mysql、oracle、sqlserver、db2、postgresql、达梦数据库、gbase等

请按照各种数据库的部署手册完成数据库环境搭建、以及数据库配置。

具体参考银弹谷官网文档:v-appserver/应用服务器安装/配置数据库

3.2 mongo准备

V平台服务器版已内置包含mongo4.4服务器软件包,可从V平台安装目录下提取,例如:V-AppServer\V3Runtime\conf\setting\mongo\bin

启动配置信息修改,以下以Windows环境为例:

修改startup.bat脚本,修改并添加以下信息

 --port 28019               #mongo端口,按需修改
--wiredTigerCacheSizeGB 1 #mongo内存大小设置为1GB,可以根据实际情况进行设置;
--bind_ip=0.0.0.0 #允许所有ip访问mongo(否则只能本机通过127.0.0.1访问)

img

Mongo服务启动完,在局域网其他节点下执行如下命令检查mongo端口访问是否成功:

(在局域网其他节点) Cmd ---> 输入telnet ip 端口号

如果没有显示拒绝访问的话则说明端口可以正常访问

3.3 redis准备

V平台服务器版已内置包含redis3.2软件包,可从V平台安装目录下提取,例如:V-AppServer\V3Runtime\conf\setting\redis

启动配置信息修改,以下以Windows环境为例:

去掉stratup.sh里面的注释,使之可单独启动;在redis.conf文件中修改端口,按需修改

img

img

3.4 neo4j准备

在银弹谷官网提供了 已配置好的 neo4j 5.5 社区版 (内含JDK17、以及平台扩展插件)。

详细参考银弹谷官网文档:v-appserver/应用服务器安装/部署独立neo4j服务

4. 搭建负载均衡服务

4.1 简要说明

V平台集群环境负载均衡服务搭建有两种选择,nginx、或者V平台网关服务。

·Nginx方案

选择nginx的优势是成熟、稳定。但当后端集群节点发生变化时(节点增加/下线/临时不可用),需要手工在配置文件中维护更新。

·V平台网关服务

V平台服务网关内置了SpringCloud网关、负载均衡、服务注册中心组件(使用nacos)。V平台服务节点也提供了自主注册到nacos服务的支持。

这样,网关服务无须配置具体V服务节点,就可以感知V平台服务状态(节点新增、下线、服务故障),无须更新网关服务的配置,就可以实现对后端服务的重新分流效果。

4.2 V服务网关(推荐)

4.2.1 网关服务环境搭建

网关服务环境搭建以及服务启动运行,参考银弹谷官网文档:v-appserver/系统高级配置/治理服务/5 网关服务

4.2.2 集群应用注册

1、启动网关服务与nacos服务

进入 网关服务-网关服务管理 ,启动网关服务,并为网关服务地址映射一个域名;

进入 网关服务-Nacos服务中心管理,启动nacos服务;

img

img

2、注册应用

说明

这里的 应用,类似于微服务中的一个服务(或子系统),可以是单体应用,也可以是集群。各个应用的服务实例通过nacos客户端自行注册到nacos注册中心。网关服务则通过nacos实现服务发现和各服务实例状态的动态感知。

进入“网关服务-注册应用服务”,新增一个应用。具体填写内容说明如下:

应用服务编码:作为应用的唯一标识,在网关服务内保持唯一即可;另外,该应用编码也是V服务节点向nacos注册中心注册时的标识;

应用服务名称:任意填写,供阅读使用;

应用域名:如果网关服务同时服务于多个应用(或子系统),那么“域名”的作用就是用来区分网关服务收到的请求属于哪一个应用的。如果网关服务只包含一个应用,此处的域名可以不填写(默认匹配);否则需要填写集群的访问地址(通常情况下,集群的访问地址也是网关服务的域名或IP)。 注意:后续对集群的请求就需要使用此处注册的地址。当请求到达网关服务时,网关服务将依据请求的 Host和应用域名的匹配关系决定当前请求属于哪一个应用。找到应用之后,然后再根据“应用编码”从nacos注册中心查找可用的集群节点,将请求依据特定的负载均衡策略转发给最终某一个节点。

注意

一个集群只注册一条应用信息即可。

img

4.2.3 集群节点状态查询

在V服务网关中,可以查看到已注册的集群节点、以及这些节点当前是否活跃(健康状态)。同时也可以修改集群节点的权重(影响负载均衡)。

网关服务/nacos服务刚启动时,下面查询数据为空。当V-AppServer集群节点配置完成后,将会自动注册到nacos服务。可通过以下方式查询集群节点状态、修改节点权重。

  • 访问注册中心nacos地址 如:http://ip:8848/nacos 登录帐号密码:nacos/nacos

  • 选择菜单 服务管理 - 服务列表,可以看到目标集群的节点数(即实例数、健康实例数)

  • 当执行系统新增删除节点、上线或者维护时,实例状态会变化。

  • 点开详情,可以看到具体的集群节点信息。我们可以维护节点权重,来影响负载均衡结果。

img

4.2.4 负载均衡策略

缺省的负载均衡策略,是按照权重分配给健康节点(节点权重可修改);

另外同一个会话的请求会分派给同一个节点;

img

4.3 nginx搭建

详细操作参考银弹谷官网安装教程:v-appserver/应用服务器安装/Nginx配置

搭建好nginx后,在nginx的conf目录下添加集群参数,如下图,标红部分需要添加进代码块里,Nginx的upstream支持5种分配方式,此处的分配模式用了轮询模式,其余模式可按需进行配置,配置完成后需要重启nginx生效;

注:集群采用的是sticky模块,此模块不内置在原生nginx代码里,需要单独安装。

img

5.V-AppServer集群配置

5.1 简要说明

V-AppServer的集群配置包括以下内容:

  • 集群基本配置

  • 中间件配置:包含数据库、mongo、redis、neo4j的配置

  • 服务注册配置:这一项是配合使用V服务网关时独有的。主要目的是将V服务节点自主注册到网关服务的nacos注册中心,这样,无须对网关服务进行配置修改,网关服务就能“自动发现”有效的集群节点。(使用nginx做负载均衡时无须配置此项内容)

其中,数据库在启动向导中配置,其他均在配置中心完成,访问菜单: 系统高级配置 -> 系统维护 -> 集群和中间件配置

img

5.2 数据库配置

V-AppServer首次启动时,在启动向导界面,配置数据库信息,等待启动完成

img

5.3 集群基本配置

打开开启集群,点击加载集群推荐配置保存配置信息

img

5.4 其他中间件配置

5.4.1 Rdis配置

填写redis的ip端口密码默认,保存配置数据

img

5.4.2 MongoDB配置

填写mongodb的ip端口,选择对应版本保存配置数据; 需要用户验证时再开启用户验证

img

5.4.3 neo4j配置

  • 图库实现模式:选择独立模式

  • Neo4j服务地址:neo4j所在服务地址,格式:bolt://ip:端口

  • 用户、密码:填写设定的用户名和密码

img

5.5 服务注册(仅适用于V服务网关)

这部分是配合使用V服务网关时独有的。主要目的是将V服务节点自主注册到网关服务的nacos注册中心,这样,无须对网关服务进行配置修改,网关服务就能“自动发现”有效的集群节点。

当按以下方法将V-AppServer集群节点注册到nacos服务中心时,就可以通过网关服务查询到已注册的集群节点了.

5.5.1 方法一

  • 集群标识:在 网关服务 - 注册应用服务 中注册的服务编码

  • Nacos服务中心地址:在 网关服务 - Nacos服务中心管理 中的地址

填写完本服务的ip本服务的端口号,点击注册服务,上方状态自动改为服务已注册

img

5.5.2 方法二

通过设置节点服务启动脚本,实现自动注册

按需修改参数,加入setoptions.cmd

 -DnacosServerUrl=10.1.28.170:8848 -DregisterServiceCode=node

img

服务启动完毕可在集群和中间件配置看到状态改为“服务已注册”

6. 节点动态伸缩(仅适用于V服务网关)

这里的动态伸缩,是指无须修改负载均衡配置、或其他集群节点配置,只需新增节点完成配置注册,负载均衡服务就可以自动感知集群节点的变化。这个特性只适用于V服务网关模式。如果使用nginx作为服务均衡服务,需要同时对nginx配置进行调整。

6.1 新增

只需要添加新节点,集群其他组件无须做出调整即可完成集群的扩容,过程如下:

1、从其他集群节点拷贝执行系统安装内容;

2、启动新的节点;

3、重新进行服务注册,参考章节 5 V-AppServer集群配置

4、当前节点将自动注册到集群中,通过网关服务,按特定策略参与集群服务。

6.2 下线

当前节点关闭,即可自动从集群中剥离,负载均衡会自动感知节点离线。

6.3 升级

需逐一升级,一个执行系统升级重启完成再操作下一个。

7. 其他注意事项

  • 定时任务:多个实例存在相同的定时任务,会造成重复启动定时任务,造成数据的错乱。

操作方式:手动关闭其他节点的定时任务,只保留一个节点的定时任务

  • 用户配置项:目前配置项仅存在服务本地文件,如果要改动配置项,则需要多节点同步去手动修改

操作方式:手工去各节点的用户配置内添加所需的参数配置,保持完全一致

  • 重启机制:不支持多个节点同时重启

操作方式:采用交替升级,A节点重启完成后才能进行B节点升级重启