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. net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)

    随着互联网的飞速发展,传统的昂贵的大容量高性能服务器(F5 BIG-IP.Citrix NetScaler.A10)已经越来越应付不了日益增长的业务需求了,而高并发和负载均衡所带来的高可靠/高可用/低 ...

  2. 高并发解决方案--负载均衡

    高并发解决方案--负载均衡 1,什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首 ...

  3. 程序员修神之路--高并发系统设计负载均衡架构

    点击上方"蓝字"关注,酷爽一夏 菜菜哥,上次你给我讲的分库分表策略对我帮助很大 有帮助就好,上次请我的咖啡也很好喝~ 呵呵,不过随着访问量的不断加大,网站我又加了nginx做负载均 ...

  4. 大型网站高并发——服务器负载均衡设计

    大型网站高并发--服务器负载均衡设计 方案一:直接路由方式(LVS-DR) 硬件配置:一台负载均衡器,两台或则三台TOMCAT服务器 WEB服务器配置:Linux + tomcat+ WEB应用程序( ...

  5. RabbitMQ(mq) 如何处理高并发、负载均衡、消息幂等性、丢失、消息顺序错乱问题?

    目录 介绍: 1.连接器(connection): 2.信道.通道(channel): 3.交换机(exchange): 4.队列(queue): 以下通过两个例子,让我们先来对rabbitmq 有个 ...

  6. 高并发与负载均衡-keepalived-概念介绍

    keepalived是用户空间的程序,这个程序会同时在主的lvs和备用的lvs启动 转载于:https://www.cnblogs.com/LXL616/p/10793790.html

  7. 高并发与负载均衡-nginx-反向代理概念

    推荐图书:淘宝技术这十年 转载于:https://www.cnblogs.com/LXL616/p/10799003.html

  8. 程序员过关斩将--应对高并发系统有没有通用的解决方案呢?

    " 灵魂拷问: 应对高并发系统有没有一些通用的解决方案呢? 这些方案解决了什么问题呢? 这些方案有那些优势和劣势呢? 对性能孜孜不倦的追求是互联网技术不断发展的根本驱动力,从最初的大型机到现 ...

  9. 高并发系统搭建:web负载均衡

    高并发系统搭建:web负载均衡 所谓的负载均衡就是让多个请求尽量均衡的分配到不同的机器上面去 1. HTTP负载均衡 当用户的请求发来之后,web服务器通过修改HTTP响应报头中的Location标记 ...

  10. 【面试】如何设计一个高并发系统

    一.为什么需要秒杀系统? 电商平台本质是在线上撮合买卖双方的购销需求,达成交易.虽然是线上交易,但也遵守朴素的经济学原理,供求关系决定了商品的经济活动.当供求平衡时,买方和卖方处于对等关系,双方相对稳 ...

最新文章

  1. 自动驾驶平台,阵营, 主要传感器与场景联系
  2. js实现图片虚化_js canvas画布实现高斯模糊效果
  3. 星期几在c语言什么变量,计算任何一天是星期几的C语言源代码.
  4. 自定义滚动条Js简版
  5. MapReduce-流量统计求和-分区代码实现
  6. 数据库表的字段中含空格怎么办?
  7. 详细js读取execl内容并展示
  8. 文本文件上传漏洞[任意.绕过.解析]
  9. GDevelop开源游戏引擎教程——(一)简介和安装
  10. 因子分析模型 - 因子分析法原理与代码实现 -(Python,R)
  11. java一键生成《数据库设计文档》
  12. 某天是星期几 + 三目运算符的一些错误操作解释
  13. 星际争霸 2 快捷键
  14. 金蝶K/3 固定置产相关SQL语句
  15. 常用一些缺失dll文件下载网址,最新版本的 Microsoft Visual C++ 的下载链接
  16. ktor启动报错:Module function cannot be found for the fully qualified name 'ApplicationKt.module'
  17. 最小相位滤波器 matlab,基于MATLAB最小相位数字滤波器的设计方法研究
  18. 使用JAVA进行ad域身份验证常用属性详解
  19. [转帖]AMD第三代锐龙处理器首发评测:i9已无力招架
  20. 免费的PCB打样平台汇总,每月免费打8块板!【建议收藏】

热门文章

  1. IP地址冲突问题的解决方法
  2. 【大话云原生】微服务篇-五星级酒店的服务方式
  3. 常见python基础面试题_常的解释|常的意思|汉典“常”字的基本解释
  4. python3 import的一个细节
  5. python图片裁剪
  6. MaxCompute-ODPS SQL报错:Quota not enough,配额组资源不足
  7. 程序发生run time error原因及解决方案
  8. java中的坦克大战游戏设计报告论文_基于Android平台坦克大战游戏的设计与实现...
  9. RIM任松伟:黑莓引领企业移动化主题演讲
  10. android裸眼图片,一种Android应用的裸眼3D显示方法与流程