Istio架構

banq發表於2018-08-01
[img index=1]
Istio由下面幾個部分組成:Pilot,Mixer,Ingress-Controller和Egress-Controller,以及Istio CA(證書頒發機構):

Pilot - 負責在執行時配置Envoy和Mixer。

Envoy - 每個微服務的Sidecar代理,用於處理叢集中服務之間以及從服務到外部服務之間的入口/出口流量。代理形成一個安全的微服務網格,提供豐富的功能如服務發現、豐富的第7層路由、斷路器、策略實施和遙測記錄/報告功能。類似Spring cloud全家桶中的eureka、ribbon和Hystrix。

Mixer- 在基礎架構後端之上建立可移植層。在基礎架構級別實施ACL、速率限制、配額、身份驗證、請求跟蹤和遙測收集等策略。

Ingress/Egress(入口/出口) - 配置基於路徑的路由。類似Zuul API閘道器路由功能

Istio CA - 透過TLS保護服務通訊。提供金鑰管理系統,以自動化金鑰和證書生成,分發,輪換和撤銷

Istio的具體特點

1. 控制路由:大規模的微服務架構需要更高階的服務之間的通訊控制。流量管理的一個方面是基於HTTP請求控制流量路由,例如使用者代理字串,IP地址或cookie。

以下yaml配置檔案是將使用者“jason”的所有流量傳送到評論:v2

spec:
  hosts:
    - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v1
<p class="indent">

這些配置類似Spring Cloud的API閘道器Zuul路由配置,類似Nginx,只要將這yaml配置部署到k8s中API網格即可生效:

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
<p class="indent">


分割流量:能進行黑白或藍綠測試,包括部署金絲雀版本:

spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50
<p class="indent">


這些路由資訊可以透過命令實時獲得:

master $ istioctl get virtualservices
VIRTUAL-SERVICE NAME   GATEWAYS           HOSTS     HTTP     TCP      NAMESPACE   AGE
bookinfo                           bookinfo-gateway   *                1                  0              default     3m

<p class="indent">

上述結果顯示:微服務bookinfo 的API閘道器是bookinfo-gateway。


2.負載監測:Istio可以深入瞭解應用程式的工作方式和效能指標。生成各種圖表:

Grafana:這是Istio Grafana儀表板。儀表板返回當前正在處理的請求總數,以及每次呼叫的錯誤數和響應時間。由於Istio管理整個服務之間的通訊,因此儀表板將突出顯示彙總的總計和單個服務級別資訊的細分。

Jaguar:為每個HTTP請求提供跟蹤資訊。它顯示了進行了哪些呼叫以及每個請求中花費的時間。可檢視單個請求和HTTP呼叫的詳細資訊,這是識別問題和潛在效能瓶頸的絕佳方法。

Service Graph服務圖:隨著系統的發展,可能難以視覺化服務之間的依賴關係,服務圖將繪製系統如何連線的依賴關係樹。

[img index=2]

使用Weave Scope視覺化群集:Service Graph顯示了系統連線方式的高階概述,而Weave Scope工具為整個群集提供了強大的視覺化和除錯工具。使用Scope,可以檢視每個pod中正在執行的程式以及哪些pod正在相互通訊。 這允許使用者瞭解Istio及其應用程式的行為方式。

[img index=3]

快速體驗Istio

[該貼被banq於2018-08-01 12:04修改過]

相關文章