日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linkerd2.10(StepbyStep)—混沌工程之注入故障

Linkerd 2.10 中文手冊(cè)持續(xù)修正更新中:

  • https://linkerd.hacker-linner.com

使用 Service Mesh Interface 的 Traffic Split API 很容易將故障注入應(yīng)用程序。TrafficSplit 允許您將一定比例的流量重定向到特定后端。這個(gè)后端是完全靈活的,可以返回任何你想要的響應(yīng)——500 秒、超時(shí)甚至瘋狂的有效載荷。

books demo 是展示這種行為的好方法。整體拓?fù)淙缦拢?/p>

在本指南中,您將把一些請(qǐng)求從 webapp 拆分到 books。大多數(shù)請(qǐng)求最終會(huì)到達(dá)正確的 books 目的地,但其中一些將被重定向到有問(wèn)題的后端。此后端將為每個(gè)請(qǐng)求返回 500 秒并將錯(cuò)誤注入 webapp 服務(wù)。不需要更改代碼,并且由于此方法是配置驅(qū)動(dòng)(configuration driven)的, 因此可以將其添加到集成測(cè)試和 CI 管道中。如果你真的過(guò)著混沌工程(chaos engineering)的 lifestyle,甚至可以在生產(chǎn)中使用故障注入。

先決條件

要使用本指南,您需要在集群上安裝 Linkerd 及其 Viz 擴(kuò)展。

設(shè)置服務(wù)

首先,將 books 示例應(yīng)用程序添加到您的集群:

 
 
 
 
  1. kubectl create ns booksapp && \ 
  2.   linkerd inject https://run.linkerd.io/booksapp.yml | \ 
  3.   kubectl -n booksapp apply -f - 

由于此清單在其他地方用作 demo,因此已配置錯(cuò)誤率(error rate)。為了展示故障注入的工作原理,需要去除錯(cuò)誤率,以便有一個(gè)可靠的基線(reliable baseline)。要將 bookapp 的成功率提高到 100%,請(qǐng)運(yùn)行:

 
 
 
 
  1. kubectl -n booksapp patch deploy authors \ 
  2.   --type='json' \ 
  3.   -p='[{"op":"remove", "path":"/spec/template/spec/containers/0/env/2"}]' 

過(guò)了一會(huì)兒,統(tǒng)計(jì)數(shù)據(jù)會(huì)顯示 100% 的成功率。您可以通過(guò)運(yùn)行以下命令來(lái)驗(yàn)證這一點(diǎn):

 
 
 
 
  1. linkerd viz -n booksapp stat deploy 

輸出最終看起來(lái)有點(diǎn)像:

 
 
 
 
  1. NAME      MESHED   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99   TCP_CONN 
  2. authors      1/1   100.00%   7.1rps           4ms          26ms          33ms          6 
  3. books        1/1   100.00%   8.6rps           6ms          73ms          95ms          6 
  4. traffic      1/1         -        -             -             -             -          - 
  5. webapp       3/3   100.00%   7.9rps          20ms          76ms          95ms          9 

創(chuàng)建有問(wèn)題的后端

將錯(cuò)誤注入到 booksapp 中需要一個(gè)配置為返回錯(cuò)誤的服務(wù)。為此,您可以啟動(dòng) NGINX 并通過(guò)運(yùn)行將其配置為返回 500s:

 
 
 
 
  1. cat <
  2. apiVersion: v1 
  3. kind: ConfigMap 
  4. metadata: 
  5.   name: error-injector 
  6.   namespace: booksapp 
  7. data: 
  8.  nginx.conf: |- 
  9.     events {} 
  10.     http { 
  11.         server { 
  12.           listen 8080; 
  13.             location / { 
  14.                 return 500; 
  15.             } 
  16.         } 
  17.     } 
  18. --- 
  19. apiVersion: apps/v1 
  20. kind: Deployment 
  21. metadata: 
  22.   name: error-injector 
  23.   namespace: booksapp 
  24.   labels: 
  25.     app: error-injector 
  26. spec: 
  27.   selector: 
  28.     matchLabels: 
  29.       app: error-injector 
  30.   replicas: 1 
  31.   template: 
  32.     metadata: 
  33.       labels: 
  34.         app: error-injector 
  35.     spec: 
  36.       containers: 
  37.         - name: nginx 
  38.           image: nginx:alpine 
  39.           volumeMounts: 
  40.             - name: nginx-config 
  41.               mountPath: /etc/nginx/nginx.conf 
  42.               subPath: nginx.conf 
  43.       volumes: 
  44.         - name: nginx-config 
  45.           configMap: 
  46.             name: error-injector 
  47. --- 
  48. apiVersion: v1 
  49. kind: Service 
  50. metadata: 
  51.   name: error-injector 
  52.   namespace: booksapp 
  53. spec: 
  54.   ports: 
  55.   - name: service 
  56.     port: 8080 
  57.   selector: 
  58.     app: error-injector 
  59. EOF 

