【Nginx】负载均衡 (Load Balancing)( 二 )

前面几种方法费尽心思来实现服务消费者请求次数分配的均衡 , 当然这么做是没错的 , 可以为后端的多台服务器平均分配工作量 , 最大程度地提高服务器的利用率但是实际情况是否真的如此? 实际情况中 , 请求次数的均衡真的能代表负载的均衡吗?这是一个值得思考的问题 。 上面的问题 , 再换一个角度来说就是:以后端服务器的视角来观察系统的负载 , 而非请求发起方来观察 。 最小连接数法便属于此类 。 最小连接数算法比较灵活和智能 , 由于后端服务器的配置不尽相同 , 对于请求的处理有快有慢 , 它正是根据后端服务器当前的连接情况 , 动态地选取其中当前积压连接数最少的一台服务器来处理当前请求 , 尽可能地提高后端服务器的利用效率 , 将负载合理地分流到每一台机器 。

  1. Source 原地址法 : 源地址hash , 新连接先按权重分配 , 后续连接按source分配请求 。 起到会话绑定的作用 , 但是调度粒度太粗 , 使用的少 , 相当于是ip_hash.
常见框架 NGINX Nginx做为一个强大的Web服务器软件 , 具有高性能、高并发性和低内存占用的特点 。 此外 , 其也能够提供强大的反向代理功能 。 Nginx工作在网络的7层 , 可以针对http应用本身来做分流策略 。 支持七层HTTP、HTTPS协议的负载均衡 。 对四层协议的支持需要第三方插件-yaoweibin的ngx_tcp_proxy_module实现了tcp upstream 。
NGINX 主要有五种负载均衡方法
# 不填参数时默认是 轮询算法least_conn;# 最少连接方法ip_hash;# ip 方法hash $request_uri consistent;# 哈希一致性方法least_time header;# NGINX Plus 版本支持random two least_time=last_byte;# 随机算法 HaProxy Haproxy是高可用代理软件 , 它是一种比较流行的开源软件 , 基于TCP(四层)/HTTP(七层)协议的负载均衡代理解决方案 , 可以在Linux、FreeBSD等平台下运行 , 常见于跨多个服务器 , 比如:web、应用程序、数据库、MQ消息队列、MC数据库等等 。 通过多个Haproxy服务来提高服务的性能和可靠性 。 他支持多种负载均衡方法 , 如下:
【【Nginx】负载均衡 (Load Balancing)】1.balance roundrobin # 轮询 , 软负载均衡基本都具备这种算法2.balance static-rr # 根据权重 , 建议使用3.balance leastconn # 最少连接者先处理 , 建议使用4.balance source # 根据请求源IP , 建议使用5.balance uri # 根据请求的URI6.balance url_param , # 根据请求的URl参数'balance url_param' requires an URL parameter name7.balance hdr(name) # 根据HTTP请求头来锁定每一次HTTP请求8.balance rdp-cookie(name) # 根据据cookie(name)来锁定并哈希每一次TCP请求


推荐阅读