集群部署看过来,低代码@AWS智能集群的架构与搭建方案

集群,部署,过来,代码,aws,智能,架构,搭建,方案 · 浏览次数 : 4318

小编点评

4.1 安装中文字体受到版权限制,我们无法为您预置常用的“微软雅黑”等中文字体,如果您需要导出PDF功能,需要手动安装字体,具体方法见 帮助文档的第6节。4.2 安装和配置ngnixnginx负责将各应用的端口统一成8200(可修改,需要和安全组的设置匹配)。首先,我们需要安装nginx。安装完成后,修改ngnix.conf文件sudo apt-get updatesudo apt-get install nginx在http节点下,为管理控制台和每一个应用分别创建upstream# 内置服务指向本机22345固定端口upstream local-us{server localhost:22345;}# 针对每个应用做转发,去掉端口号location ^~ /app\\_e/ {proxy\\_pass http://local-e/app\\_e/;proxy\\_redirect default;}# 针对每个应用做转发,去掉端口号location ^~ /app\\_e/ {proxy\\_pass http://local-e/app\\_e/;proxy\\_redirect default;} 5.1 设置目标群组首先,你需要基于第四步中创建的应用服务器信息设置目标群组。在AWS控制台中选择EC2服务,点击右侧菜单中“负载均衡→目标群组”,点击Create target group按钮,按照下面的推荐值完成配置:target type:IP addressesProtocol/Port:HTTP/8000(8000是集群对外的统一服务端口,可修改)Health check path:/UserService/ManagementPage/LoginPage (内置的页面,更适合用来做健康监测)点击Next按钮,在Step 2区域里,添加步骤4中创建的应用服务器的内网IP,将Ports设置为8200(步骤4中应用服务器的应用端口);点击Include as pending below按钮,将其添加到候选列表,再点击Create target group按钮完成创建。提示:没有关联到负载均衡器之前,targets的heath status都是Unused 5.2 设置负载均衡器在AWS控制台中选择EC2服务,点击右侧菜单中“负载均衡→负载均衡器”,点击“创建负载均衡器”按钮,按照下面的推荐值完成配置:Load balancer types: Application Load BalancerNetwork mapping → Mappings:选择至少2个可用区Security groups: 选择的安全组中需要允许8000端口(集群对外提供服务的端口,可修改)Listeners and routing:监听HTTP,8000端口,Default action选择刚创建的目标群组点击刚创建的负载均衡器,在描述选项卡下的DNS名称,就是集群对外提供服务地址了。步骤6:配置CloudWatch在AWS控制台中选择CloudWatch服务,点击右侧菜单中“应用程序监控→Synthetics Canary”,点击Canary版本区域的“创建Cannary版本”按钮,按照下面的推荐值完成配置:应用程序或端点 URL:添加负载均衡器端点,分别为http://{集群对外提供服务地址}:8000/UserService/ManagementPage/LoginPage,以及每个应用服务的对应的地址http://{应用服务器外网地址}:22345/UserService/ManagementPage/LoginPageCloudWatch告警-可选:选择 失败 | 大于/等于 | 1 | 15分钟设置此Canary版本的通知:创建新主题,输入邮件标题(英文+数字)和你的邮箱地址,点击“创建主题”按钮。点击“创建”按钮后,系统需要一分钟左右的时间进行处理,你需要留意刚才输入的邮箱地址,系统会给你发送一封邮件,点击该邮件上“Confirm subscription”连接,启用邮件通知。文内实例下载地址:https://gcdn.grapecity.com.cn/forum.php?mod=attachment&aid=MjI4NzczfDliZDZlY2ZjfDE2Njk2MDg3MTZ8NjI2NzZ8MTUyOTU1拓展阅读万物皆可集成系列:低代码对接企企云实现数据集成万物皆可集成系列:低代码如何不成为数据孤岛万物皆可集成系列:活字格对接泛微e-cology。归纳总结以上内容,生成内容时需要带简单的排版

正文

为了帮助充分利用AWS的托管服务快速构建起一套集群环境,彻底去掉“单一故障点”,实现最高的可用性,我们准备了《低代码智能集群@AWS的架构与搭建方案》看完本文,带你掌握“基于nginx配置服务器集群”。

应用场景

如果你需要解决如下的问题,可以考虑搭建一套活字格@AWS智能集群:

  • 保障系统高可用,全面降低停服风险
  • 在做好各项性能优化(参考系列教程)的前提下,需要进一步提升性能,以满足大并发量请求的响应速度

集群能力

本方案是低代码与亚马逊AWS提供的一套高可用负载均衡解决方案,在低代码智能集群的基础上,通过引入ALB等托管服务,进一步提升可用性。本方案提供的主要能力如下:

  • 高可用
  • 负载均衡
  • 可用性监控

