前言
Apache skywalking 是一個面向分佈式系統的APM(應用性能監控)工具。專門爲微服務,雲原生和基於容器的架構而設計。其底層是一個分佈式追蹤系統。
本次容量規劃基於壓測結果來進行估算。
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。
- 所有的agent上報的TPS = 全網總TPS ✖️ 採樣率 ✖️ 放大係數
- Collector集羣的TPS = 單個Collector的TPS ✖️ Collector節點數量
- 因此 ,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倍。