nginx负载均衡初实践
负载均衡是为了将请求分流,避免过多的请求连接大量涌进一台服务器,导致服务器压力过大,致使服务器响应缓慢甚至宕机。使用负载均衡可以使得多个服务器共同分担压力,降低单台服务器压力,加快响应速度。
负载均衡的高明之处在于对用户而言,完全意识不到自己访问的不是一个服务器,而是服务器集群,这样即使一台机器出现问题无法访问,用户仍然可以从其它机器访问到想访问的内容。
负载均衡策略
nginx 负载均衡策略分为内置策略和扩展策略。下面举些列子。
内置策略:
ip_hash: 用户第一次访问的是哪台服务器,之后访问就会固定访问这台服务器,避免每次都要重新登录
backup: 备份,其它服务器没法访问时访问这台服务器
down: 不参与负载均衡的服务器
weight: 权重,权重越大,被访问到的可能性越大,比如三台服务器权重分别为2,3,5,那么被访问到的概率就为20%, 30%, 50%
扩展策略:
fair: 使用响应时间快的那台服务器
……
其它策略可以在网上搜索了解下。
安装nginx
ubuntu 安装
1 | sudo apt install nginx |
配置
1 | upstream lb_test { |
我们在一台机器上搭建环境来测试下 nginx 负载均衡。
首先使用 upstream 进行负载均衡配置,这里配置了 3000和3001 两个服务(可理解为两个服务器)
然后我们在 3000 和 3001 端口启动两个服务,页面内容为server1, server2。
之后我们访问 8080 端口时会出现 server1, server2 随机出现的情况,由于3001(server2)的权重更大,所以 server2 出现的频率更高。
下面修改下配置,加入 ip_hash
1 | upstream lb_test { |
重启 nginx 服务,再次访问 8080,会发现一直显示一个服务的内容(server1 或者 server2, 由第一次访问时看到的内容决定);