特别提示:智能集群不兼容内建SQLite数据库,您需要在外联数据库上构建数据表和业务。

搭建方案

集群需要用到亚马逊提供的EC2负载均衡器(ALB模式)、ElasticCache Redis集群、Elastic File Systems、RDS for MySQL、CloudWatch托管服务,还需要用到nginx实现应用服务器内部的端口转发。对上述技术的了解程度,很大程度上决定了您搭建出的集群的安全性、性能和可用性。

网络拓扑简图

为了实现高可用的目标,本方案的应用服务器设计为位于不同可用区的2台EC2,其他托管服务也选择了多可用区的配置。

步骤1:配置EFS

在AWS控制台中选择EFS服务,创建文件系统,点击“自定义”按钮后,按照下面的推荐值完成配置:

  • 存储类:标准
  • 挂载目标:选择至少2个可用区
  • 安全组:选择的安全组中需要允许2049端口(你可以在EC2服务的控制台上找到“网络与安全→安全组”创建一个安全组)

创建完成后,等文件系统的文件系统状态变成“可用”,点击刚创建的文件系统,DNS名称就是用来访问该EFS的地址,记录下来备用。

步骤2:配置RDS

RDS的默认安全设置与活字格不兼容。所以,在创建数据库前,你需要创建参数组,具体做法如下:
在AWS控制台中选择RDS服务,在“资源”区域,点击“参数组”,创建新的参数组,选择和创建RDS时一致的版本,示例中组名和描述都设置为“huozige-aws”。点击创建好的参数组,在搜索框中输入“log_bin_trust_function_creators”,然后点击“编辑参数”按钮,将值修改为1。

然后回到控制台,点击“创建数据库”,点击“标准创建”后,按照下面的推荐值完成配置:

  • 引擎类型:MySQL
  • 版本:MySQL 5.6.x、5.7.x、8.0.x都可以,示例选择的是5.7.38
  • 模板:生产
  • 设置-主密码:你的登录密码,示例设置的是123456
  • 数据库实例类:根据并发用户数、业务数据量和预算选择
  • 分配的存储空间:根据业务数据量选择,需要注意的是活字格不会将用户上传的文件存放的数据库,不占用该存储空间
  • 多可用区实例:创建备用实例
  • 连接-公开访问:是
  • 安全组:选择的安全组中需要允许3306端口
  • 其他设置-参数组:刚创建的huozige-aws

创建完成后,等数据库的状态变成“可用”,点击刚创建的数据库实例,找到连接和安全性选项卡下的“终端节点”,这个就是数据库服务的地址,记录下来备用。使用本地安装的MySQL Workbrench等工具登录到该地址,创建一个userservicedb数据库备用。

步骤3:配置EC Redis

在AWS控制台中选择ElastiCache服务,点击右侧菜单中“资源→Redis集群”,点击“创建Redis集群”后,按照下面的推荐值完成配置:

  • 集群模式:已启用
  • 位置-多可用区:已启用
  • 引擎版本:推荐6.2
  • 节点类型:根据用户数量和预算选择,活字格会使用Redis存储用户会话,示例选择的是cache.t3.medium(3.09GB)
  • 子网组设置:创建新的子网组,确保“已选择 子网”包含不少于2个可用区
  • 安全组:选择的安全组中需要允许6379端口

创建完成后,等集群的状态变成“可用”,点击刚创建的集群,找到“主终端节点”,这个就是Redis的地址,记录下来备用。

步骤4:配置应用服务器

在AWS控制台中选择EC2服务,点击右侧菜单中“实例→实例”,点击“创建新实例”后,按照下面的推荐值完成配置:

  • 镜像:在【亚马逊云科技Marketplace】中搜索“GrapeCity Huozige Lowcode Development Platform”,选择官方提供的AMI镜像
  • 实例类型:根据应用复杂度、并发用户数和预算选择,示例中使用的是t3.meduim,推荐用于简单的部门级应用
  • 子网:应用服务器需要放到不同的可用区,如cn-northwest-1a和cn-northwest-1b
  • 安全组:选择的安全组中需要允许22端口(SSH)、22345端口(活字格应用发布)、8200(用于活字格应用服务器,可以在nginx.conf中修改)
  • ssh证书:妥善保管浏览器下载的pem格式的证书,这是远程登录EC2的唯一凭据。推荐所有EC2共享同一个证书,这样在登录时更方便一些

创建完成后,等实例状态变成“正在运行”后,点击查看详情,私有IPv4地址即内网IP,用于配置负载均衡器;公有IPv4 DNS是外网地址,用于监控(EC2实例停止后重新启动时,公有IPv4地址会发生变化,所以,不能使用这个地址做监控),记录下这两个值备用。点击“连接”按钮,进入SSH客户端选项卡,复制“示例”下的ssh命令,记录备用。

