网站首页 文章专栏 nginx均衡负载
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为热备,轮询,加权轮询,ip_hash。扩展策略,非常多,根据实际需求选择,一般内置的够用
1>.热备
如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB.....
upstream mysvr { server 127.0.0.1:6379; server 192.168.1.1:6379 backup; #热备 }
2>.轮询
nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....
upstream mysvr { server 127.0.0.1:6379; server 192.168.1.1:6379; }
3>.加权轮询 轮询的扩展
跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB....
upstream mysvr { server 127.0.0.1:6379 weight=1; server 192.168.1.1:6379 weight=2;; }
4.>ip_hash
nginx会让相同的客户端ip请求相同的服务器。
upstream mysvr { server 127.0.0.1:6379; server 192.168.1.1:6379; ip_hash; }
推荐常用:
upstream mysvr { server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2; server 192.168.10.121:3333 weight=1 max_fails=2 fail_timeout=1; }
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
均衡负载一般在入口机配合配合反向代理使用
eg:
upstream www.hebinghua.com { server 192.168.1.2:80 weight=2 max_fails=1 fail_timeout=5s; server 192.168.1.3:80 weight=1 max_fails=1 fail_timeout=5s; #每3秒检查一次,连续2次成功判断正常,连续5次失败判断宕机,超时时间1秒,检查方式为http check interval=3000 rise=2 fall=5 timeout=1000 type=http; #检查时发送的http数据 加入长链接 check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\nHost: www.hebinghua.com\r\n\r\n"; #判断后端真实服务器是否健康的指标的状态码 check_http_expect_alive http_2xx http_3xx; keepalive 50; } server { listen 80; server_name www.hebinghua.com; access_log /data/logs/nginx/www.hebinghua.com.access.log json; error_log /data/logs/nginx/www.hebinghua.com.error.log warn; location ~* \.(zip|rar|7z|tar|gz|bz|cab|sh|gzip|tgz|exe|aspx|jsp)$ { return 404; } #代理转发 location / { proxy_next_upstream error timeout http_503 http_502 http_504 invalid_header; proxy_pass http://www.hebinghua.com; proxy_set_header Host $host; proxy_set_header REMOTE-HOST $remote_addr; client_max_body_size 20m; client_body_buffer_size 128k; proxy_ignore_client_abort on; proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; proxy_buffer_size 64k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_intercept_errors off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
转载请注明出处