nginx的负载均衡配置,包括http、tcp和udp负载均衡,以及Round robin、Least connections、Least time(Nginx Plus专属)、Generic hash、Random、IP hash(HTTP模块专属)的原理分析。
1、http负载均衡
我们先来看一小段配置文件
upstream backend {
server 10.0.0.1:80 weight=1;
server nginx.example.com:80 weight=2;
}
server {
location / {
proxy_pass http://backend;
}
}
这是一个简单的使用upstream模块对http服务进行指定权重的负载均衡的配置文件,一般存放在nginx目录下的conf.d文件夹中。
server可以使用Unix socket、IP、DNS、FQDN等来进行服务器的指定,这里的Unix socket指的是POSIX操作系统中的组件,即用于进程间通信的那个Unix socket。也就是说如果做负载均衡的时候本机也作为server之一,使用scoket确实是可以有效提高速度的(对比DNS和IP等),因为都在同一个系统上,走进程间的通信比走网络通信要少了很多验证步骤和协议,通信的速度会更快。但是在实际业务中比较少使用这样的方式,一般都会直接使用IP方便定位主机和运维分析等。IP相比DNS和FQDN要少了一步域名解析的过程,理论上速度会快一些,但是DNS其实也可以做负载均衡,同时DNS和FQDN给了网络路由更多的控制权,实际怎么使用还要看具体的业务需求。
upstream中server指令语法如下:
server address [parameters]
-
关键字
server必选 -
address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号 -
parameters是可选参数,可以是如下参数:down:表示当前server已停用backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求weight:表示当前server负载权重,权重越大被请求几率越大,默认是1
-
max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_time

本文详细介绍了Nginx的负载均衡配置,包括http、tcp和udp负载均衡,以及轮询、最少连接数、最快响应时间(Nginx Plus专属)、普通哈希、随机和IP哈希(HTTP模块专属)六种负载均衡策略的原理。通过配置示例和策略分析,帮助理解Nginx如何实现高效的负载分发。
最低0.47元/天 解锁文章
756

被折叠的 条评论
为什么被折叠?



