美文网首页
Nginx常见使用场景-负载均衡服务(六)

Nginx常见使用场景-负载均衡服务(六)

作者: andpy | 来源:发表于2018-05-25 09:07 被阅读15次

nginx 负载均衡服务

实现的原理使用的是 proxy_pass,nginx将不同的服务转发到服务池当中。

//语法
Syntax:upstream name {...}
Default:-
Context:http

在目标服务器配置三个不同server表示不同的服务

//server1
server{
    listen 8001;
    ...
    location / {
        root /opt/app/code1;
        index index.html index.htm;
    }
}

//server2
server{
    listen 8002;
    ...
    location / {
        root /opt/app/code2;
        index index.html index.htm;
    }

}

//server3
server{
    listen 8003;
    ...
    location / {
        root /opt/app/code3;
        index index.html index.htm;
    }
}

在代理服务器配置 upsteram.conf

//后面的名字是自定义的,在proxy_pass配置
upstream imooc{
    server 192.168.9.1:8001;
    server 192.168.9.1:8002;
    server 192.168.9.1:8003 ;
}
server {
    listen 80;
    server_name www.applelife.xyz;
    ...
    location /{
        #配置上面的名称 imocc
        proxy_pass http://imocc;
        #proxy_params 为共同参数配置文件
        include proxy_params;
    }
}

启动之后,浏览验证查看,访问代理服务器,默认服务请求是轮询的操作查看

在目标服务器上停止掉一个服务验证:利用iptables

//命令 不对外提供8002的端口的服务
iptables -I INPUT -p tcp --dport 8002 -j DROP

upstream举例

//支持ip域名的方式
upstream backend{
    #weight表示权重,在轮询当中比重
    server backend1.example.com weight =5;
    server backend2.exxample.com:8080;
    #socket方式
    server unix:/tmp/backend3;
    
    #backup表示是一个备份的节点
    server backup1.example.com:8080 backup;
    server backup2.example.com:8080 backup;
}

后端服务器在负载均衡调度中的状态参数介绍

#当前的server暂时不参与负载均衡
down
#预留的备份服务器
backup
#允许请求失败的次数
max_fails
#经过max_fails失败后,服务暂停的时间,默认10秒
fail_timeout
#限制最大的接收的连接数
max_conns

//示例
upstream applelife {
    #不进行服务 server1
    server 192.168.9.1:8001 down;
    #备份服务 server2
    server 192.168.9.1:8002 backup;
    #允许请求失败次数 server3
    server 192.168.9.1:8003 max_fails=1 fail_timeout=10s;
}

在验证的时候,发现只会出现server3 在目标服务器上停止掉一个服务验证:利用iptables

//命令 不对外提供8003的端口的服务
iptables -I INPUT -p tcp --dport 8003 -j DROP

停掉 8003服务之后,之后就会启动8002备份服务了

//关闭 iptables
iptables -F

调度算法方式

  • 轮询 按照时间的顺序逐一分配到不同的后端服务器
  • 加权轮询 weight值越大 ,分配到的访问的机率越高
  • ip_hash 每个请求的按访问ip的hash结果分配,这样来自同一个ip的固定访问一个后端服务器(代理不能访问的客户端的ip)
  • url_hash 按照访问的url的hash结果来分配请求,是每个url定向到同一个后端服务器
  • least_conn 最少的链接数,那个机器连接数少就分发
  • hash关键数值 hash自定义的key
//iphash方式
upstream applelife {
    ip_hash;
    # server1
    server 192.168.9.1:8001;
    # server2
    server 192.168.9.1:8002;
    # server3
    server 192.168.9.1:8003;
}

hash关键数值

//语法 这个是在版本1.7.2出现的
Syntax:hash key [consistent];
Default:-
Context:upstream

//示例
upstream applelife {
    #request_uri请求参数 不包括域名的部分
    hash $request_uri;
    # server1
    server 192.168.9.1:8001;
    # server2
    server 192.168.9.1:8002;
    # server3
    server 192.168.9.1:8003;
}

相关文章

网友评论

      本文标题:Nginx常见使用场景-负载均衡服务(六)

      本文链接:https://www.haomeiwen.com/subject/cbhyjftx.html