最小化部署

创建时间: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 流量分发性能
  • ESXi
    • 1C2G 采集器:最高可达 5Gbps/300Kpps 采集性能、1Gbps/100Kpps 流量分发性能
    • 4C4G 采集器:最高可达 15Gbps/600Kpps 采集性能、2Gbps/200Kpps 流量分发性能
  • 专属服务器
    • 单机标准配置下最高可达 20Gbps/3Mpps 采集性能
  • Workload
    • Linux:最高可达 2Gbps 采集性能、1Gbps 流量分发性能

#2.3 数据节点

  • 数据节点集群最大可水平扩展至 1000台
  • 读写性能参数
    • 数据节点写入的数据种类很多
      • 流日志、调用日志(flow_log.l4_flow_logflow_log.l7_flow_log):默认配置下通常占总数据量的 90%
      • 聚合指标数据(flow_metricsprometheus):默认配置下通常占总数据量的 10%
      • TCP 时序图、PCAP(flow_log.l4_packetflow_log.l7_packet):默认关闭,全部开启时数据量通常大于流日志和调用日志,特别是 PCAP
      • 性能剖析(profile):默认仅自监控开启,全部开启时数据量通常大于流日志和调用日志
      • 性能事件(event.perf_event):默认仅少量事件开启,全部开启时数据量可能大于流日志和调用日志
      • 其他(deepflow_systemext_metricsevent.eventflow_tag):数据量几乎可忽略
    • 写入性能
      • 一个 16CPU64GB 数据节点通常可写入 100K/s 的流日志+调用日志,即 50K/s 流日志 + 50K/s 调用日志,此时 CPU 和系统负载大约为 70%
      • TCP 时序图数据:单个 TCP 包头平均消耗 10 字节存储空间
      • PCAP 数据
        • 数据节点磁盘写入吞吐量大于 128MB/s 时,最高可写入对应网络速率为 1Gbps 的 PCAP
        • 数据节点磁盘写入吞吐量大于 1.2GB/s 时,最高可写入对应网络速率为 10Gbps 的 PCAP
    • 查询性能
      • ClickHouse 的查询性能通常可认为是 100M 字段/s,即每秒可扫描 1 亿个字段,即查询 10 列数据时每秒可扫描 1000 万行
      • 但用户可理解的查询性能难以量化,不同页面、不同时间范围下的查询压力均不一样,可以按下述经验值来进行估计
  • 容量预估经验参考
    • 场景:网络监控调用监控授权均开启,且采集器使用默认配置,即 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带宽