注入故障

隨著 booksapp 和 NGINX 的運(yùn)行,現(xiàn)在是時(shí)候在現(xiàn)有的后端(backend)、books 和 新創(chuàng)建的 error-injector 之間部分地分割流量了。這是通過(guò)向集群添加 TrafficSplit 配置來(lái)實(shí)現(xiàn)的:

 
 
 
 
  1. cat <
  2. apiVersion: split.smi-spec.io/v1alpha1 
  3. kind: TrafficSplit 
  4. metadata: 
  5.   name: error-split 
  6.   namespace: booksapp 
  7. spec: 
  8.   service: books 
  9.   backends: 
  10.   - service: books 
  11.     weight: 900m 
  12.   - service: error-injector 
  13.     weight: 100m 
  14. EOF 

當(dāng) Linkerd 看到流向 Books 服務(wù)的流量時(shí), 它會(huì)向原始服務(wù)發(fā)送 9?10 個(gè)請(qǐng)求,向錯(cuò)誤注入器(error injector)發(fā)送 1?10 個(gè)請(qǐng)求。您可以通過(guò)運(yùn)行 stat 并顯式過(guò)濾來(lái)自 webapp 的請(qǐng)求來(lái)查看它的樣子:

 
 
 
 
  1. linkerd viz -n booksapp routes deploy/webapp --to service/books 

與之前的 stat 命令只查看服務(wù)器收到的請(qǐng)求不同, 這個(gè) routes 命令過(guò)濾到所有由 webapp 發(fā)出的 發(fā)往 books 服務(wù)本身的請(qǐng)求。輸出應(yīng)顯示 90% 的成功率:

 
 
 
 
  1. ROUTE       SERVICE   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99 
  2. [DEFAULT]     books    90.08%   2.0rps           5ms          69ms          94ms 

在這種情況下,您正在查看 service 而不是 deployment。如果你運(yùn)行這個(gè)命令并查看 deploy/books,成功率仍然是 100%。這樣做的原因是 error-injector 是一個(gè)完全獨(dú)立的 deployment, 并且流量正在服務(wù)級(jí)別(service level)轉(zhuǎn)移。請(qǐng)求永遠(yuǎn)不會(huì)到達(dá) books pod,而是重新路由到錯(cuò)誤注入器的 pod。

清理

要從集群中刪除本指南中的所有內(nèi)容,請(qǐng)運(yùn)行:

 
 
 
 
  1. kubectl delete ns booksapp 

 【編輯推薦】

  1. 中國(guó)程序員開發(fā)的遠(yuǎn)程桌面火了!Mac可用,僅9MB,支持自建中繼器
  2. 3分鐘帶你徹底搞懂 Kafka
  3. 抖音服務(wù)器帶寬有多大,才能供上億人同時(shí)刷?
  4. 火爆Github!這個(gè)號(hào)稱后現(xiàn)代編輯能超越Vim么?
  5. 2021年最危險(xiǎn)的七大攻擊技術(shù)

分享題目:Linkerd2.10(StepbyStep)—混沌工程之注入故障
標(biāo)題來(lái)源:http://www.dlmjj.cn/article/djoeggj.html