分析公网NAT网关中配置SNAT规则的高流量ECS实例

当公网访问流量突增时,公网NAT网关可能触发容量和带宽上限,从而导致服务响应变慢,影响业务流量。您可以分析公网NAT网关中SNAT规则ECS实例的流量情况,通过VPC流日志筛选出高流量的ECS实例,从而优化网络带宽分配,改善网络瓶颈。

功能介绍

公网NAT网关是一款面向企业的安全网关产品,提供SNAT和DNAT功能。通过公网NAT网关,您可以对大量访问公网的机器进行精细化的运维监控和管理。同时通过公网NAT网关还可展示top流量,精确定位突发流量的ECS实例,并提供丰富多维度的流量监控指标。更多公网NAT网关的信息,请参见什么是公网NAT网关

VPC流日志可以捕获指定弹性网卡(Elastic Network Interfaces,ENI)、指定VPC或者交换机中所有弹性网卡的流量。

当您需要排查公网NAT网关(配置SNAT或者DNAT功能)中ECS实例的流量情况时,您可以创建VPC流日志,捕获公网NAT网关所在交换机内的所有弹性网卡的流量。通过启用和分析VPC流日志,系统地排查该公网NAT网关中ECS实例的流量,对于高流量实例进行有效的管理和优化,确保网络正常运行。

关键特性

VPC流日志启用后将收集和存储流量日志数据,您可以查看并分析ECS访问公网的各条链路的流量日志,全面了解各个ECS实例的网络流量行为。

内网与公网之间的流量需要通过公网NAT网关进行中转,公网NAT网关绑定的弹性网卡是流量进出公网NAT网关的接口。您可以通过公网NAT网关对应的弹性网卡监控从内网到公网的出入流量,统计各链路的流量使用情况和带宽消耗。

如下图所示,以公网NAT网关的弹性网卡作为分界,将ECS通过公网NAT网关访问公网的链路划分为四段。

您可以通过Flowlog日志中心查看并分析IN方向流量OUT方向流量或者查看统计了哪些ENI的流量等信息。

image

单击查看4条链路日志示例

登录日志服务控制台,您可以查看这4条链路的日志流量情况和统计的具体字段信息。关于流日志各字段记录信息,请参见流日志概述

序号

日志示例

链路①的流量方向为in,源和目的IP地址如下:

  • 源IP地址:ECS私网IP地址

  • 目的IP地址:NAT网关的私网IP地址

链路②的流量方向为out,源和目的IP地址如下:

  • 源IP地址:NAT网关的私网IP地址

  • 目的IP地址:特定的公网IP地址

链路③的流量方向为in,源和目的IP地址如下:

  • 源IP地址:特定的公网IP地址

  • 目的IP地址:NAT网关的私网IP地址

链路④的流量方向为out,源和目的IP地址如下:

  • 源IP地址:NAT网关的私网IP地址

  • 目的IP地址:ECS的私网IP地址

使用场景

使用流日志排查公网NAT网关中高流量的ECS实例,主要适用于以下场景:

  • 优化网络性能:在高并发、高流量的业务场景中,通过使用流日志分析公网NAT网关中各ECS实例的出站和入站流量,可以排查出高流量实例,同时也可以识别出哪些实例和源IP组合导致了带宽瓶颈,通过并合理分配带宽资源,以避免某些实例过载而导致网络瓶颈。

  • 成本控制与优化:高流量实例可能导致高昂的带宽费用,通过分析流量日志,识别出哪些实例和源IP持续产生高流量,优化这些实例的网络访问路径,减少不必要的流量,降低成本。

场景示例

某企业拥有多个内部服务器,这些服务器通过公网NAT网关的SNAT功能访问外部的互联网资源。近期,企业发现内部服务器访问外部互联网资源的加载时间变长,影响了用户体验。该企业希望排查出流量较高的服务器,并通过合理优化和规划带宽资源等措施来缓解这些问题,提升用户体验。

本文以下图场景为例。该企业在华东1(杭州)地域拥有一个VPC,其中交换机1内有三台ECS实例,这些实例通过交换机2中公网NAT网关的SNAT功能访问公网。现在由于内部服务器访问公网流量突增,导致服务器响应变慢,影响体验,需要通过VPC流日志排查并分析这三台ECS实例中流量占比较高的实例,为重新规划资源改善网络性能瓶颈提供指导。

image

前提条件

  • 您已在华东1(杭州)地域创建专有网络VPC、交换机1和交换机2。具体操作,请参见创建和管理专有网络

  • 您已在交换机1内创建3台ECS实例,分别为ECS01、ECS02和ECS03。具体操作,请参见自定义购买实例

  • 您已在交换机2中创建公网NAT网关,并为该公网NAT网关创建交换机粒度的SNAT条目。该SNAT条目选择的交换机粒度指向交换机1。具体操作,请参见使用公网NAT网关SNAT功能访问互联网

    单击查看本文实例的参数配置

    配置项

    具体配置

    专有网络VPC

    VPC网段:172.16.0.0/12

    交换机1网段

    交换机网段:172.16.1.0/24

    交换机2网段

    交换机网段:172.16.3.0/24

    公网NAT网关

    公网NAT网关的私网IP:172.16.3.128

    弹性公网IP

    118.XX.XX.86

    ECS实例

    • ECS01实例:172.16.1.44

    • ECS02实例:172.16.1.45

    • ECS03实例:172.16.1.46

操作步骤

步骤一:创建流日志

