網絡彈性之超時(timeout)

總目錄索引:istio從入門到放棄系列nginx

一、網絡彈性介紹
docker

    網絡彈性也稱爲運維彈性,是指網絡在遇到災難事件時快速恢復和繼續運行的能力。災難事件的範疇很普遍,好比長時間停電、網絡設備故障、惡意***等
api

二、Istio 超時實例
tomcat

    須要結合 Istio 故障注入模擬被調用方響應請求慢的場景,該實例的架構圖以下:
bash

1590379015698550.png

   架構說明以下,本實例就是模擬客戶端調用 nginx,nginx 將請求轉發給 tomcat 的常見功能。tomcat  響應請求設置爲 10s(經過故障注入實現,至關於 sleep 10s 邏輯),nginx 設置 client 的請求超時時間爲 2s。由於  nginx 須要在 2s 內返回給 client,而 nginx 請求 tomcat 卻須要 10s,所以模擬 client 調用 nginx  超時的情景。
網絡

2.1 部署客戶端架構

apiVersion: apps/v1
kind: Deployment
metadata:
  name: client
spec:
  replicas: 1
  selector:
    matchLabels:
      app: client
  template:
    metadata:
      labels:
        app: client
    spec:
      containers:
      - name: busybox
        image: busybox
        imagePullPolicy: IfNotPresent
        command: [ "/bin/sh", "-c", "sleep 3600" ]

2.2 部署nginx和tomcat實例app

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    server: nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    server: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      server: nginx
  template:
    metadata:
      labels:
        server: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14-alpine
        imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
spec:
  selector:
    server: tomcat
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
  labels:
    server: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      server: tomcat
  template:
    metadata:
      labels:
        server: tomcat
    spec:
      containers:
      - name: tomcat
        image: docker.io/kubeguide/tomcat-app:v1
        imagePullPolicy: IfNotPresent

2.3  Istio 虛擬服務資源運維

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginx-vs
spec:
  hosts:
  - nginx-svc
  http:
  - route:
    - destination:
        host: nginx-svc
    timeout: 2s
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: tomcat-vs
spec:
  hosts:
  - tomcat-svc
  http:
  - fault:
      delay:
        percentage:
          value: 100
        fixedDelay: 10s
    route:
    - destination:
        host: tomcat-svc

2.4 部署以上示例,並進行istio注入ide

istioctl kube-inject -f test-client.yaml | kubectl apply -f -

istioctl kube-inject -f test-deploy.yaml | kubectl apply -f -

image-20200529155003268.png

三、配置nginx轉發tomcat

kubectl exec -it nginx-579d7f7ff-9pspn /bin/sh

修改完後讓配置生效

nginx  -t

nginx  -s  reload

修改內容以下

image-20200529155832030.png

四、客戶端驗證

kubectl exec -it client-8496866cdf-vkmcw /bin/sh

wget -q -O - http://nginx-svc

wget -q -O - http://tomcat-svc:8080

image-20200529160213693.png

image-20200529160225140.png

爲了實驗效果,設置長了時間,和設置的nginx   2s和tomcat  10s是吻合的,除去操做時間

參考文章:https://blog.51cto.com/14625168/2498209

相關文章
相關標籤/搜索