1.5 提高可用性-發布多節點的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組態檔,以平衡花費和可用性,
參考及推薦
- source code
- AWS s3 faq
- kind k8s quick start
一些入門架構文章
- 什么是高可用
- cnblogs jeff 三、高可用系統設計
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/6635.html
標籤:其他
下一篇:推薦幾個比較好用的遠程除錯工具
