nginx之负载均衡原理以及实例操作

Hello!欢迎各位新老朋友来看小弟博客,祝大家事业顺利,财源广进!!

主题:负载均衡

第一:前言

Nginx系列导读

给小白的 Nginx 10分钟入门指南

Nginx编译安装及常用命令

完全卸载nginx的详细步骤

Nginx 配置文件详解

理解正向代理与反向代理的区别

一文带你读懂Nginx反向代理

一文带你读懂nginx中的location指令

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件**(IMAP/POP3)**代理服务器。官方测试nginx能够支撑5万并发连接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

随手记录一下,上次有个面试官问nginx支持的协议有哪些?

HTTP/1.1 Nginx 支持 HTTP/1.1 协议,这是目前最常用的 HTTP 协议版本。
HTTP/2 Nginx 从 1.9.5 版本开始支持 HTTP/2 协议,它提供了更好的性能,包括头部压缩、多路复用等特性。
HTTPS Nginx 支持通过 SSL/TLS 协议提供安全的 HTTPS 连接,用于加密客户端和服务器之间的通信。
FTP Nginx 可以通过第三方模块支持 FTP 协议
SMTP/POP3/IMAP Nginx 可以通过ngx_mail模块支持邮件协议,包括 SMTP(发送邮件)、POP3(接收邮件)和 IMAP(邮件访问协议)
TCP/UDP Nginx 可以通过其 stream 模块支持 TCP 和 UDP 协议,用于负载均衡和代理其他类型的网络服务
WebSocket Nginx 支持 WebSocket 协议,这是一种在单个 TCP 连接上进行全双工通信的协议
gRPC Nginx 可以通过配置支持 gRPC,这是一种由 Google 主导的高性能、通用的 RPC 框架
FastCGI Nginx 支持 FastCGI 协议,这是一种常用于 Web 应用和后端脚本语言(如 PHP)之间通信的协议。
SCGI Nginx 支持 SCGI(Simple Common Gateway Interface),这是一种进程间通信协议,用于 Web 服务器和应用服务器之间的通信。
uWSGI Nginx 可以通过 uWSGI 协议与应用服务器通信,这通常用于 Python 应用。
Proxy Protocol Nginx 支持 Proxy Protocol,这是一种用于传输客户端真实 IP 地址的协议,常用于负载均衡器和代理环境中。

负载均衡

什么是负载均衡,单从字面理解可以解释为N台服务器平均分担负载,不会因为某台服务器负载高宕机而出现某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,目的是达到整个系统的高性能和高可用性。

第二:Nginx负载均衡介绍

严格地说,Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?

  • 普通负载均衡软件,例如大名鼎鼎的LVS,其实功能只是对请求数据包的转发(也可能会改写数据包)、传递。其中DR模式明显的特征是:从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户。
  • 而反向代理就不一样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。
  • 一句话,LVS等的负载均衡是转发用户请求的数据包,而Nginx反向代理是接收用户的请求后,会代理用户重新发起请求代理下的节点服务器。

第三:Nginx负载均衡组件模块

实现Nginx负载均衡的组件主要有两个:

  • ngx_http_upstream_module 负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查

  • ngx_http_proxy_module proxy代理模块,用于把请求转发给服务器节点或upstream服务器池

2.1、upstream模块

(1)upstream模块介绍

upstream模块允许Nginx定义一组或多组节点服务器组,使用时可以通过proxy_pass代理方式把网站的请求发送到事先定义好的对应upstream组的名字上,具体写法为:

proxy_pass http://server_pools

其中server_pools就是一个upstream节点服务器组名字。

(2)upstream配置案例

范例1:基本的upstream配置案例:

 upstream server_pools {
   
   

# upstream是关键字必须有,后面的server_pools是upstream集群组的名字,可自定义名称,调用时就用这个名字。

server 192.168.1.251:80 weight=5;
server 192.168.1.252:80 weight=10;
server 192.168.1.253:80 weight=15;


# server关键字是固定的,后面可以接域名或IP。如果不指定端口,默认是80端口。weight代表权重,数值越大被分配的请求越多。

}

范例2:较完整的upstream配置案例:

upstream blog__pools {
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值