1.5 提高可用性-发布多节点的Node/Express网络应用程序

Kubernetes实战 - 从零开始搭建微服务

前言

在上一篇文章中,已经学习了如何简单地开发一个单层网络应用。【Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序】 ,本文将在上一篇基础上,添加额外节点,目的在于提高可用性(high availability)。

关于可用性 high availability

在软件产品环境下,如何提高服务稳定性,进而避免用户流失,一直是架构师工作的核心。高可用性有一些基本的设计原则,

  1. 找到单一故障点/单点故障,就是在整个架构中,找到其中可用性最低的服务/点,增加冗余,以避免单点故障
  2. 可靠交叉(reliable crossover),没找到很好的中文翻译,即,当多服务交叉在一起,互相依赖度极高,它们可能成为单点故障
  3. 及时发现故障

计算可用性 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 缩小

能大就能小,要不然就是貔貅了,

Kubernetes实战 - 从零开始搭建微服务 - 1.5 提高可用性-发布多节点的Node/Express网络应用程序的更多相关文章

  1. Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序

    使用kind构建一个单层架构Node/Express网络应用程序 Kubernetes实战-从零开始搭建微服务 1 前言 准备写一个Kubernetes实战系列教程,毕竟cnblogs作为国内最早的技 ...

  2. AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 建议和反馈,请发送到 https ...

  3. 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)

    本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程 ...

  4. Spring Cloud Alibaba+Nacos搭建微服务架构

    1. Spring Cloud Alibaba 简介    Spring Cloud Alibaba是阿里巴巴为分布式应用提供的一站式解决方案,能够更方便快捷地搭建分布式平台,nacos拥有着替换eu ...

  5. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  6. 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)

    背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...

  7. spring cloud+dotnet core搭建微服务架构:服务发现(二)

    前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这 ...

  8. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  9. spring cloud+dotnet core搭建微服务架构:配置中心(四)

    前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...

随机推荐

  1. Django中的content_type表

    models.py from django.db import models from django.contrib.contenttypes.models import ContentType # ...

  2. CF--思维练习--CodeForces - 219C Color Stripe (思维)

    ACM思维题训练集合 A colored stripe is represented by a horizontal row of n square cells, each cell is paine ...

  3. 轻量化模型:MobileNet v2

    MobileNet v2 论文链接:https://arxiv.org/abs/1801.04381 MobileNet v2是对MobileNet v1的改进,也是一个轻量化模型. 关于Mobile ...

  4. python(读取 excel 操作 xlrd 模块)

    一.安装 xlrd 模块 到 python 官网下载 http://pypi.python.org/pypi/xlrd 模块安装,前提是已经安装了 python 环境. 或者在 cmd 窗口  pip ...

  5. java线程池原理解析

    五一假期大雄看了一本<java并发编程艺术>,了解了线程池的基本工作流程,竟然发现线程池工作原理和互联网公司运作模式十分相似. 线程池处理流程 原理解析 互联网公司与线程池的关系 这里用一 ...

  6. js中刷新页面的方式总结

    1.window.onload / document.onload 2.history.go(num): (1)num为参数,num为正表示前进几个页面,类似于history.forward(): ( ...

  7. 【Spark】不熟悉Spark-shell常用参数?这一张图就够了

  8. 【Hadoop离线基础总结】MapReduce倒排索引建立

    MapReduce倒排索引建立 求某些单词在文章中出现多少次 有三个文档的内容,求hello,tom,jerry三个单词在其中各出现多少次 hello tom hello jerry hello to ...

  9. mongodb cluster

    假设三台机器,ip分别为192.168.1.10,192.168.1.11,192.168.1.12,分别在每台电脑上下载并解压mongodb,关闭防火墙或者开放防火墙端口 一.安装shard 配置文 ...

  10. hive经典练习题

    一.建表和加载数据 1.student表 create table if not exists student(s_id int,s_name string,s_birth string,s_sex ...