Nginx负载均衡

Nginx负载均衡可以提高服务器资源可用性和效率。在负载均衡配置中,Nginx充当多个服务器上工作的分布式Web应用程序的单个入口点。

Nginx负载均衡配置:可以按照自己的需求自由配置,主要用到upstream和server模块

  • 循环访问负载:upstream添加服务器IP,请求会按照配置顺序循环访问对应负载服务器,平衡了短期的操作请求。
#定义要包含在负载均衡方案中的服务器。  
#最好使用服务器的私有IP以获得更好的性能和安全性。 
http {
    upstream backend {
       server 10.1.0.101;
       server 10.1.0.102;
       server 10.1.0.103;
    }
  
    #该服务器接受到端口80的所有流量并将其传递给上游upstream 。
    #请注意,upstream名称和proxy_pass需要匹配。
    server {
       listen 80;
        location / {
           proxy_pass http://backend;
       }
    }
 }
  • 最少链接负载:添加least_conn在upsream模块配置顶部,将请求定向到当时具有最少请求连接的服务器。对于可能需要更长时间才能玩车的应用程序,它比循环负载方式更有效。
upstream backend {
    least_conn;
    server 10.1.0.101;
     server 10.1.0.102;
    server 10.1.0.103;
 }
  • IPHash:如果Web应用程序要求用户被定向访问到与之前连接相同的服务器(例如:上次连接服务器缓存了用户信息)则需要使用IPHash方式,IPHash使用访问IP地址做密钥来确定应该连接哪台服务器。
upstream backend {
    ip_hash;
    server 10.1.0.101;
    server 10.1.0.102;
    server 10.1.0.103;
 }
  • 权重负载:如果配置负载服务器配置不一样,希望配置好的服务器优先访问,可以在对应服务器IP后添加wight关键字,设置服务器权重。
upstream backend {
    server 10.1.0.101 weight=4; 
    server 10.1.0.102 weight=2;
    server 10.1.0.103;
 }

启用Https负载均衡

server {
    listen 443 ssl;
    server_name domain_name;
    ssl_certificate /etc/letsencrypt/live/domain_name/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain_name/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    location / {
       proxy_pass http://backend;
    }
 }

健康检查:为了知道哪些服务器可用,Nginx的方向代理会做被动服务器健康检查,如果服务器无法响应或者返回错误,Nginx会检测到服务失败,并将尝试一段时间避免转发请求到该服务器。max_fails:设置服务器在特定时间内连续不成功的次数,max_fails = 0则禁用服务器健康检测。fail_timeout:定义服务器被视为失败的时间,默认设置为10s。如果fail_timeout时间已过,Nginx会重新检测该服务器健康,如果正常加进负载服务器中。

upstream backend {
    server 10.1.0.101 weight=5;
    server 10.1.0.102 max_fails=3 fail_timeout=30s;
    server 10.1.0.103;
 }
559 人浏览过

发表评论

邮箱地址不会被公开。 必填项已用*标注