当前位置:网站首页>10 exemples les plus courants de gestion du trafic istio, que savez - vous?
10 exemples les plus courants de gestion du trafic istio, que savez - vous?
2022-07-06 04:04:00 【Wanmao Academy】
10 - Oui. Istio Gestion du trafic Les exemples les plus courants,Il est fortement recommandé queCollectionLève - toi.,En cas de besoin.
Pour faciliter la compréhension,ParIstioOfficially providedBookinfoExemple d'application,Exportation Istio Exemples courants de gestion du trafic.
BookinfoLe schéma appliqué est le suivant::

Parmi eux,Contient quatre microservices distincts:
productpage:AppelezdetailsEtreviewsDeux services,Utilisé pour générer des pages.details:Contient des informations sur le livre.reviews:Contient des commentaires sur les livres.Il appelle aussi ratings Microservices.rating:Contient des informations sur la notation des livres.
Parmi eux,reviews Services disponibles 3 Versions:
- v1 La version n'appelle pas
ratingsServices. - v2 La version appelle
ratingsServices,Et utiliser 1 À 5 - Oui.NoirIcône stellaire pour afficher les informations de notation. - v3 La version appelle
ratingsServices,Et utiliser 1 À 5 - Oui.RougeIcône stellaire pour afficher les informations de notation.
Transfert de trafic
Objectifs1:Prends ça.
reviewsTout le trafic du service est acheminé vers v1Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Objectifs2:Prends ça.
reviewsServices50% Transfert de trafic vers v3Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Objectifs3:Prends ça.
reviewsTout le trafic du service est acheminé vers v3Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Routage basé sur l'identité de l'utilisateur
Objectifs:Du nom OneMore Tout le trafic des utilisateurs est acheminé vers v2Version, Tout le trafic est acheminé vers v1Version.
Istio Il n'y a pas de mécanisme spécial intégré pour l'identité de l'utilisateur. Dans l'exemple d'application ,productpageLe service est disponible dans tous les reviews Services HTTP Une personnalisation a été ajoutée à la demande end-user En - tête de la demande, Sa valeur est le nom d'utilisateur .
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Injection HTTP Défaut de retard
Objectifs:Utilisateurs OneMore Au moment de la visite,
ratingsLe Service injecte un 2 Délai de quelques secondes,productpageLa page est à environ 2 Le chargement des secondes est terminé sans erreur .
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- match:
- headers:
end-user:
exact: OneMore
fault:
delay:
percentage:
value: 100.0
fixedDelay: 2s
route:
- destination:
host: ratings
subset: v1
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- labels:
version: v1
name: v1
Injection HTTP Interrompre la faute
Objectifs:Utilisateurs OneMore Au moment de la visite,
ratingsLe Service injecte un 503 Échec de l'interruption de ,productpageLa page peut être chargée immédiatement ,Affichage simultané “Ratings service is currently unavailable” De telles nouvelles.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- fault:
abort:
httpStatus: 503
percentage:
value: 100
match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: ratings
subset: v1
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- labels:
version: v1
name: v1
Définir le délai de demande
Tout d'abord,,Utilisateurs OneMore Au moment de la visite, ratings Le Service injecte un 2 Délai de quelques secondes,productpage La page est à environ 2 Le chargement des secondes est terminé sans erreur .
Comme indiqué ci - dessusInjection HTTP Défaut de retard Exécution des opérations,Plus de détails..
Objectifs:Utilisateurs OneMore Au moment de la visite,
reviewsLe délai de demande pour le service est fixé à 1 Secondes,Affichage simultané “Sorry, product reviews are currently unavailable for this book.” De telles nouvelles.
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: reviews
subset: v2
timeout: 1s
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
InJaeger Vous pouvez voir les chaînes d'appels spécifiques ci - dessous :

Set request retry
Tout d'abord,,Utilisateurs OneMore Au moment de la visite, ratings Le Service injecte un 2 Délai de quelques secondes,productpage La page est à environ 2 Le chargement des secondes est terminé sans erreur .
Comme indiqué ci - dessusInjection HTTP Défaut de retard Exécution des opérations,Plus de détails..
Objectifs:Utilisateurs OneMore Au moment de la visite,
reviewsLe nombre de demandes de service réessayées est 2Une fois, Le délai de retry est 0.5 Secondes,Affichage simultané “Sorry, product reviews are currently unavailable for this book.” Un tel message d'erreur .
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: reviews
subset: v2
retries:
attempts: 2
perTryTimeout: 0.5s
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Rejeter la cible IPDemandes
Objectifs:Sauf queIPPour
10.201.240.131Les clients de/api/v1/products/1, D'autres clients ont refusé la demande .
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: deny-by-ip
spec:
selector:
matchLabels:
app: productpage
action: DENY
rules:
- to:
- operation:
paths: ["/api/v1/products/1"]
when:
- key: remote.ip
notValues: ["10.201.240.131"]
Fusible
Objectifs:Paramètres
detailsLa concurrence maximale pour les services est de 1.
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: details
spec:
host: details
trafficPolicy:
connectionPool:
tcp:
maxConnections: 1
http:
http1MaxPendingRequests: 1
maxRequestsPerConnection: 1
Peut être utilisé Fortio Effectuer un essai de charge,Le nombre de transmissions simultanées est 2 Connexion à(-c 2),Demande 20 Une fois(-n 20):
kubectl exec fortio-deploy-684b6b47f8-tzsg8 -c fortio -- /usr/bin/fortio load -c 3 -qps 0 -n 20 -loglevel Warning http://details:9080/details/0
Parmi eux,fortio-deploy-684b6b47f8-tzsg8- Oui.FortioDePodNom,Les effets sont les suivants:

