title: Serverless-Devs date: 2022-09-29 23:43:29 permalink: /guide/deploy/serverlessDevs article: false
serverless-devs
你也可以通过serverless-devs,快速部署到各个云平台。
安装 serverless-devs 工具
$ npm install @serverless-devs/s -g
国内加速:
$ cnpm install @serverless-devs/s -g
如果不存在npm包管理器,请先通过node安装npm/cnpm
安装后运行
$ s -v
将可以看到serverless-devs版本,表示安装成功。
@serverless-devs/s3: 0.1.0, s-home: /Users/DVK/.s, darwin-arm64, node-v20.9.0
然后通过如下命令开始配置云厂商认证
$ s config add
按提示即可选择即可,本次我们以 Alibaba Cloud
为例,输入对应的账户AccessKeyID
、AccessKeySecret
最后一步填写alias
时,请确保值为default
(一般初次安装与认证该字段都默认为default,回车即可)。
如果AK/SK无误,那么你将会看到认证成功的提示。
部署
$ git clone https://github.com/DVKunion/SeaMoon.git
进入到项目目录
$ cd SeaMoon
$ s deploy
如果你不是第一次部署,那么将会提示你选择冲突的配置:remote/local,一般选择local即可。
稍等片刻,你将会得到部署好的两个地址:
SeaMoon-WST-Node:
region: cn-hongkong
service:
name: SeaMoon-Service
function:
name: ws-node
runtime: custom
handler: main
memorySize: 128
timeout: 300
cpu: 0.05
diskSize: 512
url:
system_url: https://ws-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run
system_intranet_url: https://ws-node-seamoon-service-xxxxxxxx.cn-hongkong-vpc.fcapp.run
triggers:
- type: http
name: httpTrigger
SeaMoon-GRT-Node:
region: cn-hongkong
service:
name: SeaMoon-Service
function:
name: grpc-node
runtime: custom
handler: main
memorySize: 128
timeout: 300
cpu: 0.05
diskSize: 512
url:
system_url: https://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run
system_intranet_url: https://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong-vpc.fcapp.run
triggers:
- type: http
name: httpTrigger
服务端部署完成。
高级选项
地域
如果你想要修改部署的地域,请修改 s.yaml
中的 region
字段。
目前支持的 region
:
cn-hangzhou,
cn-beijing,
cn-shanghai,
cn-qingdao,
cn-zhangjiakou,
cn-huhehaote,
cn-shenzhen,
cn-chengdu,
cn-hongkong,
ap-southeast-1,
ap-southeast-2,
ap-southeast-3,
ap-southeast-5,
ap-northeast-1,
eu-central-1,
eu-west-1,
us-west-1,
us-east-1,
ap-south-1
花费 vs 更多的IP
阿里云的 FC 计费模式与实例数、vCPU消耗息息相关。
由于我们的流量中转单例,cpu 消耗并不会打满,而仍然会依照 0.33 计费。
因此,控制多个请求到一个实例,即可控制消费;对应的能够获取到的IP也会随之减少。
10线程、每个线程 100 个用例打满ip查询测试的结果为:
- 实例数目不设限、最高超时时间为600s、每个实例只处理一个请求: 70 IP
- 实例数目不设限、最高超时时间为300s、每个实例处理10请求: 45IP (目前默认配置)
如果你需要自行调整,可修改s.yaml中的:
services:
SeaMoon-WST-Node:
component: fc
props:
......
instanceConcurrency: 10 #一个实例最多请求处理数
......
timeout: 300 #超时时间,数值越大,可维持的不中断连接时间就会越长
随着修改,改方案可能导致的花费也会随之不同。
可能遇到的坑
- 需要能够访问的到 github, 在 pre-load 脚本中会从 github 上拉取最新版本的 release 用于部署。
- 需要系统有 wget 命令。(windows 用户可以暂时放弃这个方式,不打算支持 windows 通过此类方式部署)