Nginx负载均衡配置

文章目录

  • Nginx负载均衡配置
    • 1. 简单的配置实例
    • 2. 详解
      • 2-1 项目实际应用案例
        • 2-1-1 启动两个后端服务
        • 2-1-2 nginx.conf进行配置
        • 2-1-3 重新启动Nginx,访问localhost:80,会轮询访问8081和8082服务器
      • 2-2 负载均衡配置说明
      • 2-3 其他负载均衡配置策略

Nginx负载均衡配置

1. 简单的配置实例

# 修改nginx.cof配置文件:
# 		1. 创建一个upstream配置项,和server同级别, 下方的名称tomcats可自定义
	upstream tomcats {
        server 127.0.0.1:8081 weight=2;
        server 127.0.0.1:8082 weight=2;

		# 说明:backup标识 -- 视作备份服务器,默认处于待命状态不工作,
		#					  当上方8081和8082两台服务器挂了,8083会开启工作、
		# 					  当主服务器[8081/8082]任一台恢复工作时,备份服务器恢复待命状态
        server 127.0.0.1:8083 backup;
    }
# 		2. server配置项中,新增个location
	listen       8080;
    server_name  localhost;
	location / {
            root   html;
	    	proxy_pass http://tomcats;  # 这里便指向了上方的负载均衡集群tomcats 
            index  index.html index.htm;
        }
# 3. 这样访问 localhost:8080时,就会轮询访问上方tomcats中的8081/8082两个服务器了

2. 详解

2-1 项目实际应用案例

2-1-1 启动两个后端服务

// 这里准备了两个springboot工程,编写2个测试的后端接口,以端口号区分
// 		后端服务1 ,端口8082
@RestController
@RequestMapping("/api")
public class NginxController1 {
    @GetMapping
    public String test1(){
        return "success test1 8082";
    }
}

// 		后端服务2 ,端口8081
@RestController
@RequestMapping("/api")
public class NginxController1 {
    @GetMapping
    public String test1(){
        return "success test1 8081";
    }
}

2-1-2 nginx.conf进行配置

# 1)在server配置项中添加一个location,并且配置 proxy_pass
 location / {
             #转发到负载服务上
            proxy_pass http://webservers/api/; 	# webservers为下方配置的集群名称
 }

# 2)配置upstream集群,名称为webservers, 指向多个后端服务
upstream webservers{
      server  192.168.9.134:8081;
      server  192.168.9.134:8082;
}

完整的配置如下,仅供参考:

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream webservers{
      server  192.168.9.134:8081 weight=8;
      server  192.168.9.134:8082 weight=2;
   }
 
    server {
        listen       80;
        server_name  localhost;
        #location / {
          #   root   html;
          #  index  index.html index.htm;
        #}

        location / {
            #转发到负载服务上
            proxy_pass http://webservers/api/;
         }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2-1-3 重新启动Nginx,访问localhost:80,会轮询访问8081和8082服务器

Nginx负载均衡配置_第1张图片

2-2 负载均衡配置说明

默认情况下,直接按照上面的配置后,
	如果后端有多个服务,采用的是轮询策略;
常用的可选配置包括:
	weight 	==> 多台服务时,供配置权重值,权重高的服务将会优先被访问
	down 	==> 某个服务配置down之后,这台服务将不会被访问
	backup  ==> 配置这个参数后,除非其他的服务都挂掉了,否则这台服务将不会被访问到
以 weight 为例做简单的说明,在上面的配置中,补充weight参数
upstream webservers{
      server  192.168.9.134:8081 weight=8;
      server  192.168.9.134:8082 weight=2;
   }
重新加载配置,按照上面的测试步骤再次刷新页面,
	这时候可以发现,8081服务将会被更多的访问到;   

2-3 其他负载均衡配置策略

# 1. ip_hash
# 		每个请求按访问IP的hash结果进行分配,
#		这样每个访客就可以固定访问一个后端服务,一定程度上可以解决session问题;
upstream webservers {
	<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> 
	ip_hash; 
	server 192.168.9.134:8081; 
	server 192.168.9.134:8082;
}

# 2. weight
#		weight代表权重,默认为1,权重越高,被分配的客户端请求就会越多
 upstream webservers{
      server  192.168.9.134:8081 weight=8;
      server  192.168.9.134:8082 weight=2;
   }

# 3. fair(第三方)
# 		按后端服务器的响应时间来分配请求,响应时间短的将会被优先分配
upstream webservers{
    	server 192.168.9.134:8081;
        server 192.168.9.134:8082;
        fair;
}

# 4. url_hash 
#		按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,
#		主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。
#		使用这种策略,可以节省缓存空间,提高缓存命中率
upstream webservers{
	hash &request_uri;
	server 192.168.9.134:8081;
	server 192.168.9.134:8082;
}

# 5. least_conn
#		按节点连接数分配,把请求优先分配给连接数少的节点。
#		该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。
upstream webservers{
    least_conn;
    server 192.168.9.134:8081;
    server 192.168.9.134:8082;
}

# 以上不同的负载均衡策略均有各自不同的使用场景,请结合自身的实际情况进行合理的选择,
#		同时,各自配置策略在实际使用的时候也不是孤立的,比如最小连接数可以搭配权重数一起使用

你可能感兴趣的:(Nginx相关,nginx,负载均衡,服务器)