高并发系统负载均衡与实时监控的实用方案

        Nginx+ELK是当下高并发系统负载和监控的成熟方案,网上充斥着各种教程和最佳实践。可要在生产环境部署还是会面临着不小的挑战,生产环境首要满足的条件就是高可用, Nginx至少两个节点,如果后台服务多、并发高、访问接入点多情况,那单nginx节点的数量就会很可观;Elasticsearch要集群部署至少三个节点,对内存的要求也不低;Logstash和日志需要本地采集处理,多少个日志采集点就需要部署多少套,对内存要求不低。综上,这个方案俨然就是“吃机”大户,不但主机资源采购成本高,运维更具技术含量。

       小编最近在负责一个日均5千万PV的平台架构设计,本着为客户节约成本、让公司更少的投入人力,探索了多种方案,终于今年10月份上线了一个相对满意的方案,2021年11月30日全天支撑了接近4200万请求,峰值一个小时支撑了近千万请求。

全天支撑了接近4200万请求

        上午10点一个小时就支撑了970万请求

          这个环境,只用了4台4核*8G的虚机,同时具备了负载均衡、高可用、分布式日志记录、实时日志分析。全套方案采用了Rsyslog采集日志、Nginx负载请求和Goaccess分析日志。

    首先,Rsyslog是CentOS6以后系统默认采用的日志系统,拥有诸多特性:

  • 支持UCP、TCP、SSL、TLS、RELP等协议。

  • 强大的过滤器,可实现过滤日志信息中的任意部分。

  • 支持自定义输出格式。

  • 适用于企业级别日志记录需求。

  好了,既然rsyslog支持UDP、TCP,而且是CentOS的嫡系,性能和可靠性没得说,这不自然支持分布式的日志采集了么? 通过如下简单配置,一个分布式的日志采集系统就做好了。

/etc/rsyslog.conf
# 开启UDP 和TCP
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# 设置日志格式和存储路径
$template myformat,"%msg:2:$% [%$year%-%$month%-%$day% %timegenerated:8:$%]\n"
$ActionFileDefaultTemplate myformat
$template RemoteLogs,"/data/log/%programname%_%$year%%$month%%$day%.log"
local1.* ?RemoteLogs

& ~

其次,负载均衡器nginx(正式环境采用了Tengine),这老兄恐怕无人不知,无人不晓了吧。就算你没自己配置过,但肯定用过它代理的服务,因为国内知名网站都在用它,如:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx把访问日志输出到Rsyslog就是这么简单:

最后,就是日志分析工具:GoAcccess。

  • 快速, 实时, 毫秒/秒级更新, C 语言编写

  • 仅依赖 ncurses 模块

  • 几乎支持所有 Web 日志 格式 (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等)

  • 简单设置即可支持自定义格式日志

  • 漂亮的终端以及 bootstrap 风格控制面板 (易于将 GoAccess 调整为您自己的颜色搭配和风格)

GoAccess的配置脚本

        三个简单的工具讲完了。Nginx作为平台入口,高可用是个基本要求,双机主备部署就可以了。可是客户的主机资源是宝贵的,简单的双机主备会造成资源浪费的。怎么办呢?干脆把日志服务器,作为Nginx负载均衡器的备机,即解决了高可用的问题又不会造成主机浪费。总结起来,这个方案部署简单、主机配置要求低。

类生产环境的部署架构图

        生产环境为了增加吞吐量,减少相互之间的影响,采用两个子域名区分管理网和服务网,两个分域名对应的接入节点与日志记录节点是互备关系,通过浮动IP实现主备切换。

     深化方案,请阅读:

高并发系统负载均衡与实时监控的实用方案(二)_bhl120的博客-CSDN博客我们要首先解决日志文件存储和分析的问题,鉴于Nginx日志数据量大的特点,我们必须选择一种功效的分析工具(能流式分析更好)和支持大数据量写入的数据库,经过各种Baidu和谷歌,最终定型为:Kafka + Flink + Clickhouse。https://blog.csdn.net/bhl120/article/details/122387561

     深夜发文,码字不易,请点赞支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT 行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值