在Windows电脑上,将下载的pem证书拷贝到%homepath%(如C:\Users\Will)下,这里也是Windows终端的启动目录。启动终端,用EC2共的ssh命令就可以远程登录到该服务器,执行下面的安装和配置操作。

4.1 安装中文字体

受到版权限制,我们无法为您预置常用的“微软雅黑”等中文字体,如果您需要导出PDF功能,需要手动安装字体,具体方法见 帮助文档的第6节

4.2 安装和配置ngnix

nginx负责将各应用的端口统一成8200(可修改,需要和安全组的设置匹配)。

首先,我们需要安装nginx。安装完成后,修改ngnix.conf文件

sudo apt-get update
sudo apt-get install nginx

在http节点下,为管理控制台和每一个应用分别创建upstream

# 内置服务指向本机22345固定端口
upstream local-us{
server localhost:22345;
}
# 针对每个应用创建上游,指向本机即可
upstream local-e{
server localhost:8005;
}

然后,在http→server节点下,设置侦听端口,过滤location并转发管理控制台和每一个应用

server {
# 对外的端口号
listen 8200;

server\_name huozige-aws-app-server.com;
proxy\_set\_header   Upgrade $http\_upgrade;
proxy\_set\_header   Connection keep-alive;
proxy\_set\_header   Host $host;
proxy\_cache\_bypass $http\_upgrade;
proxy\_set\_header   X-Forwarded-For $proxy\_add\_x\_forwarded\_for;
proxy\_set\_header   X-Forwarded-Proto $scheme;
proxy\_set\_header   X-Real-IP $remote\_addr;
# 转发内置服务
location ^~ /UserService/ {
proxy\_pass http://local-us/UserService/;
proxy\_redirect default;
}
# 针对每个应用做转发,去掉端口号
location ^~ /app\_e/ {
proxy\_pass http://local-e/app\_e/;
proxy\_redirect default;
}
}

配置文件修改完毕,让nginx做热加载,不中断服务器的前提下,读取新的配置

sudo nginx -s reload

4.3 挂载EFS目录

创建挂载用文件夹 /share,然后修改/etc/fstab文件,再执行重新加载命令,将EFS的文件系统挂载到该文件夹

sudo mkdir /share
sudo vim /etc/fstab
sudo mount -a

/etc/fstab的内容如下,其中fs-0402a832717e9d61e.efs.cn-northwest-1.amazonaws.com.cn为前面创建的NFS的地址:

fs-0402a832717e9d61e.efs.cn-northwest-1.amazonaws.com.cn:/ /share nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,\_netdev 0 0

4.4 配置活字格负载均衡

