阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx负载均衡及配置

163次阅读
没有评论

共计 3029 个字符,预计需要花费 8 分钟才能阅读完成。

Nginx 负载均衡及配置

1 负载均衡概述
    负载均衡由来是因为当一台服务器单位时间内的访问量很大时, 此时服务器的压力也会很大, 当超过自身承受能力时, 服务器就会崩溃. 为避免让服务器崩溃, 用户拥有更好的体验, 就诞生了负载均衡来分担服务器压力.
   
    负载均衡实质上就是用反向代理的原理实现的, 是一种优化服务器资源, 合理处理高并发的一种技术, 能够平衡个服务器的压力, 减少用户请求等待时间, 并确保容错. 一般采用 nginx 作为一种高效的 HTTP 负载均衡服务器, 将流量分配到多个应用服务器上以提高性能, 可扩展和高可用性.
   
    原理: 内网可以建很多服务器, 组成服务器集群, 当用户访问该网站时, 先访问公网中间服务器, 中间服务器根据算法合理分配到内网服务器, 分担服务器的压力, 因此户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

    nginx 反向代理实现包括下面这些负载均衡 HTTP、HTTPS、FastCGI、uwsgi,SCGI 和 memcached。
要配置 HTTPS 的负载均衡,只需使用 ’http’ 开头的协议。
当要设置 FastCGI,uwsgi,SCGI,或者 memcached 的负载平衡,分别使用 fastcgi_pass,uwsgi_pass,scgi_pass 和 memcached_pass 指令。

2 负载均衡的常见平衡机制

1 轮询(round-robin) : 以轮询方式将请求分配到不同服务器上, 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器挂掉,自动剔除,保证正常的服务。

配置 1:
upstream server_back {#nginx 分发服务请求
    server 192.168.162.49;
    server 192.168.162.50;
}

配置 2:
http {
    upstream servergroup {# 服务组接受请求,nginx 轮询分发服务请求
        server srv1.demo.com;
        server srv2.demo.com;
        server srv3.demo.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://servergroup; #所有的请求被代理到 servergroup 服务组
        }
    }
}
 proxy_pass  后面是被代理的服务器 ip,也可以是主机名,域名,ip 端口模式
 upstream    设定负载均衡后台服务器列表

2 权重负载均衡(weight):如果没有配置权重,每个服务器的负载都是一样的,当出现服务器性能不均时,采用 权重轮询,指定的服务器的权重参数,权重占比为负载均衡决定的一部分。权重大负载就大。
upstream server_back {
    server 192.168.162.49 weight=3;
    server 192.168.162.50 weight=7;
}

3 最少连接数(least-connected):将下一个请求分配到连接数最少的那台服务器上,当一些请求需要更长的时 间响应,最少连接可以更公平地控制应用程序实例的负载。nginx 会将请求转发到负载较少的服务器。
upstream servergroup {
        least_conn;
        server srv1.demo.com;
        server srv2.demo.com;
        server srv3.demo.com;
    }

4 ip-hash : 基于客户端的 IP 地址。原因时负载均衡每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样明显不太妥。采用 ip_hash 解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

每个请求按照 IP hash 的结果分配,因此请求被固定到某一个后端服务器,也可以解决 session 问题
upstream servergroup {
        ip-hash;
        server srv1.demo.com;
        server srv2.demo.com;
        server srv3.demo.com;
    }

附上一个实例:
#user  nobody;
worker_processes  4;
events {
    # 最大并发数
    worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myserver{
        # ip_hash 指令,将同一用户引入同一服务器。
        ip_hash;
        server 125.219.42.4 fail_timeout=60s; #max_fails 失败后暂定时间 60s
        server 172.31.2.183;
        }

    server{
                # 监听端口
                listen 80;
                # 根目录下
                location / {
                    # 选择哪个服务器列表
                    proxy_pass http://myserver;
                }
            }
}

max_fails  允许请求失败的次数默认为 1
fail_timeout=60s  fail_timeout=60s 失败暂停的时间
down 表示当前的服务器暂时不参与负载
backup  所有非 backup 机器忙的时候会请求 backup,因此其压力会最轻。

下面关于 Nginx 的文章您也可能喜欢,不妨参考下:

CentOS 7 下 Nginx 服务器的安装配置  https://www.linuxidc.com/Linux/2017-04/142986.htm
CentOS 上安装 Nginx 服务器实现虚拟主机和域名重定向  https://www.linuxidc.com/Linux/2017-04/142642.htm
CentOS 6.8 安装 LNMP 环境(Linux+Nginx+MySQL+PHP)https://www.linuxidc.com/Linux/2017-04/142880.htm
Linux 下安装 PHP 环境并配置 Nginx 支持 php-fpm 模块  https://www.linuxidc.com/Linux/2017-05/144333.htm
Nginx 服务的 SSL 认证和 htpasswd 认证  https://www.linuxidc.com/Linux/2017-04/142478.htm
Ubuntu 16.04 上启用加密安全的 Nginx Web 服务器  https://www.linuxidc.com/Linux/2017-07/145522.htm
Linux 中安装配置 Nginx 及参数详解  https://www.linuxidc.com/Linux/2017-05/143853.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 https://www.linuxidc.com/Linux/2014-07/104686.htm
CentOS 7.2 下 Nginx+PHP+MySQL+Memcache 缓存服务器安装配置  https://www.linuxidc.com/Linux/2017-03/142168.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3029字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中