初识Nginx五:Nginx的负载均衡策略
原创
©著作权归作者所有:来自51CTO博客作者zhuhuix的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
一、背景
二、负载均衡策略
- 轮询(默认):每个请求按时间先后顺序分配到不同的后端服务器;如果后端服务器宕机 ,Nginx能自动排除。
示例如下:
# 轮询
http{
upstream backend {
server srv1.backend.com;
server srv2.backend.com;
server srv3.backend.com;
}
server {
listen 80;
location / {
proxy_pass http://backend ;
}
}
}
- IP 哈希:每个请求按访问 ip 的 hash结果分配,使得每个客户端可以固定访问一个后端服务器,这可以解决会话持久性的问题。
示例如下:
# IP 哈希
http{
upstream backend {
ip_hash;
server srv1.backend.com;
server srv2.backend.com;
server srv3.backend.com;
}
server {
listen 80;
location / {
proxy_pass http://backend ;
}
}
}
- 最少连接:下一个请求将被分派到活动连接数量最少的服务器;不会把过多的请求来使忙碌的应用程序服务器超负荷运行,而是将新的请求分发到不太忙的服务器。
示例如下:
# 最少连接
http{
upstream backend {
least_conn;
server srv1.backend.com;
server srv2.backend.com;
server srv3.backend.com;
}
server {
listen 80;
location / {
proxy_pass http://backend ;
}
}
}
三、参数
- 加权系数:在使用轮询负载均衡策略的时候, 通过服务器进行的请求分配或多或少概率是相等的; 当为服务器的配置指定权重参数时,权重将会作为负载均衡决策的一部分进行计算,即权重越大的服务器将被分配更多的请求访问。
示例如下:
# 轮询 & 加权系数
http{
upstream backend {
server srv1.backend.com weight=5; # 为此服务器增加权重
server srv2.backend.com;
server srv3.backend.com;
}
server {
listen 80;
location / {
proxy_pass http://backend ;
}
}
}
- 健康检查参数: 根据健康参数设置值,如果特定服务器的响应失败并出现错误, nginx则会把这台服务器标记为失效,并会尝试在一段时间内避免后续入站的请求选择此服务器
健康检查参数参数
| 说明
|
max_fails
| 允许请求失败的次数
|
fail_timeout
| 允许请求失败的次数达到后,服务器暂停转发的时间
|
示例如下:
# 健康检查
http{
upstream backend {
server srv1.backend.com max_fails=3 fail_timeout=30s ;
server srv2.backend.com max_fails=3 fail_timeout=30s ;
server srv3.backend.com max_fails=3 fail_timeout=30s ;
}
server {
listen 80;
location / {
proxy_pass http://backend ;
}
}
}