运维工程师面试题总结-高并发解决方案Haproxy及Nginx负载均 衡集群实战11

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 个人学习

1. HAProxy在不影响现有连接的情况下,如何重新加载配置

使用haproxy的-sf(finished) 参数,可以方便重启了:

haproxy -f configfile -sf

haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

2. 你近期使用过的Nginx的版本?

生产环境使用Stable version:最新稳定版

注意各版本的区别:Nginx官网提供了三个类型的版本

1、Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版

2、Stable version:最新稳定版,生产环境上建议使用的版本

3、Legacy versions:遗留的老版本的稳定版

3. Nginx如何做限速限流?

在nginx.conf文件中的http模块下配置具体位置如下

若安装目录是/usr/local/nginx,则配置文件即为/usr/local/nginx/conf目录。(即/usr/local/nginx/conf/nginx.conf为配置文件)

apt安装方式 或 yum安装方式(apt install nginx OR yum install nginx)

在安装目录的根路径下,通常在/etc/nginx/目录下。(即/etc/nginx/nginx.conf为配置文件)

# ip并发请求限制

limit_req_zone $binary_remote_addr zone=one:10m rate=50r/s;

limit_req_zone $server_name zone=perserver:10m rate=50r/s;

# ip 连接数限制

limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_conn_zone $server_name zone=perserverconn:10m;

4. 如何对nginx中如下location pattern匹配的优先级排序

location = / {}

location / {}

location /documents/ {}

location ~* \.(gif|jpgljpeg)$ {}

location ^~ /images/ {}

答:= 优先于 ^~ 优先于于 ~|~*|!~|!~* 优先于 /

5. nginx代理负载均衡的调度算法有哪些?具体实现时的现象是什么?

轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。

weight(轮询权值)weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况 下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

ip_hash每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效 解决动态网页存在的session共享问题。

fair比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进 行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持 fair,如果需要这种调度算法,则必须安装upstream_fair模块。 url_hash按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存 服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包

6. 遇到前端nginx并发突然增高,写出你的排查思路

查看日志,看并发高的这段时间的访问记录以及出错记录等

进行访问限制

优化高并发配置

7. Nginx状态码499的意义是

499对应的是 “client has closed connection”。这很有可能是因为服务器端处理的时间过长,客户端 “不耐烦”了,测试nginx发现如果两次提交post过快就会出现499的情况,看来是nginx认为是不安全的连接,主动拒绝了客户端的连接. 配置参数 proxy_ignore_client_abort on; 表示代理服务端不要主要主动关闭客户端连接就可以了

8. LVS、HAProxy、Nginx三款

LVS的优点:

1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性 能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;

2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;

3、应用范围比较广,可以对所有应用做负载均衡;

4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;

LVS的缺点:

1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。

2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。

Nginx的优点:

1、工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy 更为强大和灵活;

2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;

3、Nginx安装和配置比较简单,测试起来比较方便;

4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;

5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会 把返回错误的请求重新提交到另一个节点;

6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在 也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对 apache有优势;

7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑 用其作为反向代理加速器;

Nginx的缺点:

1、Nginx不支持url来检测。

2、Nginx仅能支持http和Email,这个它的弱势。

3、Nginx的Session的保持,Cookie的引导能力相对欠缺。

HAProxy的优点:

1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);

2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;

3、支持url检测后端的服务器;

4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负 载均衡速度,在并发处理上也是优于Nginx的;

5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;

6、HAProxy的算法较多,达到8种;

LVS: 是基于四层的转发

HAproxy: 是基于四层和七层的转发,是专业的代理服务器

Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别: LVS由于是基于四层的转发所以只能做端口的转发 而基于URL的、基于目录的这种转发LVS就做不了

工作选择:

HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做 在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大 选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器 配置简单,所以中小型企业推荐使用HAproxy

9. 使用“反向代理服务器”的优点是什么?

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方 面来说是很好的,特别是当您使用web托管服务时。

