「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」
Nginx负载均衡基本概述
为什么要使用负载均衡
当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx
负载均衡,将请求分散的打到我们的后端服务器集群中,实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾。
常见的负载均衡软件有很多种: 比如:
Nginx :在1.9版本之前只能做7层负载,在1.9版本之后,出来一个叫做stream模块,4层7层都能做 (软件)
Haproxy :4层,7层 (软件)
LVS : 4层 。ipvsadm,修改路由,把一台服务器相当于变成了一台物理“硬件负载均衡” (专业做4层,速度最快)
下面我们来介绍一下nginx的七层负载均衡。 Nginx要实现七层负载均衡需要用到proxy_pass代理模块配置。Nginx默认安装支持这个模块,我们不需要再做任何处理。Nginx的负载均衡是在Nginx的反向代理基础上把用户的请求根据指定的算法分发到一组【upstream虚拟服务池】。
Nginx七层负载均衡的指令
upstream指令
该指令是用来定义一组服务器,它们可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。服务器可以指定不同的权重,默认为1。
语法 | upstream name {...} |
---|---|
默认值 | -- |
位置 | http |
server指令
该指令用来指定后端服务器的名称和一些参数,可以使用域名、IP、端口或者unix socket
语法 | server name [paramerters] |
---|---|
默认值 | -- |
位置 | upstream |
Nginx七层负载均衡的实现流程
服务端设置
server {
listen 9001;
server_name localhost;
default_type text/html;
location /{
return 200 '<h1>192.168.1.100:9001</h1>';
}
}
server {
listen 9002;
server_name localhost;
default_type text/html;
location /{
return 200 '<h1>192.168.1.100:9002</h1>';
}
}
server {
listen 9003;
server_name localhost;
default_type text/html;
location /{
return 200 '<h1>192.168.1.100:9003</h1>';
}
}
负载均衡器设置
upstream backend{
server 192.168.1.100:9091;
server 192.168.1.100:9092;
server 192.168.1.100:9093;
}
server {
listen 8083;
server_name localhost;
location /{
proxy_pass http://backend;
}
}