#代理模式
l 正向代理
反向代理
透明代理
Nginx负载均衡
轮询法(默认)
• 将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载
l 加权轮询法(weight )
• 不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同
• 给配置高、负载低的机器配置更高的权重,让其处理更多的请求
• 配置低、负载高的机器,给其分配较低的权重,降低其系统负载
• 加权轮询能很好地将请求顺序且按照权重分配到后端
• weight的值越大分配到的访问概率越高
upstream tomcat_server {
server 192.168.10.11:8080 weight=1;
server 192.168.10.12:8080 weight=1;
}
upstream tomcat_server {
server 192.168.10.11:8080 weight=1;
server 192.168.10.12:8080 weight=2;
}
源地址哈希法
• 根据获取客户端的IP地址,通过哈希函数计算得到一个数值
• 用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号
• 采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问
• 可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题
l 最小连接数法(least_conn)
• 由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接
数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器
upstream tomcat_server {
ip_hash;
server 192.168.10.11:8080 weight=1;
server 192.168.10.12:8080 weight=1;
}
upstream tomcat_server {
least_conn;
server 192.168.10.11:8080 weight=1;
server 192.168.10.12:8080 weight=1;
}
Fair
• 比weight、ip_hash更智能的负载均衡算法
• 可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配
• Nginx本身不支持fair,如果需要这种调度算法,则必须安装upsteram_fair模块
l url_hash
• 按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器
• 可以进一步提高后端缓存服务器的效率
• Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包
upstream tomcat_server {
fair;
server 192.168.10.11:8080 weight=1;
server 192.168.10.12:8080 weight=1;
}
upstream tomcat_server {
hash $request_uri;
server 192.168.10.11:8080 weight=1;
server 192.168.10.12:8080 weight=1;
}