摘要:在第三部分中,我們將了解如何在服務(wù)網(wǎng)格中啟用分布式跟蹤。在此部署模型中,被部署為服務(wù)的在本例中為客戶端。會在服務(wù)調(diào)用之間添加一些追蹤,并發(fā)送到或您的跟蹤提供商目前支持和。這些示例的上游服務(wù)是。
本博客是深入研究Envoy Proxy和Istio.io 以及它如何實(shí)現(xiàn)更優(yōu)雅的方式來連接和管理微服務(wù)系列文章的一部分。
這是接下來幾個(gè)部分的想法(將在發(fā)布時(shí)更新鏈接):
斷路器(第一部分)
重試/超時(shí)(第二部分)
分布式跟蹤(第三部分)
Prometheus的指標(biāo)收集(第四部分)
rate limiter(第五部分)
第三部分 - 使用envoy proxy 實(shí)現(xiàn)分布式追蹤第一篇博文向您介紹了Envoy Proxy的斷路功能實(shí)現(xiàn)。在第二部分中,仔細(xì)研究了如何啟用額外的彈性功能,如超時(shí)和重試。在第三部分中,我們將了解如何在服務(wù)網(wǎng)格中啟用分布式跟蹤。有意進(jìn)行一些簡單的演示,因此我可以多帶帶說明模式和用法。請下載此演示的源代碼并按照說明進(jìn)行操作!
該演示由一個(gè)客戶端和一個(gè)服務(wù)組成。客戶端是一個(gè)Java http應(yīng)用程序,模擬對“上游”服務(wù)進(jìn)行http調(diào)用(注意,我們在這里使用Envoys術(shù)語,并貫穿整個(gè)repo)。客戶端打包在docker.io/ceposta/http-envoy-client:latest的Docker鏡像中。除了http-client Java應(yīng)用程序之外,還有Envoy Proxy的一個(gè)實(shí)例。在此部署模型中,Envoy被部署為服務(wù)的sidercar(在本例中為http客戶端)。當(dāng)http-client進(jìn)行出站調(diào)用(到“上游”服務(wù))時(shí),所有調(diào)用都通過Envoy Proxy sidercar。envoy會在服務(wù)調(diào)用之間添加一些追蹤headers,并發(fā)送到Zipkin(或您的跟蹤提供商...... Envoy目前支持Zipkin和Lightstep)。
這些示例的“上游”服務(wù)是httpbin.org。 httpbin.org允許我們輕松模擬HTTP服務(wù)行為。它很棒,所以如果你沒有看到它,請查看它。
這個(gè)traceing 演示有自己的envoy.json配置文件。我絕對建議您查看配置文件每個(gè)部分的參考文檔,以幫助理解完整配置。 datawire.io的優(yōu)秀人員也為Envoy及其配置提供了一個(gè)很好的介紹,你也應(yīng)該檢查一下。
運(yùn)行 tracing demo對于跟蹤演示,我們將使用以下如下的配置來配置我們的Envoy(請參閱其余上下文的完整配置):
"tracing": { "operation_name": "egress" }, ... "tracing": { "http": { "driver": { "type": "zipkin", "config": { "collector_cluster": "zipkin", "collector_endpoint": "/api/v1/spans" } } } }, ... { "name": "zipkin", "connect_timeout_ms": 1000, "type": "strict_dns", "lb_type": "round_robin", "hosts": [ { "url": "tcp://zipkin:9411" } ] }
這里我們配置跟蹤驅(qū)動程序和跟蹤集群。在這種情況下,要運(yùn)行此演示,我們需要啟動Zipkin服務(wù)器:
首先我們停止已經(jīng)存在的演示demo:
./docker-stop.sh
啟動zipkin服務(wù):
./tracing/docker-run-zipkin.sh
會將zipkin暴露在端口9411上。如果您使用minikube或類似的東西來運(yùn)行這些演示,您可以直接將minikube端口導(dǎo)出到您的主機(jī),如下所示:
./port-forward-minikube.sh 9411
一旦你啟動并運(yùn)行Zipkin,訪問該服務(wù)(即,在minikube上,在進(jìn)行端口轉(zhuǎn)發(fā)后,它將只是http:// localhost:9411)。你應(yīng)該看看Zipkin:
現(xiàn)在我們已經(jīng)啟動了zipkin服務(wù)器,讓我們啟動我們的跟蹤演示:
/docker-run.sh -d tracing
然后讓我們用客戶端訪問服務(wù):
./curl.sh -vvvv localhost:15001/get
我們將看到如下的輸出:
< HTTP/1.1 200 OK * Server envoy is not blacklisted < server: envoy < date: Thu, 25 May 2017 06:31:02 GMT < content-type: application/json < access-control-allow-origin: * < access-control-allow-credentials: true < x-powered-by: Flask < x-processed-time: 0.000982999801636 < content-length: 402 < via: 1.1 vegur < x-envoy-upstream-service-time: 142 < { "args": {}, "headers": { "Accept": "*/*", "Connection": "close", "Host": "httpbin.org", "User-Agent": "curl/7.35.0", "X-B3-Sampled": "1", "X-B3-Spanid": "0000b825f82b418d", "X-B3-Traceid": "0000b825f82b418d", "X-Ot-Span-Context": "0000b825f82b418d;0000b825f82b418d;0000000000000000;cs" }, "origin": "68.3.84.124", "url": "http://httpbin.org/get" }
現(xiàn)在,如果我們轉(zhuǎn)到Zipkin服務(wù)器,我們應(yīng)該看到此調(diào)用的單個(gè)跨度/跟蹤(注意,您可能需要調(diào)整zipkin過濾器中的開始/停止時(shí)間:
這里我們有一個(gè)只有一個(gè)span的跟蹤(這是我們所期望的,因?yàn)槲覀兊腅nvoy演示客戶端直接與沒有Envoy的外部服務(wù)調(diào)用......如果上游服務(wù)也有啟用了zipkin的Envoy,我們將看到服務(wù)之間的全部span)。
如果我們點(diǎn)擊span以查看更多細(xì)節(jié),我們會看到如下內(nèi)容:
PS請注意,服務(wù)體系結(jié)構(gòu)中的每個(gè)服務(wù)都應(yīng)該與Envoy一起部署并參與分布式跟蹤。這種方法的優(yōu)點(diǎn)在于跟蹤是從應(yīng)用程序帶外進(jìn)行的。但是,為了跟蹤要正確傳播的上下文,應(yīng)用程序開發(fā)人員有責(zé)任正確傳播正確的header,以便不同的span正確關(guān)聯(lián)。檢查zipkin以獲取更多詳細(xì)信息,但至少要傳播這些header(如上所示):
x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/33139.html
摘要:我們將直接向發(fā)送流量,以使其幫幫助處理熔斷。讓我們調(diào)用我們的服務(wù)我們將看到以下的輸出我們也能看到我們五次的調(diào)用成功了。 本博客是深入研究Envoy Proxy和Istio.io 以及它如何實(shí)現(xiàn)更優(yōu)雅的方式來連接和管理微服務(wù)系列文章的一部分。 這是接下來幾個(gè)部分的想法(將在發(fā)布時(shí)更新鏈接): 斷路器(第一部分) 重試/超時(shí)(第二部分) 分布式跟蹤(第三部分) Prometheus的指標(biāo)...
摘要:我們將直接向發(fā)送流量,以使其幫幫助處理熔斷。讓我們調(diào)用我們的服務(wù)我們將看到以下的輸出我們也能看到我們五次的調(diào)用成功了。 本博客是深入研究Envoy Proxy和Istio.io 以及它如何實(shí)現(xiàn)更優(yōu)雅的方式來連接和管理微服務(wù)系列文章的一部分。 這是接下來幾個(gè)部分的想法(將在發(fā)布時(shí)更新鏈接): 斷路器(第一部分) 重試/超時(shí)(第二部分) 分布式跟蹤(第三部分) Prometheus的指標(biāo)...
摘要:為安裝過濾器的偵聽器上的每個(gè)新請求調(diào)用服務(wù),路由表指定應(yīng)調(diào)用服務(wù)。使用了令牌桶算法來限流。 本博客是深入研究Envoy Proxy和Istio.io 以及它如何實(shí)現(xiàn)更優(yōu)雅的方式來連接和管理微服務(wù)系列文章的一部分。 這是接下來幾個(gè)部分的想法(將在發(fā)布時(shí)更新鏈接): 斷路器(第一部分) 重試/超時(shí)(第二部分) 分布式跟蹤(第三部分) Prometheus的指標(biāo)收集(第四部分) rate ...
摘要:在第二部分中,我們將詳細(xì)介紹如何啟用其他彈性功能,如超時(shí)和重試。在此部署模型中,被部署為服務(wù)的在本例中為客戶端。這些示例的上游服務(wù)是。它們可以幫助傳播故障或?qū)赡苷趻暝膬?nèi)部服務(wù)造成類型攻擊。此延遲應(yīng)足以觸發(fā)超時(shí)。 本博客是深入研究Envoy Proxy和Istio.io 以及它如何實(shí)現(xiàn)更優(yōu)雅的方式來連接和管理微服務(wù)系列文章的一部分。 這是接下來幾個(gè)部分的想法(將在發(fā)布時(shí)更新鏈接):...
摘要:,托管于騰訊云容器平臺容器編排工具。適配我們目前的服務(wù)部署在騰訊云托管,節(jié)點(diǎn)使用核的網(wǎng)絡(luò)增強(qiáng)型機(jī)器,所有的后端服務(wù)都以部署,集群外部署高可用支持集群內(nèi)服務(wù)發(fā)現(xiàn),數(shù)據(jù)庫以為主,消息隊(duì)列采用。 距離2017年的見聞技術(shù)架構(gòu)調(diào)整接近2年,隨著業(yè)務(wù)線的發(fā)展,見聞技術(shù)部的項(xiàng)目數(shù)量、項(xiàng)目架構(gòu)類型、基礎(chǔ)設(shè)施規(guī)模、服務(wù)變更頻率都在不斷地增長,帶給SRE的挑戰(zhàn)是如何能更快地助力于開發(fā)人員更快更穩(wěn)定地部署...
閱讀 3478·2021-11-08 13:30
閱讀 3584·2019-08-30 15:55
閱讀 688·2019-08-29 15:16
閱讀 1750·2019-08-26 13:57
閱讀 2091·2019-08-26 12:18
閱讀 789·2019-08-26 11:36
閱讀 1733·2019-08-26 11:30
閱讀 3017·2019-08-23 16:46