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

52次阅读

共计 5356 个字符,预计需要花费 14 分钟才能阅读完成。

亚马逊 AWS 是葡萄城的生态合作伙伴。为了帮忙您充分利用 AWS 的托管服务疾速构建起一套集群环境,彻底去掉“繁多故障点”,实现最高的可用性,咱们筹备了 《低代码智能集群 @AWS 的架构与搭建计划》 看完本文,带你把握“基于 nginx 配置服务器集群”。

利用场景

如果你须要解决如下的问题,能够思考搭建一套活字格 @AWS 智能集群:

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

    集群能力

    本计划是官网与生态合作伙伴亚马逊 AWS 提供的一套高可用负载平衡解决方案,在活字格智能集群的根底上,通过引入 ALB 等托管服务,进一步晋升可用性。本计划提供的次要能力如下:

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

特地提醒:活字格智能集群不兼容内建 SQLite 数据库,您须要在外联数据库上构建数据表和业务。

搭建计划

活字格 & 亚马逊 AWS 集群须要用到亚马逊提供的 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…

拓展浏览

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

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

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

正文完
 0