Skywalking容量規劃

前言

Apache skywalking 是一個面向分佈式系統的APM(應用性能監控)工具。專門爲微服務,雲原生和基於容器的架構而設計。其底層是一個分佈式追蹤系統。

Skywalking項目地址

本次容量規劃基於壓測結果來進行估算。

1. 壓測用例

模擬1000個用戶併發,壓測5分鐘。TPS 3400/s (這比較接近生產環境的TPS了),每次請求產生20個span。監控壓測期間skywalking collector節點的CPU 和 memory ,網絡帶寬的使用情況;以及ElasticSearch的磁盤空間使用情況。

1.1 虛擬機配置

角色 CPU Memory Disk Linux release
被測試應用 8Core 4G 20G CentOS 6.5 Final
Skywalking Collector集羣(兩個節點) 8Core 8G 10G CentOS 6.5 Final
ES集羣(三個節點) 4Core 8G 40G CentOS 6.5 Final

首先是總體壓測結果:
在這裏插入圖片描述

在這裏主要關注 TPS: 3400/s

1.2 Collector節點CPU & Memory & 網絡帶寬

  • CPU

在這裏插入圖片描述

  • Memory

在這裏插入圖片描述

可以看到Collector對CPU 和 Memory 要求不高。

  • 網絡帶寬

在這裏插入圖片描述

collector對網絡帶寬要求還是挺高的:平均流入流量 19.55Mbps ,平均流出流量 30.64Mbps。

1.2.1 collector節點數量估算

要讓Collector集羣能撐住所有agent上報的量,需滿足以下條件:Collector集羣的TPS 大於等於 所有agent上報的TPS

  1. 所有的agent上報的TPS = 全網總TPS ✖️ 採樣率 ✖️ 放大係數
  2. Collector集羣的TPS = 單個Collector的TPS ✖️ Collector節點數量
  3. 因此 ,Collector節點數量 = (全網總TPS ✖️ 採樣率 ✖️ 放大係數)/ 單個Collector的TPS
  • 全網總TPS = 270000/s (這是峯值TPS,數據來自CAT監控數據)
  • 採樣率假設使用50%
  • 放大係數(估算時的一種常用手段,主要是防止突發流量時也能保證系統能撐住,2.5-3.5),採用3,表示能撐住3倍突發流量
  • 單個Collector能處理的TPS=20000/s (collector網卡帶寬足夠的情況下,數據來自skywalking 社區)
1.2.1.1 估算結果

Collector節點數量 = (270000 ✖️ 0.5 ✖️ 3) / 20000 = 20.25

根據接入情況,前期可以先部署比如5臺collector節點,後續接入更多的應用時再逐步增加collector。

1.3 ElasticSearch節點磁盤空間使用情況

disk.indices 指的是ES的index所佔的空間

ES採取2個分片0個replicas的策略,相當於數據只保存1份

壓測前

shards disk.indices   host         ip           node
 56         69mb      192.168.6.65 192.168.6.65 gz_210kvm_65
 56       92.1mb      192.168.6.73 192.168.6.73 gz_205kvm_73
 56       34.2mb      192.168.6.66 192.168.6.66 gz_210kvm_66

壓測後

shards disk.indices  host         ip           node
56      267.6mb     192.168.6.73 192.168.6.73 gz_205kvm_73
56        205mb     192.168.6.66 192.168.6.66 gz_210kvm_66
56      109.3mb     192.168.6.65 192.168.6.65 gz_210kvm_65

1.3.1 ES磁盤增長量分析

從上面可以看出,TPS 3400/s,壓測5分鐘,每個請求20個span的情況下,ES的磁盤空間增加386.3M字節。

1.3.2 ES集羣磁盤容量估算

以500個應用實例來估算,假設其中5%的實例(也就是25個)是比較公共的基礎組件,流量會更大一些,比另外的95%的流量高10倍。
假設skywalking的分鐘級別的數據保存90分鐘(這是可以配置的),得到以下容量值:

475 ✖️ 386.3M ✖️(90/5) + 25 ✖️386.3M ✖️ 10 ✖️(90/5) = 2954025M+1554750M = 5041215M = 5.04T

5.04T ✖️ 3(放大係數) = 15.12T

Collector集羣規劃

一共需要20個節點,前期可以先部署5個,後續再加。

  • CPU and Memory

8Core CPU ,16G Memory

  • 網卡帶寬

collector節點千兆網卡。

  • disk size

沒有特殊要求,普通硬盤即可。磁盤容量也沒有特別要求。

ElasticSearch集羣規劃

  • CPU and Memory

    • CPU 32Core+
    • Memory 32G+

ES大量讀寫數據,對內存要求比較高,生產環境的ES ,JVM節點內存至少32G。(當然跟應用的流量規模有關)

  • 網卡帶寬

千兆網卡

  • disk size

整個集羣需要15T

磁盤最好上SSD,性能比機械磁盤好太多,在SKywalking的場景裏實際使用比機械磁盤快約10倍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章