10. 请列举Nginx服务器的最佳用途

Nginx服务器的最佳用法是在网络上部署动态HTTP内容,使用SCGI、WSGI应用程序服务器、用于脚本的 FastCGI处理程序。它还可以作为负载均衡器。

11. 为什么要做动、静分离?

在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理 的(如:css、html、jpg、js等等),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此 我们后台处理忽略静态文件,但是如果直接忽略静态文件的话,后台的请求次数就明显增多了。在我们对资源 的响应速度有要求的时候,应该使用这种动静分离的策略去解决动、静分离将网站静态资源(HTML, JavaScript,CSS等)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里将 静态资源放到nginx中,动态资源转发到tomcat服务器中,毕竟Tomcat的优势是处理动态请求。

如果想上手操作的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
7月前
|
Kubernetes 安全 应用服务中间件
IngressNightmare:Ingress Nginx 再曝5个安全漏洞,可接管你的 K8s 集群
是否还记得 2022 年 K8s Ingress Nginx 披露了的 3 个高危安全漏洞(CVE-2021-25745, CVE-2021-25746, CVE-2021-25748),并在那一年宣布停止接收新功能 PR,专注修复并提升稳定性。
|
8月前
|
消息中间件 NoSQL 关系型数据库
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
|
9月前
|
算法 NoSQL 应用服务中间件
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
在 Nacos 的配置管理界面或通过 Nacos 的 API,创建一个名为(与配置文件中 dataId 一致)的配置项,用于存储 Sentinel 的流量控制规则。上述规则表示对名为的资源进行流量控制,QPS 阈值为 10。resource:要保护的资源名称。limitApp:来源应用,default表示所有应用。grade:限流阈值类型,1 表示 QPS 限流,0 表示线程数限流。count:限流阈值。strategy:流控模式,0 为直接模式,1 为关联模式,2 为链路模式。
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
369 0
|
10月前
|
NoSQL 关系型数据库 MySQL
招行面试:高并发写,为什么不推荐关系数据?
资深架构师尼恩针对高并发场景下为何不推荐使用关系数据库进行数据写入进行了深入剖析。文章详细解释了关系数据库(如MySQL)在高并发写入时的性能瓶颈,包括存储机制和事务特性带来的开销,并对比了NoSQL数据库的优势。通过具体案例和理论分析,尼恩为读者提供了系统化的解答,帮助面试者更好地应对类似问题,提升技术实力。此外,尼恩还分享了多个高并发系统的解决方案及优化技巧,助力开发者在面试中脱颖而出。 文章链接:[原文链接](https://mp.weixin.qq.com/s/PKsa-7eZqXDg3tpgJKCAAw) 更多技术资料和面试宝典可关注【技术自由圈】获取。
|
12月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
1476 2
|
缓存 算法 架构师
京东面试:如何设计600Wqps高并发ID?如何解决时钟回拨问题?
资深架构师尼恩在其读者交流群中分享了关于分布式ID系统的设计与实现,特别是针对高并发场景下的解决方案。他强调了分布式ID系统在高并发核心组件中的重要性,并详细介绍了百度的UidGenerator,这是一个基于Snowflake算法改进的Java实现,旨在解决分布式系统中的唯一ID生成问题。UidGenerator通过自定义workerId位数和初始化策略,支持虚拟化环境下的实例自动重启和漂移,其单机QPS可达600万。此外尼恩的技术分享不仅有助于提升面试表现,还能帮助开发者在实际项目中应对高并发挑战。
京东面试:如何设计600Wqps高并发ID?如何解决时钟回拨问题?
|
负载均衡 前端开发 应用服务中间件
FastDFS+Nginx+fastdfs-nginx-module集群搭建
FastDFS+Nginx+fastdfs-nginx-module集群搭建
|
负载均衡 算法 微服务
基于gRPC的注册发现与负载均衡的原理和实战
基于gRPC的注册发现与负载均衡的原理和实战

热门文章

最新文章