# 7. Nginx 负载均衡
Nginx 负载均衡策略:
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
weight 权重 weight 代表权重默认为 1,权重越高被分配的客户端越多。
ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash(第三方)
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个(对应的)后端服务器,后端服务器为缓存时比较有效。
# 7.1 需求
- 浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080 和 8081 端口中
# 7.2 准备工作
停止前面的所有 tomcat 服务器
ps -ef | grep tomcat kill -9 端口号
修改 tomcat8081 下面的 vod 目录为 edu
cd ~/tomcat/tomcat8081/apache-tomcat-9.0.50/webapps/ mv vod/ edu/
重启两台 tomcat
# 进入每个 tomcat 目录下的 bin 目录 ./startup.sh
# 7.3 负载均衡
进入 nginx 配置文件目录
cd /usr/local/nginx/conf
编辑配置文件
vim nginx.conf
内容如下
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #负载均衡实例 upstream myserver { #服务器列表 server 172.16.58.200:8080; server 172.16.58.200:8081; } server { listen 80; server_name 172.16.58.200; #localhost 改成 ip 地址 #配置转发 location / { root html; proxy_pass http://myserver; #配置负载均衡实例 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
权重:
#负载均衡实例 upstream myserver { #服务器列表 server 172.16.58.200:8080 weight=3; server 172.16.58.200:8081 weight=7; }
ip_hash:
#负载均衡实例 upstream myserver { ip_hash; server 172.16.58.200:8080; server 172.16.58.200:8081; }
fair:
#负载均衡实例 upstream myserver { server 172.16.58.200:8080; server 172.16.58.200:8081; fair; }
url_hash:
#负载均衡实例 upstream myserver { server 172.16.58.200:8080; server 172.16.58.200:8081; hash $request_uri; hash_method crc32; }
重启 nginx
/usr/local/nginx/sbin/nginx -s reload
# 7.4 验证
访问 http://172.16.58.200/edu/a.html,会发现一会儿是 8080 一会儿是 8081,负载均衡成功。