Kubernetes实战 - 从零开始搭建微服务 - 1.5 提高可用性-发布多节点的Node/Express网络应用程序
2020-05-26 15:39
881 查看
1.5 提高 2000 可用性-发布多节点的Node/Express网络应用程序
Kubernetes实战 - 从零开始搭建微服务
前言
在上一篇文章中,已经学习了如何简单地开发一个单层网络应用。【Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序】 ,本文将在上一篇基础上,添加额外节点,目的在于提高可用性(high availability)。
关于可用性 high availability
在软件产品环境下,如何提高服务稳定性,进而避免用户流失,一直是架构师工作的核心。高可用性有一些基本的设计原则,
- 找到单一故障点/单点故障,就是在整个架构中,找到其中可用性最低的服务/点,增加冗余,以避免单点故障
- 可靠交叉(reliable crossover),没找到很好的中文翻译,即,当多服务交叉在一起,互相依赖度极高,它们可能成为单点故障
- 及时发现故障
计算可用性 high availability
A(可用性),MTBF(平均故障间隔),MDT(平均修复时间)
举个例子,AWS S3 存储服务HA保证值就在99.99%,耐用性durability是11个9 - 99.999999999%。
kind 创建一个多节点集群
k8s设计本身就是在于降低容器devops维护复杂度,提高可用性。
在上一篇文章的介绍里,整个App运行在单集群、单节点的情况下,虽然我们使用了Kubernetes,但是并没有发挥其优势,node service 仍然是一个无冗余的单点服务。其实使用kind可以很容易地增加节点,以提高可用性。
3-nodes-config.yaml
# three node (two workers) cluster config kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker
- source code
kind create cluster --config 3-nodes-config.yaml
kubectl get nodes
发布到k8s
参考【Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序】。
kind get clusters
获取所有cluster- deploy, (配置文件见上文,或者这里repo)
-kubectl apply -f deployment.yaml
-kubectl apply -f service.yaml
scale up 扩展
-
kubectl get deployments
-
kubectl get pods
截止目前,虽然集群是多节点,但是pods和deployment都只有一个,接下来就是最重要的一步,扩展/Scale Up
kubectl scale deployments/a-node-deployment --replicas=2
scale down 缩小
能大就能小,要不然就是貔貅了,😀
kubectl scale deployments/a-node-deployment --replicas=1
结语
以上是一个k8s 手动扩展/缩小的过程,在实际产品中,这一般是一个自动过程,可以依托于云/k8s服务提供商或者k8s配置文件,以平衡花费和可用性。
参考及推荐
一些入门架构文章
相关文章推荐
- Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集(无需搭建任何基础设施)...
- Node + Express + MongoDB 搭建后台服务
- Node+Express+MongoDB+Socket.io搭建实时聊天应用实战教程(一)--MongoDB入门
- nodejs+express搭建自己的服务框架
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
- 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.4.重构:使用Hapi搭建REST API服务器
- node使用express搭建服务web前端(服务数据)。
- Node.js项目实战-构建可扩展的Web应用(第一版):8 使用Express.js和Hapi构建Node.js REST API服务
- Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
- kubernetes搭建 六、node节点
- Node.js 搭建一个 API 接口服务(实战)
- 从零开始搭建Node.js, Express, Ejs, Mongodb服务器
- express+nodeJS搭建服务、前后端交互、后端路由(一)
- vue爬坑记:利用node搭建express服务
- 【node】使用express+mongoose搭建基础服务
- Node实战(第2季)6 Node.js测试服务搭建
- Node.js搭建Express应用程序
- 使用 express 搭建node服务
- 【从零开始】用node搭建一个jsonp&json服务