nginx负载均衡
选择字号: 超大 标准 发布时间:2020年02月19日 | 作者:admin | 0个评论 | 1605人浏览
负载均衡
场景:反向代理过程中,每台服务器处理来自客户端的请求都应该是均衡的。
原理:使用一个反向代理服务器指向多台部署相同应用的服务器,客户端请求直接向反向代理服务器发起,反向代理服务器根据负载均衡机制,将请求转发到不同的应用服务器上。
负载均衡机制:
nginx提供了一下三种方法:
1)round-robin:请求以循环、轮转的方式分发到服务器
2)least-connected:下一个请求被分配到拥有最少活动连接数的服务器
3)ip-hash:使用一个哈希函数,基于客户端ip地址判断下一个请求应该被分发到哪台服务器
相关配置说明
1)循环、轮转负载均衡
round-robin:默认情况下,使用循环、轮转的方式分发请求到服务器
配置示例:
http{
upstream myapp{
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server{
listen 80;
location / {
proxy_pass http://myapp;
}
}
}
当不指定负载均衡方式时,默认以round-robin方式实现。所有请求都会被代理到myapp服务器,根据负载均衡机制分发请求。
2)最少连接负载均衡
least-connected:当一些请求处理的时间比较长时,最少连接负载均衡能够争取到更大的公平。
配置示例:
upstream myapp{
least-conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
3)基于ip地址的负载均衡
ip-hash:采用目标地址散列调度(Destination Hashing Scheduling)算法,根据请求的目标ip地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器可用且未超载,则将请求发送带服务器,否则返回空。
upstream myapp{
ip-hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
##################################################
2.Nginx负载均衡的集中方式介绍
2.1 轮询
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。
upstream dalaoyang-server {
server localhost:10001;
server localhost:10002;
}
2.2 权重
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.3 iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream dalaoyang-server {
ip_hash;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.4 最少连接
将请求分配到连接数最少的服务上。
upstream dalaoyang-server {
least_conn;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.5 fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
fair;
}
3.Nginx配置
以轮训为例,如下是nginx.conf完整代码。
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream dalaoyang-server {
server localhost:10001;
server localhost:10002;
}
server {
listen 10000;
server_name localhost;
location / {
proxy_pass http://dalaoyang-server;
proxy_redirect default;
}
}
}
标签:
欢迎加QQ:2908190019
额 本文暂时没人评论 来添加一个吧
发表评论