创建流日志前,请确保您已经满足流日志的前提条件。具体操作,请参见流日志前提条件

  1. 登录专有网络管理控制台
  2. 在左侧导航栏,选择运维与监控 > 流日志
  3. 在顶部菜单栏处,选择目标地域。本文选择华东1(杭州)

  4. 流日志页面,单击创建流日志

  5. 创建流日志对话框,根据以下信息配置流日志,然后单击确定

    配置

    说明

    资源类型

    选择要捕获流量的资源类型,本文选择交换机

    资源实例

    选择要捕获流量的资源实例。本文选择交换机1的实例ID。

    流量类型

    选择要捕获流量的类型,本文选择全部流量

    项目(Project)

    选择存储捕获流量的项目(Project),本文选择新建 Project,并输入新建的Project名称。

    日志库(Logstore)

    选择存储捕获流量的日志库(Logstore),本文选择新建 Logstore,并输入新建的Logstore名称。

    开启流日志分析报表功能

    本文选择开启该功能。

步骤二:通过wrk工具模拟用户流量

  1. 依次登录ECS01、ECS02和ECS03实例。

  2. 在ECS01、ECS02和ECS03实例中分别执行以下命令,安装wrk工具。

    yum -y install git make gcc
    git clone https://github.com/wg/wrk.git
    yum install unzip
    cd wrk
    make
  3. 在ECS01、ECS02和ECS03实例中分别执行以下命令,进行用户流量测试。

    ECS01中执行以下命令。

    ./wrk -c 1000 -d 60s -t 3  http://101.XX.XX.200:80/  # 101.XX.XX.200为特定公网IP 

    ECS02中执行以下命令。

    ./wrk -c 2000 -d 60s -t 3  http://101.XX.XX.200:80/  # 101.XX.XX.200为特定公网IP

    ECS03中执行以下命令。

    ./wrk -c 3000 -d 60s -t 3  http://101.XX.XX.200:80/  # 101.XX.XX.200为特定公网IP

    命令行中的参数介绍:

    • -c:connections,每个线程保持的并发连接数。

    • -d:duration,测试的持续时长,s表示单位为秒。

    • -t:threads,指定要使用的线程数,即模拟的并发用户数量。

步骤三:查看流日志

  1. 登录专有网络管理控制台
  2. 在左侧导航栏,选择运维与监控 > 流日志
  3. 在顶部菜单栏处,选择目标地域。本文选择华东1(杭州)

  4. 流日志页面,找到目标流日志,然后在日志服务列单击日志库(Logstore)名称的链接,前往日志服务控制台查看流量信息。

  5. 根据下图示例顺序,查看通过公网NAT网关SNAT条目访问公网的ECS实例流量情况。

    通过下图可以观察到,私网IP为172.16.1.46的ECS03实例流量较高。

    高流量ECS截图.png

    序号

    步骤描述

    本文以如下SQL语句为例,对采集到的VPC流日志进行聚合和排列,筛选去往某一特定公网IP地址的流量较高的ECS实例的图表:

    dstaddr: "101.XX.XX.200" and action: ACCEPT and srcaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth group by time,srcaddr order by time asc limit 1000

    该SQL语句定义了时间time、带宽bandwidth(bps)、源地址srcaddr三个参数,time和srcaddr为聚合列,并按time从小到大排序,取1000条日志。关于字段的更多信息,请参见VPC流日志的字段详情

    其中参数说明如下:

    • dstaddr:目的地址,即公网IP地址。本文输入101.XX.XX.200

    • srcaddr:源地址,即ECS实例IP地址。本文输入172.16.1.*

    • 其余字段请参照示例值输入。

    说明
    • 如果您想要筛选某一特定公网IP到ECS实例的入流量信息,请输入以下SQL语句查询:

      srcaddr: "101.XX.XX.200" and action: ACCEPT and dstaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, 
      dstaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth group by time,dstaddr order by time asc limit 1000

      其中参数说明如下:

      • srcaddr:源地址,即公网IP地址。本文输入101.XX.XX.200

      • dstaddr:目的地址,即ECS实例IP地址。本文输入172.16.1.*

      • 生成流图时,聚合列选择dstaddr

    • 如果您想要筛选ECS实例去往所有公网IP的出流量信息,请输入以下SQL语句查询:

      srcaddr: 172.16.1.* and action: ACCEPT | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, 
      srcaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth from log where ip_to_domain(dstaddr)!='intranet' group by time,srcaddr order by time asc limit 1000

      其中参数说明如下:

      • srcaddr:源地址,即私网地址,本文输入172.16.1.*

      • dstaddr:目的地址,即公网地址。

      • 生成流图时,聚合列选择srcaddr

    选择要查看的流日志时间。本文选择最近5分钟

    单击通用配置页签,然后单击流图选择流图格式。

    查询分析配置区域,设置以下参数信息:

    • x轴字段:设置为time

    • y轴字段:设置为bandwidth

    • 聚合列:设置为srcaddr

    标准配置区域,设置格式化bps, Kbps, Mbps(SI)

    其余参数保持默认值。

    单击添加到仪表盘,在弹出的对话框中设置以下参数信息:

    • 操作类型:本文以新建仪表盘为例进行说明。

    • 布局模式:本文以网格布局为例进行说明。

    • 仪表盘名称:填写仪表盘的名称,本文输入ECS经过NAT网关出流量

    您可以在仪表盘查看流日志信息。

    单击查询/分析,即可查看各个ECS实例出公网的流量情况,排查出高流量的ECS实例。

相关文档