完成上述环境准备后,我们需要依次登录应用服务的管理控制台站点(http://{应用服务器外网地址}:22345/UserService/ManagementPage/LoginPage),完成集群配置。配置页面在【设置】选项卡的【负载均衡配置】菜单。

  • 开启:勾选,启用负载均衡配置
  • 数据库类型:用户信息数据库的类型,示例中采用MySQL
  • 数据库链接字符串:用户信息数据库的链接字符串,即刚才搭建的支持服务器的RDS的userservicedb数据库
  • Redis服务地址:EC Redis的地址
  • 共享存储路径:用户存储应用和用户上传文件的共享目录,即刚才挂载EFS文件系统的本地目录

步骤5:配置ALB

ALB的配置分为负载均衡器和目标群组两部分。在2022.08版本AWS中,ALB的配置界面大多数是英文。

5.1 设置目标群组

首先,你需要基于第四步中创建的应用服务器信息设置目标群组。

在AWS控制台中选择EC2服务,点击右侧菜单中“负载均衡→目标群组”,点击Create target group按钮,按照下面的推荐值完成配置:

  • target type:IP addresses
  • Protocol/Port:HTTP/8000(8000是集群对外的统一服务端口,可修改)
  • Health check path:/UserService/ManagementPage/LoginPage (内置的页面,更适合用来做健康监测)

点击Next按钮,在Step 2区域里,添加步骤4中创建的应用服务器的内网IP,将Ports设置为8200(步骤4中应用服务器的应用端口);点击Include as pending below按钮,将其添加到候选列表,再点击Create target group按钮完成创建。

提示:没有关联到负载均衡器之前,targets的heath status都是Unused

5.2 设置负载均衡器

在AWS控制台中选择EC2服务,点击右侧菜单中“负载均衡→负载均衡器”,点击“创建负载均衡器”按钮,按照下面的推荐值完成配置:

  • Load balancer types: Application Load Balancer
  • Network mapping → Mappings:选择至少2个可用区
  • Security groups: 选择的安全组中需要允许8000端口(集群对外提供服务的端口,可修改)
  • Listeners and routing:监听HTTP,8000端口,Default action选择刚创建的目标群组

点击刚创建的负载均衡器,在描述选项卡下的DNS名称,就是集群对外提供服务地址了。

步骤6:配置CloudWatch

在AWS控制台中选择CloudWatch服务,点击右侧菜单中“应用程序监控→Synthetics Canary”,点击Canary版本区域的“创建Cannary版本”按钮,按照下面的推荐值完成配置:

  • 应用程序或端点 URL:添加负载均衡器端点,分别为http://{集群对外提供服务地址}:8000/UserService/ManagementPage/LoginPage,以及每个应用服务的对应的地址http://{应用服务器外网地址}:22345/UserService/ManagementPage/LoginPage
  • CloudWatch告警-可选:选择 失败 | 大于/等于 | 1 | 15分钟
  • 设置此Canary版本的通知:创建新主题,输入邮件标题(英文+数字)和你的邮箱地址,点击“创建主题”按钮。

点击“创建”按钮后,系统需要一分钟左右的时间进行处理,你需要留意刚才输入的邮箱地址,系统会给你发送一封邮件,点击该邮件上“Confirm subscription”连接,启用邮件通知。

文内实例下载地址:

https://gcdn.grapecity.com.cn/forum.php?mod=attachment&aid=MjI4NzczfDliZDZlY2ZjfDE2Njk2MDg3MTZ8NjI2NzZ8MTUyOTU1

拓展阅读

万物皆可集成系列:低代码对接企企云实现数据集成

万物皆可集成系列:低代码如何不成为数据孤岛

万物皆可集成系列:活字格对接泛微e-cology

与集群部署看过来,低代码@AWS智能集群的架构与搭建方案相似的内容:

集群部署看过来,低代码@AWS智能集群的架构与搭建方案

为了帮助充分利用AWS的托管服务快速构建起一套集群环境,彻底去掉“单一故障点”,实现最高的可用性,我们准备了**《低代码智能集群@AWS的架构与搭建方案》**看完本文,带你掌握“基于nginx配置服务器集群”。 应用场景 如果你需要解决如下的问题,可以考虑搭建一套活字格@AWS智能集群: 保障系统高

Grafana监控minio的极简方法

# Grafana监控minio的极简方法 ## 背景 ``` 想监控一下minio的部分信息. 使用过程中需要关注的内容挺多的. 只看简单的node感觉已经不够了. 所以想监控易一下. ``` ## 方式和方法 ``` minio其实集成了prometheus 支持的监控指标 只需要在配置文件中放

【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署

结合我们的生产需求,本次详细整理了最新版本 MonogoDB 7.0 集群的规划及部署过程,具有较大的参考价值,基本可照搬使用。 适应数据规模为T级的场景,由于设计了分片支撑,后续如有大数据量需求,可分片横向扩展。 ■■■ 分片集群规划 ■ Configure hostname、hosts file

[转帖]redis脑裂是什么?如何解决

这也是一个常见面试题,对redis集群部署不熟悉的同学,可能压根没听过这个名词qvq 什么是redis脑裂 下面我们解释一下什么是redis脑裂: 关于reids集群会由于网络等原因出现脑裂的情况,所谓的集群脑裂就是,由于redis master节点和redis salve节点和sentinel处于

strimzi实战之三:prometheus+grafana监控(按官方文档搞不定监控?不妨看看本文,已经踩过坑了)

通过strimzi部署的kafka集群,如何部署prometheus+grafana去监控呢?官方文档信息量太大,即便照着做也可能失败,这里有一份详细的保姆级操作指南,助您成功部署监控服务

可以把 FolkMQ 内嵌到 SpringBoot3 项目里(可内嵌的消息中间件,纯血国产)

支持Qos0、定时、过期、顺序、广播、事务、二进制等消息特性。有确认、重试、延时等机制。可嵌入、单机、集群等部署。

FolkMQ 1.6.0(纯血国产,适合信创)

支持Qos0、定时、过期、顺序、广播、事务、二进制等消息特性。有确认、重试、延时等机制。可嵌入、单机、集群等部署。

FolkMQ v1.5.1 发布(“新式” 国产消息中间件)

FolkMQ 消息中间件。支持Qos0、定时、过期、顺序、广播、事务、二进制等消息特性。有确认、重试、延时等机制。可嵌入、单机、集群等部署。

OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试

背景 其实文件搭建和集群搭建没有任何区别 这次用先用容器搭建出来,然后测试一下性能 想着再使用本地部署的方式搭建一下. 两项验证容器和基于文件的搭建的性能差异 部分资料来源: https://blog.csdn.net/weixin_54441446/article/details/12477254

[转帖]k8s-mtu设置不当引发的线上故障

https://www.cnblogs.com/zisefeizhu/p/16611626.html 背景 在部署新的paas平台线上环境时,突发consul和es中间件无法创建。 排查过程 以consul 通过查询k8s集群中pod状态发现原来3pod的consul集群,其中2个pod一直重启。