Nginx负载均衡的实现

一,问题

昨天大概学习了Nginx的一些安装以及基本用法,现在再总结一下负载均衡的基本实现。

二,解决方案

2.1 nginx的主要功能解释

负载均衡:将用户请求分发到不同的服务器去处理,不用所有的用户请求都只请求单一服务器。一般在服务器那边会做一个集群。
反向代理:在用户的角度上来看,用户是访问代理服务器(nginx)来获取数据的,所以用户并不知道真正提供数据的是nginx后的哪一个后端服务器。

Nginx负载均衡的实现

2.2 nginx负载均衡的基础配置

 
worker_processes  2;
   
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
  
    sendfile        on; 
    keepalive_timeout  65;
	
	#后端服务器组
    upstream demoServer{ 
		#负载均衡的方式:轮询(默认)、ip_hash、权重
		ip_hash;
		server 192.168.152.152:80;
        server 172.128.154.151:80; 
    } 
	
    server {
			#nginx监听的端口号
			listen       80;
			#ngxin所在服务器的Ip地址
			server_name  192.168.65.33; 	
			
			location / {
				#在用户的响应头中添加实际访问的后端服务器的Ip地址。
				#add_header backendIP $upstream_addr;
				#add_header backendCode $upstream_status;
				
				#指定一个后端服务器组去处理该请求
				proxy_pass http://demoServer;
			} 
			
			error_page   500 502 503 504  /50x.html;
			
			location = /50x.html {
				root   html;
			}

     }  
}  

2.3 负载均衡的方式

①轮询(默认)

upstream demoServer{ 
		#负载均衡的方式:轮询(默认)
		server 192.168.152.152:80;
        server 172.128.154.151:80; 
    } 

②ip_hash

upstream demoServer{ 
		#负载均衡的方式:Ip地址 ip_hash
		ip_hash;
		server 192.168.152.152:80;
        server 172.128.154.151:80; 
    } 

③weight

upstream demoServer{ 
		#负载均衡的方式:权重  weight
		server 192.168.152.152:80  weight=2;
        server 172.128.154.151:80  weight=8;  
    } 

④fair(第三方,需要另外安装)

upstream demoServer{ 
		#负载均衡的方式:后端服务器的响应时间来分配请求,响应时间短的优先分配。
		#fair(第三方) 
		fair;
		server 192.168.152.152:80;
        server 172.128.154.151:80; 
    } 

⑤url_hash

upstream demoServer{ 
		#负载均衡的方式:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器
		#url_hash
		hash $request_uri;
		server 192.168.152.152:80;
        server 172.128.154.151:80; 
    }