nginx负载均衡
1、集群概念
(1)、集群介绍
(2)、为什么要使用集群
2、 负载均衡
(3)、nginx负载均衡实战
a、nginx负载均衡概述
Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,
实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾
Nginx要实现负载均衡需要用到proxy_pass代理模块配置
Nginx负载均衡与Nginx代理不同地方在于
Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池
Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。
b、upstream配置
在nginx.conf 》 http区域中
upstream slave_pools{ server 192.168.2.10:80; server 192.168.2.12:80; }
在nginx.conf > http 区域 > server区域 > location配置中
添加proxy_pass
location / { proxy_pass http://slave_pools;
include proxy_params; # 需要手动创建 }
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k;
此时初步负载均衡已经完成,upstream默认按照轮训方式负载,每个请求按时间顺序逐一分配到后端节点。
c、upstream分配策略
weight权重
upstream slave_pools { server 192.168.2.10:80 weight=5; server 192.168.2.12:80 weight=10;#这个节点访问比率是大于8000的 }
ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器 upstream slave_pools { ip_hash; server 192.168.2.10:80; server 192.168.2.12:80; }
backup
在非backup机器繁忙或者宕机时,请求backup机器,因此机器默认压力最小
upstream slave_pools { server 192.168.2.10 weight=5; server 192.168.2.12; server 192.168.2.13 backup; }
d、nginx负载均衡调度算法
调度算法 概述
轮询 按时间顺序逐一分配到不同的后端服务器(默认)
weight 加权轮询,weight值越大,分配到的访问几率越高
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash 按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn 最少链接数,那个机器链接数少就分发
1.轮询(不做配置,默认轮询)
2.weight权重(优先级)
3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用