负载均衡
KEEPALIVED安装与使用
keepalived配置说明
keepalived检测方式
keepalived LVS配置
LVS
LVS-NAT集群的搭建
LVS-DR集群的搭建
KEEPALIVED+LVS
HAproxy
HAProxy配置说明
HAproxy算法
HAProxy管理页
HAProxy保持
HAProxyACL规则
NGINX
NGINX负载均衡
NGINX负载示例二
负载转发路径问题
缓冲缓存参数详解
限制代理ip方法
负载参数详解
nginx_upstream_check_module
正向代理(HTTP)
本文档使用MrDoc发布
返回首页
-
+
NGINX负载均衡
2020年2月14日 16:40
admin
##配置: #tcp转发 stream { # 添加socket转发的代理 upstream socket_proxy { hash $remote_addr consistent; # 转发的目的地址和端口 server 192.168.31.186:22; } # 提供转发的服务,即访问localhost:9001,会跳转至代理socket_proxy指定的转发地址 server { listen 2022; #listen 2022 udp;则为udp转发 #proxy_connect_timeout 1s; #proxy_timeout 3s; proxy_pass socket_proxy; } } #http转发 http { gzip on; #启动网页压缩功能 gzip_min_length 1000; #容量小于1000B的内容不压缩 gzip_buffers 16 32k; #压缩缓存的个数与容量 gzip_types /text/plain application/xml; #指定压缩文件类型 gzip_comp_level 2; #压缩级别,1-9,数字越多,压缩效果越好,但速度越慢 client_body_buffer_size 128K; #设置客户端请求的缓存大小 client_max_body_size 100m; #设置客户端请求所允许的最大文件容量 proxy_buffering on; #启用代理缓冲功能 proxy_buffer_size 8k; #从被代理服务器(真实机)所获取的第一部分响应数据的缓存大小 proxy_buffers 8 128k; #从被代理服务器(真实机)读取响应数据的缓存个数与容量 proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=one:100m inactive=1d max_size=2G; #/var/lib/nginx/cache 为缓存目录 #levels设置子目录个数 #keys_zone定义缓存名称及容量(名称为one,容量为100mb) #inactive定义缓存的存货时间为1天 #max_size设置硬盘缓存容量为2GB upstream myproject { server 127.0.0.1:8000 weight=3; server 127.0.0.1:8001 weight=2; server 127.0.0.1:8002 weight=1; server 127.0.0.1:8003 weight=3; } server { listen 80 default_server; listen [::]:80 default_server; server_name ; root /usr/share/nginx/html; location / { proxy_pass http://myproject; #负载均衡 proxy_cache one; #代理缓存 proxy_set_header X-Forwarded-For $remote_addr; #保留用户的真实IP地址 } } } --- ##参数 fail_timeout:与max_fails结合使用。 max_fails:设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了, fail_time:服务器会被认为停机的时间长度,默认为10s。 backup:标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。 down:标记服务器永久停机了。 ##轮询方式(RR 默认) >把请求以循环的方式分布在不同应用服务器上,每个请求按照时间顺序逐一分配到不同的后端服务器,如果服务器down 掉,能自动剔除。 http { upstream bakendserver{ server server1:8080 max_fails=3 fail_timeout=3s ; server server2:8080 max_fails=3 fail_timeout=3s ; } server { listen 80; location / { proxy_pass http://backendserver; } } } ##加权轮询(weight) >指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 weight值越大,分配到的访问几率越高。 http { upstream bakendserver{ server server1:8080 max_fails=3 fail_timeout=3s weight=8; server server2:8080 max_fails=3 fail_timeout=3s weight=9; } server { listen 80; location / { proxy_pass http://backendserver; } } } ##最少连接负载均衡(least_conn) >当某些请求需要很长时间才能完成请求时,这种情况用最少连接方式来控制应用实例更公平一些。 使用最少连接方式,nginx不会过度的去请求一个比较繁忙的服务器,而且把新请求分发到一些不忙的服务器上。 >在服务器群组配置中使用least_conn指令,最少连接负载均衡就会启用: http { upstream bakendserver { least_conn; server server1:8080 max_fails=3 fail_timeout=3s ; server server2:8080 max_fails=3 fail_timeout=3s ; } server { listen 80; location / { 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_buffering off; proxy_pass http://backendserver; } } } --- ##ip_hash(保留Session) >请注意轮询和最少连接的负载均衡方案,它们客户端后续的请求可能被分发到不同的服务器上,这样就不能保证同一个客户端一直被指向到同一台服务器上。 >如果有这样一个需求,就是想把一个客户端绑定到特定的服务器上–换句话说,就是使客户端的Session有粘性和持久化始终选择特定的机器,这种情况可以使用ip_hash负载均衡方式来处理。 >使用ip_hash的情况下,客户端的IP地址会被当做一个哈希表的key来决定这个客户端的请求是由服务器群组里的哪一台服务器去处理。这种方式保证了同一个客户端,它的请求总会被指向到同一台服务器上,除非这台服务器不可用。 >配置ip-hash负载均衡,只需要在服务(upstream)群组中添加ip_hash指令即可: http { upstream bakendserver { ip_hash; server server1:8080 max_fails=3 fail_timeout=3s weight=3; server server2:8080 max_fails=3 fail_timeout=3s weight=4; } server { listen 80; location / { proxy_pass http://backendserver; } } } --- --- ##keepalive ####要设置HTTP版本为1.1才支持此功能 proxy_http_version 1.1 --- >用于控制网络连接保持功能。 >保证Nginx服务器的工作进程为服务器组打开一部分网络连接,并且将数量控制在一定的范围内。 http { upstream bakendserver { keepalive 1024; server server1:8080 max_fails=3 fail_timeout=3s weight=3; server server2:8080 max_fails=3 fail_timeout=3s weight=4; } server { listen 80; location / { proxy_pass http://backendserver; } } } ####1024为每一个工作进程允许该服务器组保持的空闲网络连接数上限值,如果超出该值,工作进程将采用最近最少使用的策略关闭网络连接。
分享到: