nginx负载均衡初实践

负载均衡是为了将请求分流,避免过多的请求连接大量涌进一台服务器,导致服务器压力过大,致使服务器响应缓慢甚至宕机。使用负载均衡可以使得多个服务器共同分担压力,降低单台服务器压力,加快响应速度。
负载均衡的高明之处在于对用户而言,完全意识不到自己访问的不是一个服务器,而是服务器集群,这样即使一台机器出现问题无法访问,用户仍然可以从其它机器访问到想访问的内容。

负载均衡策略

nginx 负载均衡策略分为内置策略和扩展策略。下面举些列子。
内置策略:
ip_hash: 用户第一次访问的是哪台服务器,之后访问就会固定访问这台服务器,避免每次都要重新登录
backup: 备份,其它服务器没法访问时访问这台服务器
down: 不参与负载均衡的服务器
weight: 权重,权重越大,被访问到的可能性越大,比如三台服务器权重分别为2,3,5,那么被访问到的概率就为20%, 30%, 50%
扩展策略:
fair: 使用响应时间快的那台服务器
……
其它策略可以在网上搜索了解下。

安装nginx

ubuntu 安装

1
sudo apt install nginx

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream lb_test {

server 127.0.0.1:3000 weight=2;

server 127.0.0.1:3001 weight=5;
}


server {

listen 8080;

location / {

proxy_pass http://lb_test/;

}

}

我们在一台机器上搭建环境来测试下 nginx 负载均衡。
首先使用 upstream 进行负载均衡配置,这里配置了 3000和3001 两个服务(可理解为两个服务器)
然后我们在 3000 和 3001 端口启动两个服务,页面内容为server1, server2。
之后我们访问 8080 端口时会出现 server1, server2 随机出现的情况,由于3001(server2)的权重更大,所以 server2 出现的频率更高。
下面修改下配置,加入 ip_hash

1
2
3
4
5
6
upstream lb_test {

server 127.0.0.1:3000 weight=2;

server 127.0.0.1:3001 weight=5;
}

重启 nginx 服务,再次访问 8080,会发现一直显示一个服务的内容(server1 或者 server2, 由第一次访问时看到的内容决定);