- 什么是反向代理和负载均衡
反向代理:先来说说什么是正向代理。A通过服务器B访问服务器C。正向代理的一个明确的特点就是我们知道要访问哪个服务器。但是如果服务器C是一个集群,由服务器B决定到底访问集群C上的哪台机器,则服务器B就成了一个反向代理服务器了。
负载均衡:对于一个集群,怎么样让集群中的每台机器都均衡的处理请求,这个也是反向代理服务器做的事。一般是让集群中压力相对较小的服务器处理新的请求。
- Nginx覆盖均衡的实现
Nginx通过反向代理实现负载均衡
使用Nginx服务器实现负载均衡的时候,用户首先访问到Nginx服务器,然后Nginx服务器从服务器集群表中选择压力较小的服务器,然后将访问引向该服务器。
如果集群中的某个服务器崩溃,那么从待选服务器列表中删除该服务器,Ngnix就肯定不会讲请求引入该服务器了。
user nobody;
# 开启的Nginx进程数 一般设置为1就够了 现在为了测试负载均衡才设置4个
worker_process 4;
# 设置并发数
events{
# 最大并发数
worker_connections 1024;
}
# http请求配置
http{
# 设置服务器列表,也就是待负载均衡的服务器列表 myproject 是服务器列表名
upstream myproject{
# 百度
server 111.13.100.91:80;
# 京东
server 211.151.106.27:80;
# 淘宝
server 120.209.137.218:80;
}
# 监听的端口与目录
server{
listen 8080;
# 做负载均衡的目录
location / {
proxy_pass http://myproject;
}
}
}
在浏览器上输入 http://127.0.0.1:8080 就能够根据实际负载情况,访问百度、京东、淘宝了
疑问:集群中如何共享session?或者说一个用户一次就是只访问一台服务器,除非退出,否则所有请求都在一个台服务器上
- HTTP Upstream模块
什么是HTTP Upstream模块:是Nginx服务器中一个重要模块,实现在轮训和客户端ip之间实现后端的负载均衡,常用命令:ip_hash、server、upstream
ip_hash:如果用户A的请求已经给服务器B处理了,那么接下来他的所有请求也都会给服务器B
- 其他负载均衡的方法