5.Nginx-upstream负载均衡

upstream负载均衡

语法规则

upstream *name* { … }

Default:——
Context:http

定义一组服务器。服务器可以侦听不同的端口(可以混合侦听TCP和UNIX域套接字的服务器)

http{
    # backend是虚拟服务的名字,可自行定义
    upstream backend {
        server backend1.example.com weight=5;
        server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;
        server backup1.example.com  backup;
	}
    server {
        listen 80;
        server_name dh
        
        location / {
            # 这里的proxy_pass的http://后面的部分要配置成 upstream的服务名称
        	proxy_pass http://dh;
    	}
    }
    
    upstream dh {
        server localhost:8088;
        server localhost:8089;
    }
}

服务器在负载均衡调度的状态

调度状态状态解析
down当前的server暂时不参与负载均衡
backup预留的备份服务器
max_fails允许请求失败的次数
fail_timeout经过max_fails的失败次数后,服务暂停的时间
max_conns限制最大的接收的连接数
upstream dh {
    # 负载均衡不会分配到 dh1.com 这台机子
    server dh1.com down;
    # 预留备份即其他参与负载均衡的机子都提供不了服务的时候
    # 预留的机子就会顶上,由预留机子提供服务直到其他机子其中一个恢复
    # 当其他提供服务的机子恢复后,该机子会自动变回预留状态,从而由其他机子提供服务
    server dh2.com backup;
    # 表示允许失败的次数是10次,十次调用失败后,需要等待30s再重新检查该机子
    server dh3.com max_fails=10 fail_timeout=30s;
    server dh4.com max_conns=1000;
}

调度算法

算法名称算法原理
轮询按时间顺序逐一分配到不同的后端服务器
加权轮询weight值越大,分配到的访问几率越高
ip_hash每个请求按访问IP的hash结果分配,这样来自同一个IP的请求将会固定访问一个后端服务器
url_hash按照访问URL的hash结果来分配请求,这样每个URL定向到同一个后端服务器
least_conn最少连接数,哪个机器的连接数少就分发给哪个机器
hash关键数值hash自定义的key来分发请求
# 加权方式(weight默认是1)
upstream dh {
    server dh1.com down weight=8;
    server dh2.com backup weight=6;
    server dh3.com max_fails=10 fail_timeout=30s weight=1;
}

# ip_hash方式
upstream dh {
    ip_hash;
    
    server dh1.com down;
    server dh2.com backup;
    server dh3.com max_fails=10 fail_timeout=30s;
}

# url_hash方式 (其实也就是采用了hash 关键字的形式)
upstream dh {
    hash $request_uri;
    
    server dh1.com down;
    server dh2.com backup;
    server dh3.com max_fails=10 fail_timeout=30s;
}

#  least_conn方式
# 指定组应使用负载平衡方法,其中请求以最少数量的活动连接传递给服务器
#同时考虑服务器的权重。如果有多个这样的服务器,则使用加权循环平衡方法依次尝试它们
upstream dh {
    least_conn;
    
    server dh1.com down;
    server dh2.com backup;
    server dh3.com max_fails=10 fail_timeout=30s;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值