nginx高并发架构

nginx相关配置及高并发优化 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)# 绑定虚拟IP的网络接口,根据自己的机器的网卡配置# 虚拟路由的ID号,主从两个节点设置必须一样# 填写本机IP# 节点权重优先级,主节点要比从节点优先级高# 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题nopreempt# 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)# 将track_script块加入instance配置块。 阅读详情

1.前言

对于高并发的流量web架构,单纯的使用nginx是不够用的,nginx做七层代理需要处理数据,在大并发的情况下对主机资源的消耗就非常厉害了,所以此情况下就引入了lvs,使用lvs的四层转发功能,四层转发不需要处理数据只是tcp/udp协议进行端口对端口的数据转发,就算并发在大也不存在资源消耗大的问题,再通过多个nginx进行负载,就能很好的应对高并发的问题,在通过引入keepalived解决lvs单点问题,实现高可用

lvs的负载均衡可以实现后端检查,若是后端的某个nginx挂掉时,会将该nginx地址从负载均衡中剔除,当该nginx恢复后,又会将该地址加入到负载均衡中

lvs的网络模式使用DR模式,负载均衡策略使用rr轮询模式

2.架构

3.主机信息

nameipportservice
A(主)10.1.60.11580

ipvs、keepalived

B(备)10.1.60.11880ipvs、keepalived
C10.1.60.11280nginx
D10.1.60.11480nginx
VIP10.1.60.116

4.部署

所有主机关闭selinux与firewalld

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

以下操作在A、B主机上执行

安装keepalived服务

yum -y install keepalived

备份keepalived原配置文件

cp  /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

编辑keepalived配置文件

vi /etc/keepalived/keepalived.conf

A主配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id nginx01          #配置路由id,主和备的配置需要配置不同的id
   vrrp_skip_check_adv_addr
  #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER             #主需要设置为MASTER
    interface ens160         #配置网卡,需要根据自己的真实网卡名称配置
    virtual_router_id 51     #配置vrrp的路由id,主和备需要相同
    priority 100             #配置权重值,备节点权重值需要低于MASTER节点
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.1.60.116/24        #设置虚拟ip地址
    }
}

