Nginx作为负载均衡


一.负载均衡

简单的来说。可以减少服务器的压力,将原本一台服务器所要承受的访问量分给了多台,并提高了项目的可用性,当一台服务器挂掉的时候也不会导致整个项目瘫痪。

配置语法:

二.nginx实现负载均衡

nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.14.129
tomcat1服务器:192.168.14.131
tomcat2服务器:192.168.14.134
我们将两个相同的项目分别放到了131与134服务器中,当我们通过129负载访问项目接口时,nginx会自动将请求轮流分配给131与134来执行。


2.1配置:

编辑nginx.conf配置文件 在http里添加以下配置

upstream mytomcat{
    server 192.168.14.131:8080;
    server 192.168.14.134:8080;
    }  

在server里添加以下配置

server {  
listen       80;
server_name  192.168.14.129;  //所有请求都到这里去找分配 

#charset koi8-r;
access_log  /var/log/nginx/test_proxy.access.log  main;
resolver  8.8.8.8;

location / {
    proxy_pass http://mytomcat;  //使用mytomcat分配规则,即nginx.conf添加的upstream节点


    #include proxy_params;
    proxy_redirect default;  //下面为代理配置

    proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;

            proxy_connect_timeout 30;
            proxy_send_timeout 60;
            proxy_read_timeout 60;

            proxy_buffer_size 32k;
            proxy_buffering on;
            proxy_buffers 4 128k;
            proxy_busy_buffers_size 256k;
            proxy_max_temp_file_size 256k;
}  

2.2 server参数解释:

  1. down 当前的server暂时不参与负载均衡
  2. backup 预留的备份服务器
  3. max_fails 允许请求失败的次数
  4. fail_ timeout 经过max_fails失败后,服务暂停的时间
  5. max_conns 限制最大的接收的连接数
  6. weight 默认为1.weight越大,负载的权重就越大。

2.3 nginx轮询策略

  1. 轮询 按时间顺序逐一分配到不同的后端服务器
  2. 加权轮询 weight值越大,分配到的访问几率越高
  3. ip_ hash 每个请求按访问ip的hash结果分配,这样来自同一个ip的固定访问一个后端服务器
  4. url_ hash 按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器least_conn最少链接数,哪个机器连接数少就分发
  5. 最少hash关键字值 hash自定义key

例:

upstream mytomcat{
    hash $request_utl;   //url_hash
    server 192.168.14.131:8080;
    server 192.168.14.134:8080;
    }