卓越效能,极简运维,Serverless高可用架构
手动部署
50
https://www.aliyun.com/solution/tech-solution/serverless-ha
方案概览
业务的持续稳定可服务,决定着企业对客户的服务质量,是企业发展的基础。应用部署的高可用架构和弹性能力对于业务的稳定与发展起着至关重要的作用,但企业同时需要考虑资源维护成本和费用成本。本方案采用云上的Serverless架构,原生支持弹性伸缩、按量付费和服务托管,减少企业手动资源管理和性能成本优化的工作,同时通过高可用的配置,避免可能遇到的单点故障风险。
方案架构
本架构采用单地域双可用区部署,将业务系统、数据库部署在2个不同可用区,实现了可用区级故障灾备能力,从而保证了业务的连续性。服务和数据库都采用了阿里云Serverless产品采用按需付费产生更低的成本,同时支持弹性伸缩更好的适应业务增长。该架构还利用专有网络VPC、交换机和跨可用区安全组等基础设施,实现了私有网络下的系统通信。
方案提供的默认设置完成部署后在阿里云上搭建的Serverless高可用架构如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为应用型负载均衡ALB、Serverless应用引擎、云数据库PolarDB MySQL版Serverless集群等云资源构建云上私有网络。
5台交换机:按照经典架构设计3个子网平面(公网平面、业务平面、数据平面),分别部署在两个可用区,提供基本的网络分段和隔离功能。ALB横跨两个可用区部署在公网平面,两个Serverless应用引擎实例分别部署在两个可用区的业务平面,一对云数据库PolarDB MySQL版Serverless主备集群分别部署在两个可用区的数据平面。
1个公网应用型负载均衡ALB:将公网访问流量分发到不同的Serverless应用引擎实例。公网ALB通过EIP提供公网服务能力。
2个Serverless应用引擎实例:用于部署业务系统,提供应用服务。
1个云数据库PolarDB MySQL版Serverless集群:为业务系统提供数据服务。
部署准备
10
开始部署前,请按以下指引完成账号申请、账号充值。
准备账号
如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。
为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。
开通 Serverless 应用引擎 SAE。打开Serverless 应用引擎 SAE 控制台,按照界面指引完成开通操作。
部署资源
30
请按照以下步骤部署方案中的所有资源。
创建专有网络VPC和交换机
为了实现高可用,您需要将服务负载和数据库等资源尽可能分布在多个可用区,规避单可用区故障造成的服务不可用。本方案以双可用区为例,因此,您需要创建1个专有网络和5个交换机。PolarDB MySQL版 Serverless集群仅需要1个交换机,系统自动选择备可用区。
登录专有网络管理控制台。
在左上方,单击创建专有网络按钮。
在创建专有网络页面,配置1个专有网络和5个交换机。配置交换机时,请确保交换机所属的可用区的ALB是可用状态。
项目
说明
示例值
地域
建议您在部署中各部分资源地域要保持一致,本方案统一为华东1(杭州)。
华东1(杭州)
VPC名称
建议您在部署过程中新建一个VPC作为本方案的专有网络。部署过程中填写VPC名称即可创建对应名称的VPC。
长度为2~128个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。
VPC_HZ
IPv4网段
在创建VPC时,您必须按照无类域间路由块(CIDR block)的格式为您的专有网络划分私网网段。阿里云VPC支持的网段信息请参见组成部分。
在网络规划时可以按照管理网段-开发网段-测试网段-生产网段等规则做好规划。网段一旦投入使用,调整过程复杂,因此规划十分重要。
192.168.0.0/16
交换机
建议您创建5个交换机,分布在两个可用区,用于可用区需要确保SAE、ALB、PolarDB MySQL版 Serverless集群是可用状态(例如可用区J、可用区K),交换机名称
长度为2~128个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。
vsw_web_001
vsw_web_002
vsw_db_001
vsw_pub_002
可用区
建议选择排序靠后的可用区,一般此类可用区较新。新可用区资源更充沛,新规格也会在新的可用区优先上线。
可用区 J
可用区 K
IPv4网段
每台虚拟交换机需要一个IPv4网段
例如:
vsw_web_001:192.168.1.0/24
vsw_web_002:192.168.2.0/24
创建安全组
您已经在1个专有网络VPC下的2个可用区分别创建5台交换机。接下来您需要创建1个跨可用区的安全组,用于限制该专有网络VPC下的5台交换机的网络流入和流出。
在左侧导航栏,选择网络与安全>安全组。
在顶部菜单栏,选择华东1(杭州)地域。
在安全组页面,单击创建安全组。
在创建安全组页面,创建1个安全组。
项目
说明
示例值
名称
设置安全组的名称。
SecurityGroup_1
网络
选择之前规划的专有网络VPC。
VPC_HZ
安全组类型
本方案选择普通安全组,具体差异您可以参考普通安全组与企业级安全组。
普通安全组
创建云数据库PolarDB MySQL版 Serverless集群
您已经创建了VPC和vSwitch。接下来您需要创建云数据库PolarDB MySQL版 Serverless集群、数据库、数据库账号。您需要记录创建的云数据库 PolarDB MySQL版 Serverless集群的内网连接地址、数据库名称、账号、密码用于之后的配置和使用。
数据库内网连接地址查询方法。
创建集群
选择计费类型为Serverless。
地域选择华东1(杭州)
创建方式选择创建主集群。
数据库引擎选择MySQL 8.0.2。
产品版本选择企业版或标准版。
选择主可用区。选择刚刚创建的vsw_db_001所在的可用区。
网络类型选择刚刚创建的VPC和vSwitch。
选择是否开启热备集群。选择开启。
如果开启存储热备集群,PolarDB会在当前地域内同时部署主集群(包含互备计算节点+主存储)和存储热备集群,主集群和存储热备集群各保证3副本数据(共6副本数据),具有更高的SLA可靠性保障。
如果关闭存储热备集群,则仅保留主集群(3副本数据),存储单价是开启存储热备集群单价的1/2。集群的SLA也会降低。
设置Serverless集群的资源扩缩范围。
只读节点个数伸缩下限:设置允许只读节点增加的最小数量。取值范围:0~15。为了实现Serverless集群的高可用,建议将只读节点个数伸缩下限设置为1。
只读节点个数伸缩上限:设置允许只读节点增加的最大数量。只读节点数量会根据业务压力自动增加或减少。取值范围:0~15。
单节点伸缩下限:设置集群内单节点PCU数量的下限。Serverless形态的PolarDB集群采用PCU(约等于1核2 GB的资源)做秒级计费和扩缩单元,PCU会随着业务负载在指定区间内动态调整。取值范围:1 PCU~31 PCU。
单节点伸缩上限:设置集群内单节点PCU数量的上限。Serverless形态的PolarDB集群采用PCU(约等于1核2 GB的资源)做秒级计费和扩缩单元,PCU会随着业务负载在指定区间内动态调整。取值范围:1 PCU~32 PCU。
选择是否开启无活动暂停功能。该功能默认关闭。
选择存储类型。
PolarDB企业版支持PSL5和PSL4两种存储类型。选择PSL5。
在页面右侧,同意协议,单击立即购买。
支付成功后点击管理控制台,进入PolarDB控制台。
创建数据库
找到创建的目标集群,单击集群ID。
在左侧导航栏中,单击
。单击创建数据库。
在创建数据库面板中,设置以下参数。
参数
说明
示例
数据库(DB)名称
以字母开头,以字母或数字结尾。
由小写字母、数字、下划线(_)或中划线(-)组成。
长度不超过64个字符。
数据库名称在实例内必须是唯一的。
说明请勿使用保留关键字作为数据库名称,如
test
、mysql
等。applets
支持字符集
选择数据库支持的字符集,例如utf8mb4、utf8、gbk、latin1等。
utf8mb4
授权账号
选中需要授权访问本数据库的账号。本参数可以留空,在创建数据库后再绑定账号。
说明此处只会显示普通账号,因为高权限账号拥有所有数据库的所有权限,不需要授权。
不选
账号权限
选择要授予账号的权限,取值范围为读写、只读、仅DML、仅DDL或只读+索引。
备注说明
用于备注该数据库的相关信息,便于后续数据库管理。要求如下:
不能以
http://
或https://
开头。长度为2~256个字符。
serverless demo
单击确定。
创建账号
在左侧导航栏中,选择
。单击创建账号。
在创建账号面板,设置以下参数:
参数
说明
示例
账号名
填写账号名称。账号名称需符合如下要求:
以小写字母开头,以字母或数字结尾。
由小写字母、数字或下划线组成。
长度为2~32个字符。
不能使用某些预留的用户名,如root、admin等。
applets
账号类型
此处选择普通账号。
普通账号
授权数据库
为该账号授予一个或多个数据库的权限。
从未授权数据库列表中选择刚刚创建的数据库,单击图标将其添加到已授权数据库列表中。权限选择读写。
密码
设置账号的密码。密码需符合如下要求:
至少包含大写字母、小写字母、数字或特殊字符中的任意三种。
长度为8~32个字符。
特殊字符为:
!@#$%^&*()_+-=
确认密码
再次输入密码。
备注说明
备注该账号的相关信息,便于后续账号管理。要求如下:
不能以
http://
或https://
开头。长度为2~256个字符。
单击确定。
注意:请务必检查创建账号是否已经授权上一步建立的数据库!!!
设置白名单
在左侧导航栏,单击
。在集群白名单页面,单击选择安全组。
在选择安全组对话框,选中之前创建的安全组,单击确定即可。
创建Serverless应用引擎实例
接下来您需要在2个可用区分别创建1个Serverless应用引擎实例,来实现服务跨可用区的高可用。
登录SAE控制台。
在左侧导航栏,单击
,在顶部菜单栏选择地域华东1(杭州),然后在应用列表页面,选中默认页签,单击创建应用。在创建应用页面,完成以下操作。
在应用基本信息页签,配置相关信息
分类
配置项
说明
示例
基础信息设置
应用名称
自定义。
serverless-demo
应用描述
自定义。
serverless-demo
命名空间类型
自定义。
选择已有命名空间
命名空间
为应用提供逻辑隔离的运行环境。从下拉列表选择默认或自定义的命名空间,如果选择自定义命名空间,需单击创建命名空间,跳转至命名空间页面创建。
填入命名空间名称
填入命名空间ID
专有网络 VPC选择之前创建的 VPC VPC_HZ
创建新的命名空间
专有网络 VPC
选择自定义配置。
VPC_HZ
交换机 vSwitch
选择之前创建的交换机
vsw_web_001
vsw_web_002
安全组
选择之前创建的安全组
SecurityGroup_1
应用部署方式
支持选择镜像部署和代码包部署。本例选择代码包部署。
在设置代码包部署弹出框中:
技术栈语言选择Java
代码包类型选择JAR包部署
应用运行环境选择标准Java应用运行环境
Java环境选择Open JDK 8
文件上传方式选择JAR包地址,填入地址
https://help-static-aliyun-doc.aliyuncs.com/tech-solution/sae-demo-0.0.3.jar
代码包部署
容量设置
单实例规格
建议在测试环境中使用0.5 Core 1 GB,在生产环境中依据实际情况选择更高的实例规格。
CPU 2 核 内存 4 GB
实例数
运行的实例个数
2
然后单击下一步:高级设置。
启动命令设置,options设置填入如下内容
-XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/admin/nas/gc-${POD_IP}-$(date '+%s').log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/nas/dump-${POD_IP}-$(date '+%s').hprof
单击环境变量,逐条输入以下内容。数据库连接信息可以访问PolarDB控制台查看。
变量名称:
APPLETS_MYSQL_ENDPOINT
变量值:<上一步中创建的PolarDB数据库链接地址>变量名称:
APPLETS_MYSQL_USER
变量值:<上一步中创建的数据库用户名>变量名称:
APPLETS_MYSQL_PASSWORD
变量值:<上一步中创建的数据库密码>变量名称:
APPLETS_MYSQL_DB_NAME
变量值:<上一步中创建的数据库名称>
单击应用健康检查设置
启用应用实例存活检查(Liveness配置)
检查方式选择TCP端口检查(推荐)
TCP端口填入
80
延迟时间填入
10
启用应用业务就绪检查(Readiness配置)
检查方式选择HTTP请求检查
路径填
/
端口填
80
协议选择HTTP
延迟时间填入
10
单击创建应用。
创建负载均衡ALB
接下来您需要创建1个公网类型的应用型负载均衡ALB并配置路由,从而实现这个专有网络VPC下的Serverless应用引擎实例对外的公网访问和流量分发。
创建应用型负载均衡ALB实例:
在顶部菜单栏左上角,选择华东1(杭州)地域。
在实例页面,单击创建应用型负载均衡。
在应用型负载均衡(按量付费)页面,购买1个ALB实例。
杭州可用区 J vsw_pub_001
杭州可用区 K vsw_pub_002
单击立即购买,在订单确认页面,勾选服务协议,单击立即开通。
项目
说明
示例值
实例网络类型
本方案面向公网提供应用型负载均衡服务,公网可访问。
公网
VPC
选择之前规划的VPC。
VPC_HZ
可用区和交换机
选择之前规划的交换机。
IP模式
每个可用区至少有一个IP,随着业务请求的增加,应用型负载均衡会自动扩展IP数量,此模式下应用型负载均衡具备超强弹性能力。
动态
协议版本
本方案以IPV4为例。
IPV4
功能版本(实例费)
本方案以基础版为例。
基础版
实例名称
设置应用型负载均衡ALB实例的名称。
ALB_HZ
配置SAE路由。
登录SAE控制台。
在左侧导航栏,单击命名空间,在顶部菜单栏选择地域,然后在命名空间页面,单击目标命名空间名称。
在左侧导航栏,单击网关路由,然后在网关路由页面,单击创建网关路由。
在新建路由规则面板,配置相关信息。
根据负载均衡的不同类型,参考对应的操作指引。
在配置网关入口页签,配置相关信息,然后单击下一步。
配置项
说明
示例
路由名称
设置路由规则的名称。
serverless-demo-router
网络类型
选择待转发请求的网络类型。
公网:通过公网网关转发的请求,按照实际转发流量计费。
私网:通过私网网关转发的请求不计费,仅在当前VPC内部转发。
公网
网关类型
选择ALB,并在ALB下拉列表选择目标ALB实例。(注意:如果下拉菜单空白应检查微服务应用和ALB是否在统一VPC)
ALB实例数量上限与负载均衡管理控制台上保持一致。
刚刚创建的ALB实例
前端协议类型
选择请求转发协议。
HTTP:适用于需要对数据内容进行识别的应用,如Web应用和小型手机游戏等。
HTTPS:适用于需要加密传输的应用。
HTTP
SSL证书
仅选择HTTPS协议时需要设置。
选择一个或多个证书。如果选择多个证书,则第一个证书为默认证书,后续添加的证书为扩展证书。如果您账户下没有SSL证书,请登录数字证书管理服务控制台创建。
不需要
访问端口
设置接收请求并向后端服务或者应用进行请求转发的监听端口。
80
自定义转发策略
域名:输入要转发的请求域名。
Path:输入请求转发路径。例如
example.com/product/sae
,请求转发路径/product/sae
。后端协议类型:选择协议类型。
http:适用于需要对数据内容进行识别的应用。默认显示。
https:适用于需要加密传输的应用。
grpc:适用于.net等多语言用户gRPC的负载均衡场景。
说明
该配置项只有您在配置网关入口页签选择ALB,并且前端协议类型选择HTTPS时才需要设置。
后端应用:选择接收转发请求的应用,该应用须与转发请求的应用在同一个命名空间内。
容器端口:设置访问后端应用的容器端口。
重写策略:在请求转发给目标后端服务之前,重写可以修改原始请求的Path。
域名:如果有输入真实域名,如果没有请输入example.com。
后端应用选择之前创建的SAE应用。
容器端口填入 80。
默认转发策略
后端应用:选择需要转发的后端应用。
容器端口:设置访问后端应用的容器端口。
后端应用选择之前创建的SAE应用,容器端口填入 80。
单击保存,完成创建。
结果验证。登录负载均衡管理控制台,在ALB实例页面,查看监听是否已经配置。
完成及清理
10
方案验证
清理资源
在本方案中,您创建了2个Serverless应用引擎实例、1个应用型负载均衡ALB实例、5个交换机、1个专有网络VPC、1个云数据库PolarDB MySQL版Serverless集群。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:
释放2个Serverless应用引擎实例:
登录Serverless应用引擎SAE控制台,在应用列表页面,找到目标实例,单击应用名称进入详情页,在详情页右上角单击更多>删除应用。
释放1个云数据库PolarDB MySQL版Serverless集群:
登录PolarDB管理控制台,在集群列表页面,找到目标集群,然后在操作列中选择更多>释放。
释放1个应用型负载均衡ALB实例:
登录应用型负载均衡控制台,在实例页面,找到目标ALB实例,然后在操作列选择>释放,按照界面提示释放实例。
释放5个交换机:
登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。
释放1个专有网络VPC:
登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放实例。
一键部署
30
https://www.aliyun.com/solution/tech-solution/serverless-ha
方案概览
业务的持续稳定可服务,决定着企业对客户的服务质量,是企业发展的基础。应用部署的高可用架构和弹性能力对于业务的稳定与发展起着至关重要的作用,但企业同时需要考虑资源维护成本和费用成本。本方案采用云上的Serverless架构,原生支持弹性伸缩、按量付费和服务托管,减少企业手动资源管理和性能成本优化的工作,同时通过高可用的配置,避免可能遇到的单点故障风险。
方案架构
本架构采用单地域双可用区部署,将业务系统、数据库部署在2个不同可用区,实现了可用区级故障灾备能力,从而保证了业务的连续性。服务和数据库都采用了阿里云Serverless产品采用按需付费产生更低的成本,同时支持弹性伸缩更好的适应业务增长。该架构还利用专有网络VPC、交换机和跨可用区安全组等基础设施,实现了私有网络下的系统通信。
方案提供的默认设置完成部署后在阿里云上搭建的Serverless高可用架构如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为应用型负载均衡ALB、Serverless应用引擎、云数据库PolarDB MySQL版Serverless集群等云资源构建云上私有网络。
5台交换机:按照经典架构设计3个子网平面(公网平面、业务平面、数据平面),分别部署在两个可用区,提供基本的网络分段和隔离功能。ALB横跨两个可用区部署在公网平面,两个Serverless应用引擎实例分别部署在两个可用区的业务平面,一对云数据库PolarDB MySQL版Serverless主备集群分别部署在两个可用区的数据平面。
1个公网应用型负载均衡ALB:将公网访问流量分发到不同的Serverless应用引擎实例。公网ALB通过EIP提供公网服务能力。
2个Serverless应用引擎实例:用于部署业务系统,提供应用服务。
1个云数据库PolarDB MySQL版Serverless集群:为业务系统提供数据服务。
部署准备
10
开始部署前,请按以下指引完成账号申请、账号充值。
准备账号
如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。
为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。
开通 Serverless 应用引擎 SAE。打开Serverless 应用引擎 SAE 控制台,按照界面指引完成开通操作。
一键部署
10
一键部署基于阿里云资源编排服务ROS(Resource Orchestration Service)实现,ROS模板已定义好脚本,可自动化地完成云资源的创建和配置,提高资源的创建和部署效率。ROS模板完成的内容包括:
操作步骤
您可以通过下方提供的ROS一键部署链接,来自动化地完成这些资源的创建和配置:
创建2个Serverless应用引擎实例。
创建1个专有网络VPC。
创建5台交换机。
创建1个云数据库PolarDB MySQL版Serverless集群。
一键部署资源。
单击一键部署,在顶部导航栏选择地域。
在配置页面修改资源栈名称,按需选择和配置参数。
当资源栈信息页面的状态显示为创建成功时表示一键配置完成。
完成及清理
10
方案验证
清理资源
您可以使用ROS一键删除创建的云资源,避免继续产生费用。
登录ROS控制台。
在左侧导航栏,选择资源栈。
在资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除。
在删除资源栈对话框,选择删除方式为释放资源,然后单击确定,根据提示完成资源释放。