nginx负载均衡

nginx的负载均衡,就是把客户端过来的请求分发到各个服务端处理,减轻单一服务端处理请求的压力

最简单的负载均衡

只需要在nginx配置文件中做一些简单的配置就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
server {
listen 80;
server_name default proxy.test.com;
location / {
proxy_pass http://proxy_test;
index index.html index.htm;
}
}
upstream proxy_test {
server 127.0.0.1:5000;
server 127.0.0.1:5001;
server 127.0.0.1:5002;
}
server {
listen 5000;
server_name default proxy.test.com;
location / {
root /Users/liujia/Sites/test/proxy_test/proxy_5000;
index index.html;
}
}
server {
listen 5001;
server_name default proxy.test.com;
location / {
root /Users/liujia/Sites/test/proxy_test/proxy_5001;
index index.html;
}
}
server {
listen 5002;
server_name default proxy.test.com;
location / {
root /Users/liujia/Sites/test/proxy_test/proxy_5002;
index index.html;
}
}

建立对应目录和文件,index.html文件内容最好不一样,才能观察到应有的效果。
hosts文件中配置好proxy.test.com之后 ,重启nginx,在浏览器访问proxy.test.com会发现,会无规律的出现上面不同的页面,这样就实现了最简单的,通过nginx配置实现负载均衡。

但是这样乱跳的话,很可能出现会话无法维持的情况,解决方案,一种是使用公共的session,比较好的方案就是使用缓存来存储;另外一种就是,根据一定的规则,让同一客户端的的请求,都走相同的服务端处理,这样session就可以各自管各字的,这种需要使用到hash key或者通过ip_hash来实现。

1
2
3
4
5
6
upstream proxy_test {
ip_hash;
server 127.0.0.1:5000;
server 127.0.0.1:5001 down;
server 127.0.0.1:5002;
}

如果某台服务器需要临时关闭一段时间,可以将该机器后面标记为down.

坚持原创技术分享,您的支持将鼓励我继续创作!