民航西北空管局基于Nginx的数据反向代理设计与应用获奖科研报告_第1页
民航西北空管局基于Nginx的数据反向代理设计与应用获奖科研报告_第2页
民航西北空管局基于Nginx的数据反向代理设计与应用获奖科研报告_第3页
民航西北空管局基于Nginx的数据反向代理设计与应用获奖科研报告_第4页
民航西北空管局基于Nginx的数据反向代理设计与应用获奖科研报告_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

民航西北空管局基于Nginx的数据反向代理设计与应用获奖科研报告

【摘要】随着我国民用航空业的迅速发展,近年来航班量迅速增加。空管系统做为航班飞行指挥的重要环节之一,业务量也在不断的增加。在数字化方面主要体现在空管各类业务系统的增加和各系统数据量的增加。本文将通过研究开源Nginx的能力,在保证业务连续性与安全性的同时,利用Nginx解决空管数据中各类协议的转换与不同数据协议引接上云的问题。

【关键词】Nginx;UDP;TCP/IP;反向代理;集群;负载均衡

一、研究背景

民航西北空管局为响应高质量发展的要求,大力推进“强安全、强效率、强智慧、强协同”的现代化空管体系建设。其中强智慧”要将空管指挥与云计算、大数据、人工智能等通用技术融合,助力西北空管局实现智能感知、泛在互联、融合运行、智慧决策、智敏服务。因此,西北空管局进来年全面开展数字化转型工作,着手设计与建设西北空管生产运行数据平台(私有云)。在此数字化进程中,数据上云的设计与实现成为做好私有云建设的第一步。西北空管局数字化转型团队通过租用公有云的形式搭建数据实验平台,对西北空管局生产运行数据平台(私有云)建设方案进行验证测试。在此期间,团队发现西北空管业务系统种类繁多,数据信号格式各异,直接引接数据上云难度较大,主要存在以下几项技术问题:1)业务数据输出协议包括TCP/IP协议、UDP组播、UDP单播等不同种类的协议。2)TCP/IP协议下,某些系统存在未设置TTL值的情况,无法配置多跳路由上云。3)业务系统单个数据包过大,MTU值超过1472Bytes,经路由之后存在丢失数据现象。4)业务系统与公有云之间需要保证网络安全。

针对存在的问题,设计采用Nginx对数据信号进行反向代理。

二、Nginx总体介绍

Nginx是一款基于Linux的、开源的、高性能的HTTP服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务。Nginx模块分为核心模块,基础模块和第三方模块。核心模块包括HTTP模块、事件模块、MAIL模块等。基础模块包括HTTPAccess模块、HTTPFastCGI模块、HTTPProxy模块、HTTPRewrite模块等。第三方模块:HTTPUpstreamRequestHash模块、Notice模块、HTTPAccessKey模块等。Nginx能够快速高效代理与反向代理,同时在负载均衡方面有出色表现。支持多并发的连接,并在大并发时占用很低内存,支持热备,启动迅速。

三、Nginx反向代理TCP与UDP协议

Nginx并不直接提供TCP/UDP的应用响应,NginxStream模块的核心功能是将客户端的TCP/UDP连接反向代理给后端的被代理服务器。使用的配置指令应在stream与server指令域内。

针对UDP的反向代理,因为UDP协议为一种无连接的协议,发送与接收两端并不需要建立连接,也不需要维持连接状态与收发状态,根据UDP单波、UDP组播、UDP广播的不同,一个发送端发出的UDP包可以被组内的多个接收端接收,同时UDP协议自身并没有会话保持机制。针对UDP协议,Nginx定义了一个维持的机制,可以通过配置实现当发送端发出一个UDP包时,等待接收回包,以保持会话。根据对proxy_responses配置值的不同,决定了此次回话的最长等待时间,规定时间内没有响应则断开会话。Nginx反向代理UDP配置示例如图

Nginx负载均衡是由代理模块和上游(upstream)模块共同实现的,Nginx通过代理模块的反向代理功能将用户请求转发到上游服务器组,上游模块通过指定的负载均衡策略及相关的参数配置将用户请求转发到目标服务器上。上游模块可以与Nginx的代理指令(proxy_pass)、FastCGI协议指令(fastcgi_pass)、uWSGI协议指令(uwsgi_pass)、SCGI协议指令(scgi_pass)、memcached指令(memcached_pass)及gRPC协议指令(grpc_pass)实现多种协议后端服务器的负载均衡。

