V平台集群服务部署方案
1. 概览
传统的单节点中心服务器虽然应用集中、部署简单、管理方便,但缺点也是非常显而易见,一旦节点出现异常,则全部应用受到影响,还有系统的可扩展性/可靠性/性能较差,不能满足日益剧增的用户所带来高吞吐量,高并发的使用场景,因此我们通过多节点集群技术,构成分布式系统,让每个节点都可以承担一定的处理负载,提高系统性能,降低设备成本,提高可扩展性和增强可靠性。
2. 集群节点规划
搭建V平台集群环境,需要单独准备以下中间件服务:(数据库、mongodb、redis、neo4j、负载均衡服务)、明确V服务节点数量、计算机主机硬件配置、网络配置、以及服务部署规划。
集群环境推荐使用的中间件版本及配置需求见下表:(注意推荐版本并不涵盖平台支持的所有中间件类型、操作系统等)
集群节点规划参考样例表:
此处将各服务节点放到了不同服务器上,实际项目也可以根据需求进行调整,把多个服务部署到一个集群节点(一台服务器);节点的规划主要依据服务器的硬件配置资源。
3. 中间件准备
V平台支持常见的各种数据类型:mysql、oracle、sqlserver、db2、postgresql、达梦数据库、gbase等
请按照各种数据库的部署手册完成数据库环境搭建、以及数据库配置。
具体参考银弹谷官网文档:v-appserver/应用服务器安装/配置数据库
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访问)Mongo服务启动完,在局域网其他节点下执行如下命令检查mongo端口访问是否成功:
(在局域网其他节点) Cmd ---> 输入telnet ip 端口号
如果没有显示拒绝访问的话则说明端口可以正常访问
V平台服务器版已内置包含redis3.2软件包,可从V平台安装目录下提取,例如:
V-AppServer\V3Runtime\conf\setting\redis
启动配置信息修改,以下以
Windows环境
为例:去掉
stratup.sh
里面的注释,使之可单独启动;在redis.conf
文件中修改端口,按需修改
在银弹谷官网提供了 已配置好的 neo4j 5.5 社区版 (内含JDK17、以及平台扩展插件)。
详细参考银弹谷官网文档:v-appserver/应用服务器安装/部署独立neo4j服务
4. 搭建负载均衡服务
V平台集群环境负载均衡服务搭建有两种选择,nginx、或者V平台网关服务。
·Nginx方案
选择nginx的优势是成熟、稳定。但当后端集群节点发生变化时(节点增加/下线/临时不可用),需要手工在配置文件中维护更新。
·V平台网关服务
V平台服务网关内置了SpringCloud网关、负载均衡、服务注册中心组件(使用nacos)。V平台服务节点也提供了自主注册到nacos服务的支持。
这样,网关服务无须配置具体V服务节点,就可以感知V平台服务状态(节点新增、下线、服务故障),无须更新网关服务的配置,就可以实现对后端服务的重新分流效果。
网关服务环境搭建以及服务启动运行,参考银弹谷官网文档:v-appserver/系统高级配置/治理服务/5 网关服务
1、启动网关服务与nacos服务
进入 网关服务-网关服务管理 ,启动网关服务,并为网关服务地址映射一个域名;
进入 网关服务-Nacos服务中心管理,启动nacos服务;
2、注册应用
说明这里的 应用,类似于微服务中的一个服务(或子系统),可以是单体应用,也可以是集群。各个应用的服务实例通过nacos客户端自行注册到nacos注册中心。网关服务则通过nacos实现服务发现和各服务实例状态的动态感知。
进入“网关服务-注册应用服务”,新增一个应用。具体填写内容说明如下:
应用服务编码
:作为应用的唯一标识,在网关服务内保持唯一即可;另外,该应用编码也是V服务节点向nacos注册中心注册时的标识;
应用服务名称
:任意填写,供阅读使用;
应用域名
:如果网关服务同时服务于多个应用(或子系统),那么“域名”的作用就是用来区分网关服务收到的请求属于哪一个应用的。如果网关服务只包含一个应用,此处的域名可以不填写(默认匹配);否则需要填写集群的访问地址(通常情况下,集群的访问地址也是网关服务的域名或IP)。 注意:后续对集群的请求就需要使用此处注册的地址。当请求到达网关服务时,网关服务将依据请求的 Host和应用域名的匹配关系决定当前请求属于哪一个应用。找到应用之后,然后再根据“应用编码”从nacos注册中心查找可用的集群节点,将请求依据特定的负载均衡策略转发给最终某一个节点。注意一个集群只注册一条应用信息即可。
在V服务网关中,可以查看到已注册的集群节点、以及这些节点当前是否活跃(健康状态)。同时也可以修改集群节点的权重(影响负载均衡)。
网关服务/nacos服务刚启动时,下面查询数据为空。当V-AppServer集群节点配置完成后,将会自动注册到nacos服务。可通过以下方式查询集群节点状态、修改节点权重。
访问注册中心nacos地址 如:
http://ip:8848/nacos
登录帐号密码:nacos/nacos
选择菜单 服务管理 - 服务列表,可以看到目标集群的节点数(即实例数、健康实例数)
当执行系统新增删除节点、上线或者维护时,实例状态会变化。
点开详情,可以看到具体的集群节点信息。我们可以维护节点权重,来影响负载均衡结果。
详细操作参考银弹谷官网安装教程:v-appserver/应用服务器安装/Nginx配置
搭建好nginx后,在nginx的conf目录下添加集群参数,如下图,标红部分需要添加进代码块里,Nginx的upstream支持5种分配方式,此处的分配模式用了轮询模式,其余模式可按需进行配置,配置完成后需要重启nginx生效;
注:集群采用的是sticky模块,此模块不内置在原生nginx代码里,需要单独安装。
5.V-AppServer集群配置
V-AppServer的集群配置包括以下内容:
集群基本配置
中间件配置:包含数据库、mongo、redis、neo4j的配置
服务注册配置:这一项是配合使用V服务网关时独有的。主要目的是将V服务节点自主注册到网关服务的nacos注册中心,这样,无须对网关服务进行配置修改,网关服务就能“自动发现”有效的集群节点。(使用nginx做负载均衡时无须配置此项内容)
其中,数据库在启动向导中配置,其他均在配置中心完成,访问菜单: 系统高级配置 -> 系统维护 -> 集群和中间件配置。
这部分是配合使用V服务网关时独有的。主要目的是将V服务节点自主注册到网关服务的nacos注册中心,这样,无须对网关服务进行配置修改,网关服务就能“自动发现”有效的集群节点。
当按以下方法将V-AppServer集群节点注册到nacos服务中心时,就可以通过网关服务查询到已注册的集群节点了.
集群标识:在 网关服务 - 注册应用服务 中注册的服务编码
Nacos服务中心地址:在 网关服务 - Nacos服务中心管理 中的地址
填写完
本服务的ip
、本服务的端口号
,点击注册服务
,上方状态自动改为服务已注册
6. 节点动态伸缩(仅适用于V服务网关)
这里的动态伸缩,是指无须修改负载均衡配置、或其他集群节点配置,只需新增节点完成配置注册,负载均衡服务就可以自动感知集群节点的变化。这个特性只适用于V服务网关模式。如果使用nginx作为服务均衡服务,需要同时对nginx配置进行调整。
只需要添加新节点,集群其他组件无须做出调整即可完成集群的扩容,过程如下:
1、从其他集群节点拷贝执行系统安装内容;
2、启动新的节点;
3、重新进行服务注册,参考章节 5 V-AppServer集群配置;
4、当前节点将自动注册到集群中,通过网关服务,按特定策略参与集群服务。
7. 其他注意事项
- 定时任务:多个实例存在相同的定时任务,会造成重复启动定时任务,造成数据的错乱。
操作方式
:手动关闭其他节点的定时任务,只保留一个节点的定时任务
- 用户配置项:目前配置项仅存在服务本地文件,如果要改动配置项,则需要多节点同步去手动修改
操作方式
:手工去各节点的用户配置内添加所需的参数配置,保持完全一致
- 重启机制:不支持多个节点同时重启
操作方式
:采用交替升级,A节点重启完成后才能进行B节点升级重启