最小化部署
创建时间:2023-10-31 最近修改时间:2024-02-18
#1. 最小化部署
参考软件架构中的最小化部署说明。
#2. 性能规格
#2.1 控制器
- 单控制器最大可管理
2000个采集器 - 控制器集群最大可水平扩展至
50台 - 支持多区域部署,每个区域内可采用
N+1冗余实现高可用
#2.2 采集器
- KVM、容器
- 1C1G 采集器:最高可达
10Gbps/300Kpps采集性能、1Gbps/100Kpps流量分发性能 - 2C2G 采集器:最高可达
20Gbps/600Kpps采集性能、2Gbps/200Kpps流量分发性能
- 1C1G 采集器:最高可达
- ESXi
- 1C2G 采集器:最高可达
5Gbps/300Kpps采集性能、1Gbps/100Kpps流量分发性能 - 4C4G 采集器:最高可达
15Gbps/600Kpps采集性能、2Gbps/200Kpps流量分发性能
- 1C2G 采集器:最高可达
- 专属服务器
- 单机标准配置下最高可达
20Gbps/3Mpps采集性能
- 单机标准配置下最高可达
- Workload
- Linux:最高可达
2Gbps采集性能、1Gbps流量分发性能
- Linux:最高可达
#2.3 数据节点
- 数据节点集群最大可水平扩展至
1000台 - 读写性能参数
- 数据节点写入的数据种类很多
- 流日志、调用日志(
flow_log.l4_flow_log、flow_log.l7_flow_log):默认配置下通常占总数据量的 90% - 聚合指标数据(
flow_metrics、prometheus):默认配置下通常占总数据量的 10% - TCP 时序图、PCAP(
flow_log.l4_packet、flow_log.l7_packet):默认关闭,全部开启时数据量通常大于流日志和调用日志,特别是 PCAP - 性能剖析(
profile):默认仅自监控开启,全部开启时数据量通常大于流日志和调用日志 - 性能事件(
event.perf_event):默认仅少量事件开启,全部开启时数据量可能大于流日志和调用日志 - 其他(
deepflow_system、ext_metrics、event.event、flow_tag):数据量几乎可忽略
- 流日志、调用日志(
- 写入性能
- 一个 16CPU64GB 数据节点通常可写入
100K/s的流日志+调用日志,即 50K/s 流日志 + 50K/s 调用日志,此时 CPU 和系统负载大约为 70% - TCP 时序图数据:单个 TCP 包头平均消耗 10 字节存储空间
- PCAP 数据
- 数据节点磁盘写入吞吐量大于 128MB/s 时,最高可写入对应网络速率为
1Gbps的 PCAP - 数据节点磁盘写入吞吐量大于 1.2GB/s 时,最高可写入对应网络速率为
10Gbps的 PCAP
- 数据节点磁盘写入吞吐量大于 128MB/s 时,最高可写入对应网络速率为
- 一个 16CPU64GB 数据节点通常可写入
- 查询性能
- ClickHouse 的查询性能通常可认为是
100M 字段/s,即每秒可扫描 1 亿个字段,即查询 10 列数据时每秒可扫描 1000 万行 - 但用户可理解的查询性能难以量化,不同页面、不同时间范围下的查询压力均不一样,可以按下述经验值来进行估计
- ClickHouse 的查询性能通常可认为是
- 数据节点写入的数据种类很多
- 容量预估经验参考
- 场景:
网络监控和调用监控授权均开启,且采集器使用默认配置,即 TCP 时序图、PCAP、性能剖析、性能事件无数据或仅有微量自监控数据 - 若仅有超级管理员使用 DeepFlow,即并发查询用户量等于 1 时:
- 一个 16CPU/64GB 的数据节点大约可服务于 100 个 16CPU/64GB 规格的被监控主机
- 对于专属采集器,可按
10Gbps镜像流量大约对应100 个 16CPU/64GB 规格的被监控主机来估计 - 确保数据节点 CPU、内存、系统负载低于 70% 水位,若 24 小时内多次超过此水位线时需要扩容
- 若有多个用户同时使用 DeepFlow,需要根据 CPU、内存、系统负载情况来进行预估,例如若并发查询用户量约等于 10 时:
- 一个 16CPU/64GB 的数据节点大约可服务于 50 个 16CPU/64GB 规格的被监控主机
- 此外,还需考虑高可用场景,由于数据节点仅存储单份数据,因此考虑
N+1 冗余即可- 即需要保证有一台数据节点停机的情况下算力依然足够
- 建议根据试运行阶段的实际数据量大小和数据节点负载来预估容量,并按需调整配置以降低存储开销
- 注意确保流日志、调用日志均已全量写入,没有数据丢弃的告警
- 场景:
#3. 资源规格
#3.1 控制器
| 项目 | 最低要求 | 说明 |
|---|---|---|
| CPU | 8核 | 逻辑CPU / 超线程数量 |
| 内存 | 64G | |
| 系统磁盘 | 200Gx2 | 物理机2块磁盘RAID1(虚拟机不需要) |
| 数据磁盘 | 400Gx2 | 物理机2块磁盘RAID1(虚拟机不需要),存储系统监控数据(InfluxDB)、告警事件/资源变更事件/系统日志数据(ES) |
| Web访问网口 | 1个千兆 | 打开控制器高可用时需配置虚IP |
| 控制面网口 | 1个万兆 | 参考下方带宽预估章节 |
#3.2 采集器
#3.2.1 KVM/K8s
在KVM、K8S节点环境下,采集器进程形态资源最低要求为:
| 项目 | 最低要求 | 说明 |
|---|---|---|
| CPU | 1逻辑核 | |
| 内存 | 1G | |
| 磁盘 | 100M | /var/log目录所在分区空闲空间 |
| 网络 | 采集:和控制器IP通信 | |
| 分发:和分发点(隧道对端IP)通信 | ||
| 监控诊断:和数据节点IP通信 | ||
| 操作系统 | CentOS 7/8, Kernel >= 3.0 | |
| Ubuntu 16/18, Kernel >= 3.0 | ||
| Debian 10, Kernel >= 3.0 | ||
| 虚拟交换机 | Open vSwitch, tap接口MAC地址后5字节需与虚拟机MAC地址相同 | |
| Linux Bridge, tap接口MAC地址后5字节需与虚拟机MAC地址相同 | ||
| K8S Flannel | ||
| K8S Calico |
#3.2.2 ESXi
在vSphere环境,运行采集器的虚拟机资源最低要求为:
| 项目 | 最低要求 | 说明 |
|---|---|---|
| CPU | 1逻辑核 | |
| 内存 | 2G | |
| 磁盘 | 30G系统盘 | |
| 网络 | 采集:和控制器IP通信 | |
| 分发:和分发点(隧道对端IP)通信 | ||
| 监控诊断:和数据节点IP通信 | ||
| 虚拟交换机 | vSphere VDS | |
| vSphere VSS |
注:操作系统本身会消耗一部分CPU和内存资源,上述最低规格下的采集器性能约为KVM环境的70%。
#3.2.3 专属服务器
| 项目 | 最低要求 | 说明 |
|---|---|---|
| CPU | 16核 | 逻辑CPU / 超线程数量 |
| 内存 | 64G | |
| 系统磁盘 | 200Gx2 | 2块磁盘RAID1 |
| 数据磁盘 | 800Gx2 | 2块磁盘RAID1,存储PCAP文件 |
| 控制面网口 | 1个千兆 | 同时还用于接收NetFlow、sFlow |
| 数据面网口 | 4个万兆 | 最大处理20Gbps/3Mpps流量 |
#3.2.4 隧道解封装
| 项目 | 最低要求 | 说明 |
|---|---|---|
| CPU | 16核 | 逻辑CPU / 超线程数量 |
| 内存 | 16G | |
| 系统磁盘 | 200Gx2 | 2块磁盘RAID1 |
| 控制面网口 | 1个千兆 | |
| 数据面网口 | 2个万兆 | 10Gbps/10Mpps,接收分发流量、发送隧道解封装后的流量 |
#3.2.5 Workload
直接运行于客户虚拟机、裸金属服务器中时,采集器进程形态资源最低要求为:
| 项目 | 最低要求 | 说明 |
|---|---|---|
| CPU | CPU消耗与流量成正比,可参考性能测试报告,CPU过载保护最低可设置1逻辑核 | |
| 内存 | 256M | |
| 磁盘 | 100M | /var/log目录所在分区空闲空间 |
| 网络 | 采集:和控制器IP通信 | |
| 分发:和分发点(隧道对端IP)通信 | ||
| 监控诊断:和数据节点IP通信 | ||
| 操作系统 | CentOS 7/8, Kernel >= 3.0 | |
| Ubuntu 16/18, Kernel >= 3.0 | ||
| Debian 10, Kernel >= 3.0 | ||
| Windows Server 2008R2(仅 Trident)、2012、2016、2019 |
#3.3 数据节点
#3.3.1 最小配置
| 项目 | 配置 | 说明 |
|---|---|---|
| CPU | 8核 | 逻辑CPU / 超线程数量 |
| 内存 | 64G | |
| 系统磁盘 | 200Gx2 | 物理机2块磁盘RAID1(虚拟机不用RAID) |
| 数据磁盘1 | 400Gx2 SSD | 物理机2块磁盘RAID1(虚拟机不用RAID),存储全景图指标数据、流量日志数据(ClickHouse) |
| 数据磁盘2 | 400Gx2 | 物理机2块磁盘RAID1(虚拟机不用RAID),存储PCAP文件 |
| 控制面网口 | 1个万兆 | 参考下方带宽预估章节 |
注意:数据存储高可用场景下,处理性能最高可能折半。
#3.3.2 虚拟机标准配置
| 项目 | 配置 | 说明 |
|---|---|---|
| CPU | 20核 | 逻辑CPU / 超线程数量 |
| 内存 | 128G | |
| 系统磁盘 | 200Gx1 | |
| 数据磁盘1 | 800Gx1 SSD | 存储全景图指标数据、流量日志数据(ClickHouse) |
| 数据磁盘2 | 800Gx1 | 存储PCAP文件 |
| 控制面网口 | 1个万兆 | 参考下方带宽预估章节 |
注意:数据存储高可用场景下,处理性能最高可能折半。
#3.3.3 物理机标准配置
| 项目 | 配置 | 说明 |
|---|---|---|
| CPU | 40核 | 逻辑CPU / 超线程数量 |
| 内存 | 256G | |
| 系统磁盘 | 200Gx2 | 物理机2块磁盘RAID1 |
| 数据磁盘1 | 800Gx2 SSD | 物理机2块磁盘RAID1,存储全景图指标数据、流量日志数据(ClickHouse) |
| 数据磁盘2 | 800Gx2 | 物理机2块磁盘RAID1,存储PCAP文件 |
| 控制面网口 | 1个万兆 | 参考下方带宽预估章节 |
注意:数据存储高可用场景下,处理性能最高可能折半。
#4. 集群带宽需求预估
#4.1 虚拟化采集器与数据节点间
假定流量模型为:
- 平均每个宿主机/容器节点的流量为1Gbps
- 平均包长625~1500字节(虚拟网络环境大包为主)
- 平均每个连接10~20个包,平均每1Gbps流量的连接速率为4K/s~20K/s
控制面网口带宽预估:
- 全景图:接收1K个采集器的遥测数据大约消耗100Mbps带宽,约为业务流量的
0.01% - 流日志:接收1K个采集器的流日志大约消耗4Gbps~20Gbps带宽,约为业务流量的
0.4%~2%,取决于连接速率 - PCAP:若打开
全网PCAP策略且设置截断=0,接收1K个采集器的压缩包头大约消耗20Gbps~50Gbps带宽,约为业务流量的2%~5%,取决于平均包长
#4.2 专属服务器采集器与数据节点间
- 若全部打开PCAP截断=0的策略,每处理20Gbps镜像流量大约消耗0.4Gbps~1Gbps带宽用于发送压缩包头,约为业务流量的
2%~5%,取决于平均包长
#4.3 控制器与采集器间
- 控制器同时向1000个采集器同步全量策略和资源信息大约需消耗1G带宽