无服务器也能跑应用
最近看到一篇Google云计算的文章[1],介绍了Google Cloud Run应用。简单说Google Cloud Run就是一个无服务器,轻量级的容器环境。其特点在于便宜,不是小型的应用不需要租用服务器,完全由平台托管,不需要考虑底层的东西,专注于应用的开发即可。应用打包为容器,配置一些参数后即可部署完成,而且按照流量计费,一天几块钱。这么好玩的东西,我也摸一摸。由于众所周知的原因,Google不对大陆服务,注册Google cloud时付款是个问题,需要境外信用卡。虽然有解决办法[2],但很难注册下来。条件不允许,Google云就放弃了。
西方不亮东方亮,搜一搜国内云大厂里类似云服务,阿里云和华为云都支持无服务架构。阿里云无服务架构是云弹性容器实例(Elastic Container Instance)[3],有部署nodejs的案例[4]。华为云无服务器架构是云容器实例服务CCI(Cloud Container Instance)[5]。有实现Nginx负载案例[6]。
动动手吧,小试一下无服务架构,我们跑一个Node.js的容器镜像在华为云CCI中,访问一个页面显示hello world。首先本地把Node.js调试好,然后制作容器镜像,最后部署上云。
第一步,本地测试Node.js
Node.js是一个在服务器后端运行JavaScript的环境,按照这里安装Node.js[7]的过程安装配置Node.js,创建一个简单的hello world应用可参考这里[8]。动手试试在本地运行起来hello world吧。server.js代码如下:
var http = require('http');http.createServer(function (request, response) {// 发送 HTTP 头部// HTTP 状态值: 200 : OK// 内容类型: text/plainresponse.writeHead(200, {'Content-Type': 'text/plain'});// 发送响应数据 "Hello World"response.end('Hello World\n');}).listen(8888);// 终端打印如下信息console.log('Server running at http://127.0.0.1:8888/');
第二步,制作Docker容器镜像
Docker容器是一个最小化的应用运行环境,按照这里安装Docker[9],参考Docker简明教程[10]熟悉Docker基本操作。本例中Dockerfile为:
FROM node:stretch-slimRUN npm installCOPY . .CMD ["node", "server.js"]
我们使用stretch-slim版本的node,体积远小于完整版本的node。参考这里制作docker镜像[11],生成tar包。
第三步,部署容器镜像
在华为云官网[12]注册登入后,搜索CCI(云容器实例),进入“立即使用”,参考Nginx案例[13]熟悉部署配置过程。我们在容器配置中将上面生成的tar包上传至华为云,其他配置都按照最小原则进行配置,跑一个hello world绰绰有余。配置界面的下方会出现按需计费的费用情况,可以参考计算一下跑一天要多少费用。
本文中代码较少、没有配图,原因是相关案例链接中都有详细的过程介绍。按照案例完成相关案例的操作,变换一点点思路就可以完成这次无服务架构的试验,动起手来才能学会。
引用链接
[1]
Google云计算的文章: https://alexolivier.me/posts/deploy-container-stateless-cheap-google-cloud-run-serverless/[2]
解决办法: https://zhuanlan.zhihu.com/p/58747135[3]
云弹性容器实例(Elastic Container Instance): https://help.aliyun.com/product/87486.html[4]
部署nodejs的案例: https://blog.csdn.net/itaffy/article/details/89455342[5]
云容器实例服务CCI(Cloud Container Instance): https://bbs.huaweicloud.com/blogs/103668[6]
Nginx负载案例: https://support.huaweicloud.com/qs-cci/cci_quick_start.html?utm_source=cci_Growth_map&utm_medium=display&utm_campaign=help_center&utm_content=Growth_map#section0[7]
按照这里安装Node.js: https://www.runoob.com/nodejs/nodejs-install-setup.html[8]
创建一个简单的hello world应用可参考这里: https://www.runoob.com/nodejs/nodejs-http-server.html[9]
按照这里安装Docker: https://www.runoob.com/docker/docker-install-node.html[10]
Docker简明教程: https://blog.saymagic.cn/2015/06/01/learning-docker.html[11]
参考这里制作docker镜像: https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html[12]
华为云官网: https://www.huaweicloud.com/[13]
Nginx案例: https://support.huaweicloud.com/qs-cci/cci_quick_start.html?agencyId=07cd235aa8800fea1f42c00ac23af722®ion=cn-north-4&locale=zh-cn




