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

简介: 个人学习

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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
10月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
1374 62
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
人工智能 运维 安全
基于合合信息开源智能终端工具—Chaterm的实战指南【当运维遇上AI,一场效率革命正在发生】
在云计算和多平台运维日益复杂的今天,传统命令行工具正面临前所未有的挑战。工程师不仅要记忆成百上千条操作命令,还需在不同平台之间切换终端、脚本、权限和语法,操作效率与安全性常常难以兼顾。尤其在多云环境、远程办公、跨部门协作频繁的背景下,这些“低效、碎片化、易出错”的传统运维方式,已经严重阻碍了 IT 团队的创新能力和响应速度。 而就在这时,一款由合合信息推出的新型智能终端工具——Chaterm,正在悄然颠覆这一现状。它不仅是一款跨平台终端工具,更是业内率先引入 AI Agent 能力 的“会思考”的云资源管理助手。
|
人工智能 运维 监控
运维也能“先演练后实战”?聊聊数字孪生的那些神操作
运维也能“先演练后实战”?聊聊数字孪生的那些神操作
355 0
|
缓存 运维 安全
7天精通电商API:从接入到运维的完整实战手册
本文全面解析电商API接口技术,从基础概念到高阶应用,涵盖商品、订单、支付与营销等核心模块,并深入探讨性能优化、安全防护与智能化发展方向,助你掌握驱动数字商业的核心技术。
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
11月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
1237 0
|
存储 NoSQL Java
探索Java分布式锁:在高并发环境下的同步访问实现与优化
【6月更文挑战第30天】Java分布式锁在高并发下确保数据一致性,通过Redis的SETNX、ZooKeeper的临时节点、数据库操作等方式实现。优化策略包括锁超时重试、续期、公平性及性能提升,关键在于平衡同步与效率,适应大规模分布式系统的需求。
673 1
|
监控 算法 Java
企业应用面临高并发等挑战,优化Java后台系统性能至关重要
随着互联网技术的发展,企业应用面临高并发等挑战,优化Java后台系统性能至关重要。本文提供三大技巧:1)优化JVM,如选用合适版本(如OpenJDK 11)、调整参数(如使用G1垃圾收集器)及监控性能;2)优化代码与算法,减少对象创建、合理使用集合及采用高效算法(如快速排序);3)数据库优化,包括索引、查询及分页策略改进,全面提升系统效能。
328 0