一,问题
昨天大概学习了Nginx的一些安装以及基本用法,现在再总结一下负载均衡的基本实现。
二,解决方案
2.1 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;
}