Skip to content

PCDN业务PPPoE自动批量拨号,断线重拨,信息上报,网络监控等

Notifications You must be signed in to change notification settings

yuanzigsa/autopcdn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

PCDN平台agent程序

一、项目简介

1.1 开发背景

出于业务的需求,我们急需一个PCDN管理平台,以实现对大规模机器的业务自动化部署和管理。PCDN业务中涉及的PPPOE拨号、专线IP等网络接入方式,这一部分由agent来完成。 AutoPCDN的开发基于Python3及其众多依赖库,如pysnmp、requests、psutil、watchdog等。实现了与控制平台的数据交互、PCDN网络(包括pppoe拨号和专线IP)的自动部署、业务环境配置,以及网络和硬件性能监控服务,同时提供给客户信息调用API。

1.2 环境要求

  • 系统:centos 7
  • python版本:3.6+
  • 依赖库:psutil、pysnmp、watchdog

1.3 项目目录结构

|-- auto_pcdn.py            # 主程序入口,用于启动pcdn初始化、线路质量监控和信息更新推送等功能
|-- modules/                # 功能模块文件夹,包含主模块依赖的子模块
|   |-- __init__.py
|   |-- data_sync.py        # 与控制节点进行信息同步,实现信息更新推送功能
|   |-- network_monitor.py  # 实现线路质量监控功能
|   |-- pppoe_init.py       # 拨号前的环境的部署,配置生成
|   |-- route_keeper.py     # 动态路由的维护
|   |-- logger.py           # 日志
|-- config/                 # 配置文件目录
|   |-- config.json         # 包含服务请求api、请求方法的定义
|-- tests/                  # 测试文件夹,包含所有的测试用例
|   |-- test.py
|-- log/                    # 存放分片日志 
|   |-- auto_pcdn.log
|-- scripts/        		# auto_pcdn程序的引导shell脚本
|   |-- init.sh
|-- requirements.txt        # 项目所有依赖的库
|-- README.md               # 项目的README文件,描述项目信息、安装步骤和用法等

1.4 执行流程

  1. 从pcdn控制平台获取当前机器的网络配置信息

  2. 检测获取到的网络配置信息是否非空,且判断其网络类型是[pppoe]还是专线,是否带有[vlan]等

  3. 开始对当前客户端机器的网络进行初始化配置,在初始化钱会判断之前是否配置过,如果配置过,则不进行配置(如果需要更新在平台更改提交即可)

    • 安装各种拨号环境所需软件(如果是pppoe业务)
    • 修改当前机器系统文件来写入网络配置信息
    • 启用网络,并测试网络的连通性
    • 写入对应网络连接的路由信息
  4. 初始化完成,按照网络类型启动相应的线程,并作为当前机器的后台服务持续运行

    • 如果网络类型是pppoe,启动以下线程:

      • 断线重播监控上报
      • 动态策略路由维护
      • 节点配置更新检查
      • 节点信息更新上报
      • 运维监控数据采集
    • 如果网络类型是专线ip,则启动以下线程:

      • 节点配置更新检查
      • 节点信息更新商报
      • 运维监控数据采集

二、部署流程

**注意:**AutoPCDN程序必须通过PCDN平台进行下发操作配套使用,因此不再提供手动部署流程,如需要手动部署可以参考引导程序中的shell代码,在第三节我会详细介绍。

2.1 准备环境

  • 已在PCDN平台添加了节点机器的网络配置

image

2.2 执行命令

  • 在PCDN平台的“批量执行”功能中选择需要执行的机器,并选择模板“ AutoPCDN-初始部署”,然后开始执行

    注意

    这里执行模板中的代码实际上就是项目scripts下的init.sh文件中的代码,在后面“配置维护”内容会具体介绍

Uploading image.png…

二、功能详解

2.1 auto_pcdn主程序

  • 定义一些辅助函数:包括设置运行标记、检查运行标记、检查专线类型、检查PCDN类型等。
  • 定义多个线程函数,包括动态策略路由维护、断线重拨监控上报、节点信息更新上报、运维监控数据采集上报和节点配置更新检查等。
  • 用于创建线程对象并启动线程。
  • 根据从控制节点获取的信息,进行环境初始化和网络配置。
  • 根据PCDN类型,启动相应的线程。

2.2 init模块

这个模块主要用于PCDN环境部署初始化,包括配置DNS、关闭NetworkManager服务、安装必要的软件包、加载802.1q模块、配置SNMP服务、修改主机名、写入拨号账号密码、创建接口配置文件以及路由表等操作。

2.3 data_sync模块

这个模块主要功能包括从控制节点获取配置信息、监控拨号连接状态、检测网络连通性、以及将监控信息上报至控制节点或客户端。

2.4 monitor模块

这个模块负责网络和硬件监控,主要用于采集系统的各种信息并将其推送到控制平台。

2.5 route_keeper模块

这是一个路由维护模块,用于管理linux系统中的路由规则,包括删除无效路由、添加新拨号网卡获取的IP路由等功能。

2.6 update_checker模块

这个模块实现了检查pcdn控制平台是否存在拨号信息的更新,并根据更新情况执行相应的操作。

2.7 redial模块

这个模块是一个文件监控程序,主要是服务于客户的重播接口,客户把需要重播的接口写入redial.info即可,改模块会实时监听这个文件的改动,当文件内容发生变化时,会读取文件内容并根据内容中的特定格式信息执行相应的重播操作,同时记录相关日志。

2.8 logger模块

这个模块是用于配置日志记录器,将日志信息同时输出到控制台和文件中,并使用不同的格式和颜色进行显示。

三、配置维护

3.1 Agent引导shell脚本(init.sh)

这个脚本就是PCDN平台中执行模板“AutoPCDN-初始部署”里所包含的代码,它的作用是初始化系统环境,为后续运行名为"auto_pcdn"的程序提供所需的环境。如需手动部署,也可以参考这个shell脚本中的内容,这个脚本主要进行了如下的操作:

  • 配置DNS

    检查系统的DNS配置,如果未配置,则将DNS设置为114.114.114.114和8.8.8.8。

  • 校准时间

    安装ntpdate工具,从time.windows.com同步时间,设置系统时区为Asia/Shanghai,并将硬件时钟与系统时间同步。

  • 检查是否已经启用BBR

    检查系统是否启用了BBR拥塞控制算法。没有则安装wget工具,下载并安装ELRepo的RPM包,安装新的内核,更新GRUB配置,设置默认启动内核,并开启BBR。

  • 检查服务状态

    检查名为"auto_pcdn"的服务是否处于活动状态,如果是则输出相关信息并询问是否重新部署,否则返回0。

  • 安装Python3环境及外置库

    函数安装Python3及相关开发环境,然后使用pip3安装requests、pysnmp、psutil和colorlog等外置库。

  • 创建系统服务

    创建名为"auto_pcdn"的系统服务,以自动运行/opt/auto_pcdn/auto_pcdn.py脚本。

  • 部署AutoPCDN程序

    创建/opt/auto_pcdn/目录,下载、解压auto_pcdn.tar.gz程序包,安装yum-fastestmirror插件,安装Python3环境及外置库,创建系统服务,并监视日志。

About

PCDN业务PPPoE自动批量拨号,断线重拨,信息上报,网络监控等

Resources

Stars

Watchers

Forks

Packages

No packages published