负载均衡集群
1、主流开源软件:LVS、keepalived、haproxy、nginx等;
▏LVS特点:
- 抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;
- 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
- 工作稳定,自身有完整的双机热备方案;
- 无流量,保证了均衡器IO的性能不会收到大流量的影响;
- 应用范围比较广,可以对所有应用做负载均衡;
- 软件本身不支持正则处理,不能做动静分离。
▏HAProxy特点:
- HAProxy的算法多;
- HAProxy是支持虚拟主机的;
- 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
- 支持url检测后端的服务器出问题的检测会有很好的帮助;
- 它跟LVS一样,本身仅仅就只是一款负载均衡软件;
- HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS。
▏Nginx特点:
- Nginx仅能支持http和Email;
- 工作在网络的7层之上,可以针对http应用做一些分流的策略;
- Nginx对网络的依赖非常小;
- Nginx安装和配置比较简单,测试起来比较方便;
- 可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
- Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等。
2、其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用;
3、keepalived的负载均衡功能其实就是lvs;
4、lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,https,mail,haproxy也支持MySQL这种;
5、相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这种7层的更加灵活,能实现更多的个性化需求。
LVS
简介
1、LVS是由国人章文嵩开发;
2、流行度不亚于apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高;
3、LVS最新版本基于Linux内核2.6,有好多年不更新了;
4、LVS有三种常见的模式:NAT、DR、IP Tunnel;
▏NAT模式:
▏DR模式:
▏IP Tunnel模式:
5、LVS架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs)。
调度算法
1、轮询 Round-Robin rr;
2、加权轮询 Weight Round-Robin wrr;
3、最小连接 Least-Connection lc;
4、加权最小连接 Weight Least-Connection wlc;
5、基于局部性的最小连接 Locality-Based Least Connections lblc;
6、带复制的基于局部性最小连接 Locality-Based Least Connections with Replication lblcr;
7、目标地址散列调度 Destination Hashing dh;
8、源地址散列调度 Source Hashing sh。