virtual_server 10.1.60.116 80 {     #配置虚拟ip地址和端口,用于接收转发请求
    delay_loop 3                     #定义检测真实服务器可用性的循环周期,单位为秒
    lb_algo rr                       #配置负载均衡的访问策略,配置问轮询模式
    lb_kind DR                       #配置ipvs使用的网络模式,配置为路由模式
    persistence_timeout 0            #定义持久化连接的超时时间,单位为秒。持久化连接可以确保同一个客户端的多个请求都被转发到同一台真实服务器
    protocol TCP                     #指定后端真实服务器的协议为 TCP

    real_server 10.1.60.114 80 {    #配置真实的地址和端口,即被负载的nginx地址和端口,用于将数据转发到该nginx上
        weight 1                     #配置权重,权重大的转发流量就多
        HTTP_GET {                   #配置健康检查
            url {
              path /
              status 200
            }
            connect_timeout 3        #配置检查超时时间
            nb_get_retry 3           #定义在失败的情况下重新尝试的次数
            delay_before_retry 3     #定义重新尝试之间的延迟时间,单位为秒
        }
    }


     real_server 10.1.60.112 80 {   ##配置真实的地址和端口,即被负载的nginx地址和端口,用于将数据转发到该nginx上
        weight 1
        HTTP_GET {
            url {
              path /
              status 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

B备配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id nginx02            #更改id与主不一致
   vrrp_skip_check_adv_addr
  #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP            #更改为BACKUP
    interface ens160
    virtual_router_id 51   
    priority 90              #更改配置权重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.1.60.116/24
    }
}

virtual_server 10.1.60.116 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 10.1.60.114 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

     real_server 10.1.60.112 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

启动keepalived服务并配置开机启动

systemctl start keepalived

systemctl enable keepalived

查看A主机地址

可以看到vip地址绑到了A主机上

以下操作在C、D主机上执行

安装nginx服务

yum -y install epel   #通过epel的包去安装nginx

yum -y install nginx

更改nginx的默认页面

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak

D主机则将C改为D即可

echo "this is C" >> /usr/share/nginx/html/index.html

启动nginx服务并配置开机启动

systemctl start nginx

systemctl enable nginx

新增虚拟网卡并配置为vip地址,用于返回数据,并且不会被用户访问到,lo虚拟网卡中的127.0.0.1就属于回环地址,不会被外部访问,参照lo虚拟网卡配置

cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo1

vi /etc/sysconfig/network-scripts/ifcfg-lo1

DEVICE=lo:1   #网卡修改名称
IPADDR=10.1.60.116   #配置为vip地址
NETMASK=255.255.255.255   #更改为32位子网掩码
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

重启网络服务

systemctl restart network

ip add

 添加路由

route add -host 10.1.60.116 dev lo:1   #若是需要删除将add替换为del即可

查看路由

route -n

配置arp响应与通告

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

使配置生效 

sysctl -p

 在A、B主机上执行以下命令

安装ipvsadm工具

yum -y install ipvsadm

查看ipvs规则

ipvsadm -Ln

 可以看到ipvs规则中显示10.1.60.116:80地址通过rr轮询负载到后端的10.1.60.112:80、10.1.60.114:80两个nginx地址中

5.测试

访问vip地址和端口看看是否能正常转发到后端的两个nginx中

curl 10.1.60.116

可以看到访问 vip地址是可以正常轮询访问到后端的两个nginx中

再来测试一下lvs的负载均衡健康检测功能

将C主机的nginx 80监听端口更改为81

vi /etc/nginx/nginx.conf

 优雅重载nginx配置文件

nginx -s reload

查看A、B主机的keepalived状态与ipvs规则

systemctl status keepalived

ipvsadm -Ln

 可以看到lvs检测到C主机的nginx 80端口有问题就把C主机节点从负载均衡中剔除了

我们现在把C主机的nginx81端口恢复回80端口看看是否会重新加入负载均衡列表

nginx -s reload

 查看keepalived状态和ipvs规则

systemctl status keepalived

ipvsadm -Ln

可以看到C主机的80端口恢复后,lvs将该节点恢复到了负载均衡列表中

再来测试一下keepalived的高可用

 将A主机的keepalived服务停止

systemctl stop keepalived

查看B主机的keepalived服务状态

systemctl status keepalived

ip add |grep ens160

 测试访问vip地址

揭秘Nginx架构-10000并发连接背后的秘密 在当今移动互联网时代,网站的高并发、高性能成为了决胜关键。作为一款出色的开源Web服务器,Nginx以其非凡的高并发处理能力成为了架构师的利器。让我们一同揭开Nginx源码的神秘面纱,探索它高效处理海量请求的秘密。 阅读详情

相关推荐

基于Redis和Nginx实现高并发缓存架构

目录1 缓存架构设计1.1 缓存架构设计2 Redis集群高级应用3 Nginx缓存3.1 OpenRestry安装3.2 浏览器缓存3.2.1 Nginx Web缓存配置3.2.2 Http缓存控制头3.3 代理缓存3.3.1 proxy_cache3.3.2 缓存操作4 Canal的使用 1 缓存架构设计 一谈到缓存架构,很多人想到的是Redis,但其实整套体系的缓存架构并非只有Redis,而应该是多个层面多个软件结合形成一套非常良性的缓存体系。比如下面缓存架构设计就涉及到了多个层面的缓存软件。本文只

赵广陆 5069

Nginx高并发实现原理学习

本文介绍了高并发的各种概念以及指标,接着说明了Nginx实现高并发的一些原理,并且对比apache服务器,就Nginx在实现高并发方面的诸多优点进行了分析说明。

Pistachiout的学习博客 3361

yolov11使用记录(训练自己的数据集)

本文介绍了如何安装和使用Ultralytics YOLOv11进行目标检测。首先,通过Anaconda创建并激活虚拟环境,安装必要的依赖库如PyTorch和Ultralytics。接着,从GitHub下载YOLOv11源码,并在PyCharm中配置环境。下载预训练的YOLOv11模型后,通过编写简单的Python脚本进行图片检测,验证环境配置的正确性。最后,文章提到可以基于此环境训练自定义模型。整个过程涵盖了从环境搭建到模型应用的完整流程,适合初学者快速上手YOLOv11。

IT菜鸟 7548

nginx

Nginx下面是我对于学习完Nginx的笔记(很简单的笔记)前言一、什么是nginx?二、Nginx静态网站部署一、静态网站部署二、配置虚拟主机1. 端口绑定2. 域名绑定域名介绍三、Nginx反向代理与负载均衡一、反向代理1、什么是反向代理二、负载均衡1、什么是负载均衡四.docker安装与nginx五、总结: 下面是我对于学习完Nginx的笔记(很简单的笔记) 前言 当并发量很多的时候tomcat不足以支撑就会使用nginx,在前面对于springcloud微服务的学习中也使用到了nginx做为负载均衡

小旭IT-分享技术 573

激光甲烷传感器DIY指南:从DFB激光器选型到Herriott池光路搭建

本文详细介绍了如何DIY激光甲烷传感器,从DFB激光器选型到Herriott池光路搭建的全过程。通过TDLAS技术实现ppm级甲烷检测,适用于家用燃气泄漏监测和农业沼气监测等场景。文章包含核心器件选型、光路搭建技巧、信号调理方案及系统集成优化,为创客提供实用指南。

f9g0h的博客 596

避坑指南:ZYNQ MPSOC QSPI固化时MT25QU256闪存的特殊配置

本文针对Xilinx ZYNQ UltraScale+ MPSoC平台,详细解析了使用Vitis工具将BOOT.bin固化至Micron MT25QU256ABA QSPI NOR Flash时的特殊配置与避坑指南。重点阐述了Init文件的真实作用、电压与频率的精确匹配策略,以及针对该闪存型号的初始化序列,帮助工程师解决烧录失败、启动异常等常见问题,确保系统可靠启动。

weixin_29175469的博客 271

Nginx 是如何实现高并发的?

此外,Nginx还采用了事件驱动的I/O模型,通过使用高效的事件处理机制,能够在不阻塞其他请求的情况下,及时响应新的请求。而Nginx的工作方式完全不同,它采用了事件驱动的模型,通过少量的进程或线程处理大量的请求,实现了高并发的处理能力。另外,Nginx还采用了事件驱动的I/O模型,通过使用高效的事件处理机制,能够在不阻塞其他请求的情况下,及时响应新的请求。具体来说,Nginx的工作方式是这样的:当一个请求到达时,Nginx的主进程会接收到这个请求,并将其分发给一个空闲的工作进程来处理。

qq_40427481的博客 1505

GEOPHYSICS 投稿避坑指南:从格式规范到双盲评审的实战解析

本文详细解析了GEOPHYSICS期刊投稿的全流程避坑指南,从格式规范、数据声明到双盲评审的实战策略。特别强调了数学公式排版、图表制作标准以及投稿系统的隐藏关卡,帮助作者避免常见错误,提升投稿成功率。

weixin_30606461的博客 236

Nginx是什么?Nginx高并发架构拆解指南

从一次"Apache扛不住1万并发崩溃而Nginx轻松扛住10万"的性能对比出发,深度剖析Nginx高并发架构的核心设计。通过Master-Worker进程模型、事件驱动与异步非阻塞、以及epoll多路复用的底层原理,揭秘为什么Nginx能用2GB内存支持10万并发连接、为什么一个Worker进程能管理1万个连接、以及反向代理和负载均衡的实现机制。配合架构图展示请求处理流程,给出高并发场景的Nginx调优方案。

比较是偷走幸福的小偷 3793

三、STM32F103ZET6最小系统

stm32最小系统除去主控CPU外,需要包含,电源电路,复位电路,BOOT电路,时钟电路(因为stm32有内置时钟,对时钟要求不高的话,可以不要)。NRST引脚其实芯片已经用一个约40K的电阻上拉了,所以理论上来说是不需要再外接上拉电阻的,但我看大家都是有外接上拉的,心里没有底,不管这么多,先预留着。吃过亏,特意查看了芯片手册资料,下图是官方建议的供电方案,图片来自stm32f103zet6数据手册。首先明白目标,单纯的学习软件知识并不是我希望的,我还希望会硬件设计,这样后面才能摆脱开发板。

sevendecsdn的博客 6454

4、分布式发电系统中用于改善电能质量的有源、无源和混合滤波器

本文探讨了分布式发电系统中,尤其是光伏(PV)系统运行过程中引入的电能质量问题,并分析了有源滤波器、无源滤波器及混合滤波器在改善电能质量方面的应用。文章详细介绍了光伏系统的建模、最大功率点跟踪(MPPT)技术,以及谐波、电压波动等技术问题,同时对各类滤波器的拓扑结构和控制方法进行了系统性总结。通过仿真实例比较了不同滤波器在减少谐波方面的效果,为实际工程应用提供了参考依据。

transformer2023的博客 89

运维笔记:Nginx 高并发架构拆解

本文深入解析Nginx高并发原理与优化实践。核心基于多进程事件驱动模型,通过epoll异步非阻塞IO支持数万并发连接。重点介绍了性能优化配置,包括worker进程设置、TCP参数调优、静态资源缓存和Gzip压缩。详细阐述了负载均衡算法选择、健康检查机制及双机热备高可用架构。同时涵盖安全加固措施与Prometheus监控体系建设。最后总结了分层设计、无状态服务、多级缓存等高并发架构原则,提供完整的性能调优清单和常见问题解决方案。通过合理配置,Nginx可稳定支撑每秒数万请求的高并发场景。

ececec12的博客 1104

请举手回答,LDO和DC-DC有什么不同?

文章目录1 LDO是什么2 LDO典型电路3 DC-DC是什么4 DC-DC典型电路5 LDO和DC-DC区别10.2.6 小结一下 大家好,我是记得诚。 DC-DC和LDO都是电源芯片,两者差异很大,用法也不同,这篇博客讲述LDO和DC-DC的一些差异,帮助更好的认识LDO和DC-DC并进行选型。 1 LDO是什么 LDO是low dropout regulator的简称,即低压差线性稳压器,这是相对于传统的线性稳压器来说的,传统的稳压器,输入比输出要高出很多,否则无法工作,LDO可能输入比输出高1~2V

记得诚 1万+

Python 解析 Flask+Gunicorn+Nginx 高并发架构

Flask是一个轻量级的Web应用框架,它使用Werkzeug作为WSGI工具箱,并使用Jinja2模板引擎。Gunicorn(Green Unicorn)是一个Python WSGI HTTP服务器,它是为Unix设计的。Gunicorn是一个预叉工作模式的服务器。这意味着它有一个主进程管理器和多个工作进程。当接收到请求时,这些工作进程会并行地处理请求,从而提高了处理高并发请求的能力。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

2501_90727642的博客 396

携程机票数据爬取实战:使用 Python 获取携程网机票信息

通过本篇博客,我们详细介绍了如何使用 Python 爬取携程网的机票信息,涉及了静态网页爬取(使用 Requests 和 BeautifulSoup)和动态网页爬取(使用 Selenium)两种方法。通过获取的数据,我们不仅能够进行票价分析,还可以构建更为复杂的预测模型或趋势分析工具。爬虫技术不仅能够帮助我们收集有价值的数据,还能够为商业决策提供数据支持。在实际应用中,我们可以结合更多的分析方法,如自然语言处理、图像处理等,进一步提升数据的价值。

2201_76125261的博客 1657

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Nginx 是什么?Nginx高并发架构拆解指南

这次我们要加的中间层是。

m0_73735578的博客 899

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

高并发web服务器nginx网站架构

高并发web服务器nginx网站架构 点击下载

qq_38898288的博客 332

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

高并发之nginx架构

Nginx作为高性能Web服务器的代表,其成功源于对操作系统能力的极致利用。为解决C10K问题,Nginx采用了多进程事件驱动架构,结合epoll等I/O多路复用技术,实现单线程处理数万并发连接。其核心优化包括:Master-Worker多进程模型实现进程隔离,epoll机制实现O(1)事件处理,零拷贝技术减少数据传输开销。通过这些创新设计,Nginx将传统Web服务器的单机并发能力提升到百万级别,证明了合理架构与系统调优可以突破硬件限制。Nginx的成功经验表明,充分利用操作系统特性比发明新理论更能有效解

930

Nginx高并发核心依赖何架构模型?

Nginx的高并发核心架构模型主要包括:1)负载均衡与服务器集群实现请求分发;2)高速传输通道与数据缓存机制提升响应速度;3)事件驱动模型高效处理并发请求;4)数据库与缓存分离设计保障性能。关键技术涉及负载均衡算法优化、数据传输协议改进、性能监控调优等。该架构通过多维度技术整合,显著提升了系统吞吐量和稳定性,为Web服务提供高性能并发处理能力。未来将持续优化演进。

2501_90410679的博客 39

基于nginx和redis架构的高并发框架的设计与研究

基于nginx和redis架构的高并发框架的设计与研究

qq_39318513的博客 942
上一篇: nginx白名单配置
下一篇: centos系统优化
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值