Miroir de flux
Objectifs: Acheminer tout le trafic vers reviewsServices v2 Version, Et miroir tout le trafic à v3 Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v2
mirror:
host: reviews
subset: v3
mirrorPercentage:
value: 100.0
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Exécutez la commande suivante pour voirreviewsServices v3 Version Envoy Journal d'accès:
kubectl logs -l app=reviews,version=v3 -c istio-proxy
Je vois.reviewsServices v3 Version du Journal appelée :
{
"authority": "reviews-shadow:9080",
"bytes_received": 0,
"bytes_sent": 375,
"connection_termination_details": null,
"downstream_local_address": "10.1.1.64:9080",
"downstream_remote_address": "10.1.1.59:0",
"duration": 1914,
"method": "GET",
"path": "/reviews/0",
"protocol": "HTTP/1.1",
"request_id": "b79cefe6-1277-9c39-b398-f94a704840cc",
"requested_server_name": "outbound_.9080_.v3_.reviews.default.svc.cluster.local",
"response_code": 200,
"response_code_details": "via_upstream",
"response_flags": "-",
"route_name": "default",
"start_time": "2022-06-27T07:34:19.129Z",
"upstream_cluster": "inbound|9080||",
"upstream_host": "10.1.1.64:9080",
"upstream_local_address": "127.0.0.6:59837",
"upstream_service_time": "1913",
"upstream_transport_failure_reason": null,
"user_agent": "curl/7.79.1",
"x_forwarded_for": "10.1.1.59"
}
IngressLe routage de
Objectifs:En - tête de la demande
app-idPourdetailsTout le trafic est acheminé versdetailsEn service.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- '*'
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
- match:
- headers:
app-id:
exact: details
route:
- destination:
host: details
port:
number: 9080
UtilisercurlVérifiez les commandes.:
curl -H "app-id: details" -v http://127.0.0.1/details/2
Les résultats sont les suivants:
* Trying 127.0.0.1:80...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET /details/2 HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.79.1
> Accept: */*
> app-id: details
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< content-type: application/json
< server: istio-envoy
< date: Tue, 28 Jun 2022 07:14:40 GMT
< content-length: 178
< x-envoy-upstream-service-time: 4
<
{"id":2,"author":"William Shakespeare","year":1595,"type":"paperback","pages":200,"publisher":"PublisherA","language":"English","ISBN-10":"1234567890","ISBN-13":"123-1234567890"}
* Connection #0 to host 127.0.0.1 left intact
Retour aux résultats comme vous pouvez le voir ,Visited bydetailsServices.
Enfin,Merci d'être si beau,Rends - le - moi.- Oui..
边栏推荐
- [FPGA tutorial case 11] design and implementation of divider based on vivado core
- Flask learning and project practice 8: introduction and use of cookies and sessions
- C mouse event and keyboard event of C (XXVIII)
- Global and Chinese markets for patent hole oval devices 2022-2028: Research Report on technology, participants, trends, market size and share
- asp. Core is compatible with both JWT authentication and cookies authentication
- MySQL reads missing data from a table in a continuous period of time
- MySql數據庫root賬戶無法遠程登陸解决辦法
- Python book learning notes - Chapter 09 section 01 create and use classes
- pd. to_ numeric
- Global and Chinese market of plasma separator 2022-2028: Research Report on technology, participants, trends, market size and share
猜你喜欢

KS003基于JSP和Servlet实现的商城系统
![[FPGA tutorial case 11] design and implementation of divider based on vivado core](/img/39/f337510c2647d365603a8485583a20.png)
[FPGA tutorial case 11] design and implementation of divider based on vivado core

登录mysql输入密码时报错,ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YES

WPF效果第一百九十一篇之框选ListBox
![[optimization model] Monte Carlo method of optimization calculation](/img/e6/2865806ffbbfaa8cc07ebf625fcde6.jpg)
[optimization model] Monte Carlo method of optimization calculation
![[Massey] Massey font format and typesetting requirements](/img/27/6b641551d6d8699683972f40f3b8e5.jpg)
[Massey] Massey font format and typesetting requirements

Factors affecting user perception

C#(二十九)之C#listBox checkedlistbox imagelist

KS008基于SSM的新闻发布系统

MySQL about self growth
随机推荐
Benefits of automated testing
【PSO】基于PSO粒子群优化的物料点货物运输成本最低值计算matlab仿真,包括运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用
Global and Chinese market of plasma separator 2022-2028: Research Report on technology, participants, trends, market size and share
【按鍵消抖】基於FPGA的按鍵消抖模塊開發
Mapping between QoE and KQI
AcWing 243. A simple integer problem 2 (tree array interval modification interval query)
The global and Chinese market of negative pressure wound therapy unit (npwtu) 2022-2028: Research Report on technology, participants, trends, market size and share
Python book learning notes - Chapter 09 section 01 create and use classes
Do you know cookies, sessions, tokens?
Thread sleep, thread sleep application scenarios
【可调延时网络】基于FPGA的可调延时网络系统verilog开发
Mathematical modeling regression analysis relationship between variables
Database, relational database and NoSQL non relational database
How can programmers resist the "three poisons" of "greed, anger and ignorance"?
MySQL reads missing data from a table in a continuous period of time
Interface idempotency
[introduction to Django] 11 web page associated MySQL single field table (add, modify, delete)
Failure causes and optimization methods of LTE CSFB
Solution to the problem that the root account of MySQL database cannot be logged in remotely
How to modify field constraints (type, default, null, etc.) in a table