在Linux服务器运维工作中,网络监控和流量分析是排查网络故障、保障业务稳定的重要手段,而高可用配置可以避免单点监控节点故障导致监控数据丢失、分析服务中断的问题。本文将以ntopng作为流量分析核心工具,结合Keepalived实现高可用架构,完整讲解配置过程。

环境准备
本次配置需要两台Linux服务器作为监控节点,一台作为备用节点,系统选择CentOS 7及以上版本,同时需要准备一台交换机支持端口镜像功能,用于采集网络流量。两台节点的基础配置要求如下:
- 节点1 IP:192.168.0.10,主机名:monitor-master
- 节点2 IP:192.168.0.11,主机名:monitor-backup
- 虚拟IP(VIP):192.168.0.100,用于对外提供监控服务访问入口
- 开放端口:3000(ntopng Web访问端口)、112(VRRP协议端口)
核心组件安装
首先在两个节点上安装ntopng和Keepalived,ntopng负责流量采集和分析,Keepalived负责高可用故障切换。
安装ntopng
ntopng是开源的网络流量分析工具,支持实时流量展示、历史数据存储、协议分析等功能,安装命令如下:
# 添加ntopng官方源 rpm -Uvh https://packages.ntop.org/centos-stable/ntop-1.0-1.el7.noarch.rpm # 安装ntopng和依赖 yum install -y ntopng ntopng-data redis # 启动redis服务并设置开机自启 systemctl start redis systemctl enable redis
安装Keepalived
Keepalived通过VRRP协议实现主备节点的状态检测和故障切换,安装命令如下:
yum install -y keepalived
ntopng配置
两个节点的ntopng基础配置保持一致,首先创建ntopng的配置文件:
# 创建配置文件目录 mkdir -p /etc/ntopng # 编辑配置文件 vi /etc/ntopng/ntopng.conf
配置文件内容如下,其中--interface指定流量采集的网卡,需要和交换机镜像端口连接的网卡对应:
# 监听的网卡,根据实际环境修改 --interface=eth1 # Web访问端口 --http-port=3000 # 数据存储目录 --data-dir=/var/lib/ntopng # 启用社区版功能 --community # Redis连接配置 --redis=127.0.0.1:6379
配置完成后启动ntopng服务并设置开机自启:
systemctl start ntopng systemctl enable ntopng
Keepalived高可用配置
Keepalived需要在主备节点分别配置,主节点配置优先级高于备节点,故障切换时自动将VIP漂移到可用节点。
主节点配置
编辑主节点的Keepalived配置文件/etc/keepalived/keepalived.conf:
global_defs {
router_id monitor-master # 节点标识,主备节点不能相同
}
vrrp_instance VI_1 {
state MASTER # 主节点角色
interface eth0 # 承载VIP的网卡
virtual_router_id 51 # 虚拟路由ID,主备节点保持一致
priority 100 # 优先级,主节点高于备节点
advert_int 1 # VRRP通告间隔,单位秒
authentication {
auth_type PASS
auth_pass 123456 # 认证密码,主备节点保持一致
}
virtual_ipaddress {
192.168.0.100/24 # 虚拟IP地址
}
}
# 健康检查配置,检测ntopng服务状态
virtual_server 192.168.0.100 3000 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.0.10 3000 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
备节点配置
备节点配置文件和主节点大部分一致,仅修改router_id、state、priority三个参数:
global_defs {
router_id monitor-backup # 备节点标识
}
vrrp_instance VI_1 {
state BACKUP # 备节点角色
interface eth0
virtual_router_id 51
priority 90 # 优先级低于主节点
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.0.100/24
}
}
virtual_server 192.168.0.100 3000 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.0.11 3000 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
配置完成后分别启动两个节点的Keepalived服务:
systemctl start keepalived systemctl enable keepalived
流量采集配置
需要在交换机上配置端口镜像,将需要监控的流量复制到和监控节点eth1网卡连接的端口。以华为交换机为例,配置命令如下:
# 进入系统视图 system-view # 创建镜像组1 mirroring-group 1 mirroring-port both # 配置镜像源端口,即需要监控的流量端口 mirroring-group 1 mirroring-port GigabitEthernet 0/0/1 to GigabitEthernet 0/0/10 # 配置镜像目的端口,连接监控节点eth1的端口 mirroring-group 1 monitor-port GigabitEthernet 0/0/24
功能验证
完成所有配置后,可以通过以下方式验证高可用和监控功能:
- 访问虚拟IP 192.168.0.100:3000,能正常打开ntopng的Web管理界面,查看实时流量数据
- 在主节点执行
systemctl stop ntopng停止ntopng服务,观察VIP是否自动漂移到备节点,Web访问是否正常切换 - 在主节点执行
systemctl stop keepalived停止Keepalived服务,验证备节点是否能自动接管VIP - 在ntopng界面查看协议分布、主机流量排名、历史流量趋势等数据,确认流量分析功能正常
常见问题排查
如果配置完成后出现监控数据异常或者高可用切换失败,可以排查以下常见问题:
- 检查网卡名称是否正确,ntopng配置的采集网卡和交换机镜像连接的网卡是否对应
- 检查VRRP协议是否被防火墙拦截,关闭防火墙或者开放112端口的VRRP协议流量
- 检查两个节点的Keepalived配置中虚拟路由ID、认证密码是否一致
- 检查ntopng服务是否正常启动,查看
/var/log/ntopng.log日志排查错误