nginx配置负载均衡以及负载均衡的策略的选取(linux)

硅谷探秘者 1337 0 0

nginx配置负载均衡以及负载均衡的策略的选取(linux)

一、nginx配置负载均衡

安装nginx,修改conf/nginx.conf配置文件

http块下添加

    #配置动态服务器列表
    upstream test.com { 
		server localhost:8080 weight=1; #tomcat1 的ip和端口 
		server localhost:8081 weight=1; #tomcat2 的ip和端口 
    }

location块下添加

	    #设置代理
	    proxy_pass   http://test.com;

完整的配置文件

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    #配置动态服务器列表
    upstream test.com { 
		server localhost:8080 weight=1; #tomcat1 的ip和端口 
		server localhost:8081 weight=1; #tomcat2 的ip和端口 
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
	    	#设置代理
	    	proxy_pass   http://test.com;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

上述代码去除了注释的部分

测试的时候开启了两个tomcat,一个8080端口一个8081端口

8080服务器和8081服务器实现负载均衡

刷新

二、nginx负载均衡策略

轮询 默认方式
weight 权重方式
ip_hash 依据ip分配方式
least_conn 最少连接方式
fair(第三方) 响应时间方式
url_hash(第三方) 依据URL分配方式
轮询

        它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。例如有两台服务器A,B,则按照请求的顺序 第一次转发给A,第二此转发给B,第三次转发给A,第四次转发给B,…以此类推。

参数:

fail_timeout 与max_fails结合使用。
max_fails 设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,
fail_time 服务器会被认为停机的时间长度,默认为10s。
backup 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
down 标记服务器永久停机了。
  1.  缺省配置就是轮询策略。
  2. 在轮询中,如果服务器down掉了,会自动剔除该服务器。
Weight

        权重方式,在轮询策略的基础上指定轮询的几率。例子如下:

upstream test.com { 
		server localhost:8080 weight=2; #tomcat1 的ip和端口 
		server localhost:8081;		#tomcat2 的ip和端口 
}

        weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比,比如8080被访问的几率为8081服务器的两倍。

  1. 权重越高分配到需要处理的请求越多。
  2. 此策略可以与least_conn和ip_hash结合使用。
  3. 此策略比较适合服务器的硬件配置差别比较大的情况。
ip_hash 

        指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。 

upstream test.com { 
	    ip_hash;    #保证每个访客固定访问一个后端服务器
		server localhost:8080 weight=2; #tomcat1 的ip和端口 
		server localhost:8081;		#tomcat2 的ip和端口 
}
  1. 在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
  2. ip_hash不能与backup同时使用。
  3. 此策略适合有状态服务,比如session。
  4. 当有服务器需要剔除,必须手动down掉。
least_conn 

        把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

upstream test.com { 
	    least_conn;    #把请求转发给连接数较少的后端服务器
		server localhost:8080 weight=2; #tomcat1 的ip和端口 
		server localhost:8081;		#tomcat2 的ip和端口
		server localhost:8082 backup;  #tomcat3 的ip和端口
}
  1.  此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。

三、第三方策略 

        第三方的负载均衡策略的实现需要安装第三方插件。

fair

        按照服务器端的响应时间来分配请求,响应时间短的优先分配。

upstream test.com { 
		server localhost:8080;  #tomcat1 的ip和端口 
		server localhost:8081;		#tomcat2 的ip和端口 
		fair; #实现响应时间短的优先分配
}
 url_hash

        按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

upstream test.com { 
	    hash $request_uri;    #实现每个url定向到同一个后端服务器
		server localhost:8080;  #tomcat1 的ip和端口 
		server localhost:8081;		#tomcat2 的ip和端口 
}

 


评论区
请写下您的评论...
暂无评论...
猜你喜欢
框架 3400 ribbon默认是轮询,会进行无差别。ribbon有七种模式RoundRobinRule:默认规则,通过简单轮询服务列表来择服务器
rabbitmq,haproxy 538 力,实现。HAProxy简介HA-HighAvailable高可用,Proxy-代理。HAProxy是一款提供高可用性、基于TCP(第四层)和HTTP(第七层)应用代理软件,支持虚
keepalived,nginx,linux 1246 LVS软件设计,用来管理并监控LVS集群系统中各个服务节点状态,后来又加入了可实现高可用VRRP(VirtualRouterRedundancyProtocol,虚拟路由器冗余协议)功
nginx 1050 [root@localhostnginx-1.13.7]#mkdir/usr/local/nginx三、编译和安装编译之前要设常量,安装目录等[root@localhostnginx-1.13.7
weblog 1522 layuitable表格单事件监听中数据获表格设table.render({ elem:'#test' ,url:'[[@{/smmc/artificial}]]'+'?xsId
linux 802 /sda11014M141M874M14%/boottmpfs100M0100M0%/run/user/0三、添加磁盘,演示分区和挂添加一个硬盘sdb,演示分区和挂在虚拟机设中点击添加,择硬盘重启,查看添加
linux系统 1773 .下nginxtar包[root@localhost~]#mkdir/usr/local/nginx[root@localhost~]#cd/usr/local/nginx[root@localho
linux系统 6136 方案一:一般方案二:访问某个域名时代理静态资源文件方案一:一般  如果html、htm、gif、jpg、jpeg、bmp、png、ico、txt、js、css结尾资源,nginx处理
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。