nginx在windows下的使用三

一、负载均衡

nginx负载均衡的定义:客户端访问nginx服务器,nginx通过反向代理,将请求转发到了n台机器。将客户端访问的100个请求分别转发到5台server上,均衡的将这些请求平分到5台机器,每台机器接受20个请求。
负载(请求、工作任务)、均衡(算法、中间件)
 
1、实验验证负载均衡
目的:
1.通过浏览器多次访问一个地址:http://localhost:9001/load-balance/
2.nginx接收上面的请求,并进行转发。这些请求的响应来自两台不同的服务器,2台tomcat,端口分别为8080,8081。浏览器上页面响应的内容分别为8080和8081.
 
tomcat准备:
1.准备两台tomcat,端口号分别是8080和8081.
2.配置webapps/load-balance/index.html :  然后将两台tomcat启动起来。
 
nginx.conf配置:
http {
    include       mime.types;
    default_type  application/octet-stream;
	
	#server list
	upstream myServers {
		server localhost:8080;
		server localhost:8081;
	}

    server {
        listen       9001;
        server_name  localhost;

        location ~ /load-balance/ {
			proxy_pass http://myServers;
        }
	}
}
解释:
做负载均衡是要将多个请求通过nginx分发到后面的多台server上,所以将所有的tomcat server服务器地址写到配置文件里。
upstream:给我们提供最终服务的,上游,里面定义了多个server。
server: 再定义虚拟主机监听ip和端口。location配置匹配url规则。

测试:浏览器访问http://localhost:9001/load-balance/,刷新多次,可以看到页面上分别显示为8080、8081,测试OK。

 

 

 

二、负载均衡算法

1.Round Robin 轮询。把请求平均分配到server列表,加上server权重的考虑。这个方法是默认的,如果upstream中什么都不写,默认就是轮询的。
2.Least Connections 最小连接数。比如后端有两台服务器1,2,1的连接只有2个,2的连接有20个,那么就优先分配到1号服务器。server的权重也放在考虑当中。
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}
3.IP Hash 根据客户端ip地址计算一个hash值,不论是ipv4还是ipv6地址都被用于计算hash值。这个方法保证了第一次请求到哪台机器上,后面就一直由该台机器接收请求,除非该机器不可用了。
upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}
如果有一些服务需要临时性的从负载均衡循环移除的话,可以用down参数标记,以便保留当前客户端ip地址的hash值。这个服务标记为down了,请求根据hash找不到对应的server了,请求会自动发给这个组里的下一台server。
#server list
upstream myServers {
    ip_hash;
    server localhost:8080 down;
    server localhost:8081;
}
刚开始使用ip_hash的时候,浏览器访问http://localhost:9001/load-balance/ 访问的还是8080。把8080后面标记为down时,再刷新浏览器,就显示为8081了。
 
 
4.Generic Hash: 请求发给哪个服务器取决于一个用户自定义的key计算出的hash值,这个key可以是字符串,变量,或组合。比如使用URI。
#server list
upstream myServers {
    hash $request_uri consistent;
    server localhost:8080;
    server localhost:8081;
}
hash $request_uri consistent: 用request_uri这个参数通过consistent标记的算法来生成一个hash值。
 
5.Random 随机的负载均衡,每个请求将派给一个随机选择的server。如果有two参数,分两步:1.nginx将随机的选取两个server(如果有权重的话,server的权重也考虑在内)。2.再在这里两个里面通过后面给定的方法指定一个。
#server list
upstream myServers {
    random two least_conn;
    server localhost:8080;
    server localhost:8081;
}
  
 
 
 
 
三、server权重   
给sever指令加weight参数来设置服务器的权重,默认值是1。
upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
    server 192.0.0.1 backup;
}
上面的例子中,In the example, backend1.example.com has weight 5; the other two servers have the default weight (1), but the one with IP address 192.0.0.1 is marked as a backup server and does not receive requests unless both of the other servers are unavailable. With this configuration of weights, out of every 6 requests, 5 are sent to backend1.example.com and 1 to backend2.example.com.
 
#server list
    upstream myServers {
    server localhost:8080 weight=2;
    server localhost:8081 weight=8;
}
 
 
 

 

 

---

posted on 2024-03-05 21:29  有点懒惰的大青年  阅读(12)  评论(0编辑  收藏  举报