nginx实现负载均衡的6种方式
nginx实现负载均衡的6种方式
一、负载均衡
nginx负载均衡有6中方式(轮询,权重,ip_hash,最少连接least_conn,fair,url_hash),使用upsteam模块实现负载均衡
nginx负载均衡的意思大概是指多台服务器部署一个服务,但是这几台服务器的负载压力不同,处理程序的效率不同,负载均衡的作用就是按服务器可承受的负载将请求转发到对于的服务器中。 从而分担服务器的压力,让用户可以更快得到访问的数据。得到更好的体验。
例如设置使用nginx发布两个不同的html文件,使用nginx设置负载均衡,使用本地电脑访问nginx负载均衡的地址,刷新页面,将轮流显示两个页面。
页面1:
页面2:
1、轮询
将用户的请求按顺序依次转发到不同的服务器上
在nginx配置文件中server模块上增加以下内容
upstream test-server { #test-server的名字自己起
#每一个server对应一个负载服务
server localhost:8080 ;
server localhost:8081 ;
}
2、权重
权重是基于轮询,利用weihgt设置服务的访问比例,此场景适用于服务器可承受的负载压力不一致时,例如A(192.168.42.174)服务器可承受1个访问请求,B(192.168.42.175)服务器可以承受两个访问请求,此时就可以使用weihgt方式设置比例为1:2。当有3个用户同时访问时,其中A服务器处理1个访问请求,B服务器处理2个访问请求,从而实现负载均衡。
nginx配置如下
upstream test-server { #test-server的名字自己起
#每一个server对应一个负载服务
server 192.168.42.174:8080 weight=1;
server 192.168.42.175:8081 weight=2;
}
3、ip_hash
ip_hash是将某台电脑的访问请求绑定到一个后端服务器上,如两个不一致的前端页面,设置ip_hash方式后,若访问到的时test2页面,则无论怎么刷新页面,至显示test2页面
nginx配置文件如下:
upstream test-server {
ip_hash;
server localhost:8080 ;
server localhost:8081 ;
}
ip_bash可与weight配合使用,使用ip_hash时,可以解决登录失效的情况
upstream test-server {
ip_hash;
server localhost:8080 weight=2;
server localhost:8081 weight=1;
}
4、最少连接least_conn
将用户的请求转发到有最少处理请求的服务器中,若A目前处理了5个请求,B处理了10个请求,当我的电脑再次访问nginx时,则我的请求将会转发到A服务器中,least_conn可与weight配合使用
nginx配置文件如下:
upstream test-server {
least_conn;
server localhost:8080;
server localhost:8081;
}
nginx.conf配置文件内容详解
upstream test-server {
#least_conn;
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://test-server;
proxy_redirect default;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 8081;
server_name localhost;
location / {
root html2;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}