Linux服务器nginx的负载均衡配置

服务器nginx的配置:

worker_processes  4;
events {
    # 最大并发数
    worker_connections  1024;
}

http{
	
	#静态页面服务器
	upstream static_page{
	    server 192.168.248.129:80;
	}
	
	#文件服务器
	upstream file_pool{
		#文件服务器上的fastdfs也部署有tracker和storage集群
	    server 192.168.248.128:80;
	}
	
    #负载均衡服务器列表
    upstream upload_pool{
        ip_hash;
        server 192.168.1.105  backup;
        server 192.168.1.109  down;
		server 192.168.1.106;
		server 192.168.1.101;
		keyalive 100;
    }
	
    server{
		listen 80;
		
		#门户网站静态页面配置
		location /static/ { 
			proxy_pass http://static_page;
			include proxy.conf;
        }
		
		//fastdfs配置
		location ~* \.(gif|jpg|jpeg)$ {
			proxy_pass http://file_pool;
			include proxy.conf;
        }
	
		//负载均衡配置
		location /upload/ {
			#只允许使用get、post、head方法去请求
			if ($request_method !~ ^(GET|HEAD|POST)$ ) {
				return 404;
			}
			
			#proxy_pass相关的优化参数
			proxy_set_header X-Forwarded-For $remote_addr;
			#选择哪个服务器列表
			proxy_pass http://upload_pool;
		}
		
	}

}

nginx本身作为集群部署需要两至三台DNS服务器进行域名解析。

负载均衡策略:
1、轮询

upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
}

2、加权轮询

upstream backserver {
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}

3、ip_hash(按访客ip的hash)
优点:动态网站session共享
缺点:必须布置在最前面能得到客户的真实ip

upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}

第三方:
4、fair(按服务器的响应时间)

#需要安装upstream_fail模块 
upstream backserver {
    server server1;
    server server2;
    fair;
}

5、url_hash
优点:提高后端缓存(squid)服务器的效率
缺点:某台服务器挂掉会导致不能访问

#需要安装nginx的hash软件包
upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

upstream配置:

  • down:表示当前的server暂时不参与负载均衡
  • backup:预留的备份服务器,当其他所有的非backup服务器出现故障或者忙的时候,才会请求backup机器
  • max_fails:允许请求失败的次数,默认是1,0表示禁止失败尝试。
  • fail_timeout:在经历了max_fails次失败后,暂停服务的时间。
  • keepalive:最大长连接数,每个worker进程与上游服务器可缓存的空闲连接(不限制总连接)的最大数量,当超出这个数量时,最近最少使用的连接将被关闭。

location配置:

  • = 精确匹配,如果找到匹配=号的内容,立即停止搜索,并立即处理请求(优先级最高)
  • ~ 区分大小写
  • ~* 不区分大小写
  • ^~ 只匹配字符串,不匹配正则表达式
  • @ 指定一个命名的location,一般用于内部重定义请求,location @name {…}

proxy_pass相关的优化参数:

  • proxy_set_header X-Forwarded-For :如果后端Web服务器上的程序需要获取用户IP,从该Header头获取。
  • proxy_set_header:当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名。
  • client_max_body_size 10m; 允许客户端请求的最大的单个文件字节数。
  • client_body_buffer_size 128k; 缓冲区代理缓冲用户端请求的最大字节数 可以理解为先保存到本地再传给用户。
  • proxy_connect_timeout 600; 跟后端服务器连接的超时时间_发起握手等候响应超时时间。
  • proxy_read_timeout 600; 连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理。
  • proxy_send_timeout 600; 后端服务器回传数据时间,就是在规定时间之内后端服务器必须传完所有的数据。
  • proxy_buffer_size 8k;代理请求缓存区,这个缓存区间会保存用户的头信息以供Nginx进行规则处理,一般只要设置能保存下头信息即可。
  • proxy_buffers 4 32k; 同上,告诉Nginx保存单个页面使用的空间大小,假设网页大小平均在32k以下的话。
  • proxy_busy_buffers_size 64k; 如果系统很忙的时候可以申请更大的proxy_buffers,官方推荐(proxy_buffers*2)。
  • proxy_max_temp_file_size 1024m; 当 proxy_buffers
    放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与proxy_cache 没有关系。大于这个值,将从upstream服务器传回。设置为0禁用。
  • proxy_temp_file_write_size 64k; proxy缓存临时文件的大小
  • proxy_temp_path(可以在编译的时候)指定写到哪那个目录。

猜你喜欢

转载自blog.csdn.net/weixin_40682142/article/details/88398892