四、Nginx集群搭建与负载均衡

如果想实现TCP和UDP的反向代理,必须选择Nginx的Linux版本,Linux版本的Nginx集群负载是使用LVS做为传输层的负载均衡设备,将客户端请求从传输层负载到后端的Nginx集群,并由Nginx集群实现应用层负载均衡处理的多层负载均衡网络架构。LVS作为传输层负载均衡与接入路由对接,负责把数据包转发给后端的Nginx服务器。LVS选用DR转发模式,网络数据包在传输层被分发到Nginx服务器,并由Nginx经过本地路由返回给客户端。Nginx集群负载部署图如下图所示。

Nginx负载均衡是由代理模块和upstream模块共同实现的,Nginx通过代理模块的反向代理功能将用户请求转发到上游服务器组,upstream模块通过相负载均衡策略及参数配置将用户请求转发到目标服务器上。upstream模块可以与Nginx的代理指令、FastCGI协议指令、uWSGI协议指令、SCGI协议指令、memcached指令及gRPC協议指令实现多种协议后端服务器的负载均衡。

五、Nginx日志管理与监控

Nginx的日志分为访问日志和错误日志两种。访问日志中记录了用户IP、浏览器信息、响应状态等,通过Nginx的access_log指令更改所需信息并输出到访问日志中。通过查看访问日志,可以了解系统的安全性、性能、可用性等信息。错误日志会记录Nginx加载配置时检查出的异常、运行时请求处理的异常和服务器调试信息等。通过error_log指令可以对错误日志进行配置。查看错误日志可以帮助排查Nginx运行问题、调整Nginx配置参数、优化系统性能。

六、西北空管局基于Nginx集群的设计思路

通过搭建Nginx代理服务器集群,配置集群间的负载均衡,利用Nginx反向代理功能,将西北空管局业务系统视为客户端,公有云端视为服务端,将客户端不同的数据协议转换为TCP/IP协议并代理至服务端。通过集群和负载均衡的技术手段,保障业务连续性,确保因单条链路或者单独服务器故障时数据不中断,云上数据完整。同时通过nginx反向代理隐藏真实服务端,隔离数据源业务系统和公有云以保证安全,不对外暴露内网业务系统,安全可靠的实现业务数据上云。通过配置Nginx日志,存储访问和错误日志,提供良好的可观测性和可维护性。

针对前文中提出的业务数据输出类型包括TCP/IP协议、UDP组播、UDP单播等各类协议的问题。TCP/IP协议数据可以在nginx中进行路由配置进行反向代理,将内部业务系统数据代理输出转发,同时配置负载均衡进行负载均摊,保证业务连续性。UDP组播协议数据由于网络协议上的限制,无法通过三层路由设备,nginx的代理转发也基于三层路由,所以需要在服务器上部署组播接收程序及解析程序,接收到组播数据后,通过解析程序,将数据包内容解析成XML或Json格式数据,再将并XML或Json格式文本数据以TCP/IP协议发送至nginx相应代理端口,最后由nginx向后端服务器转发数据。UDP单播协议数据可以通过nginx直接接收,由nginx向后端服务器转发数据。针对TCP/IP协议下,某些系统存在未设置TTL值的情况,无法直接配置多跳路由上云的问题。在代理转发前,采用透传的方式至代理服务器,确保中间无路由环节,再使用nginx反向代理上云。针对业务系统单个UDP数据包过大,MTU值超过1472Bytes,经公网路由之后存在丢失数据现象。修改代理服务器对应内网网卡MTU至9000(巨型帧上限),同时将原本在云上CCE部署的解析程序前置,部署在代理服务器上,先接收UDP数据包,通过解析模块解析处理成XML或Json格式数据后,原本的数据包内数据将变成文本格式数据,数据包大小将大幅减小,之后使用TCP协议发送解析后数据至公有云。下图为UDP协议数据及TCP/IP协议数据经过Ngnix代理中转后的数据抓包实例,与原数据进行对比后证实代理前后数据内容一致,Ngnix可顺利完成代理功能。

七、结论

利用Nginx服务集群可以较好的解决空管行业系统间数据引接,业务数据上云过程中的问题,不仅能够以TCP/IP方式统一提供对外数据,并且通过Ngi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论