1.什么是集群?
我们大多数应用都是以单体服务器为主的,例如公司内部的用的管理系统,单体服务器是指仅有一台服务器提供相关服务
那么这有什么缺陷呢?
1.扩展困难
2.容错率低
3.性能有限
那么怎么解决呢?那就要用到集群了!
什么是集群?集群(Cluster)所谓集群是指一组独立的计算机系统构成的一个松耦合的 多处理器系统,它们之间通过网络实现进程间的通信。 简而言之,由一台服务器提供服务变成多台服务器提供服务,这多台服务器提供的服务是一致的,那么我们就把这多台服务器组成一个集群。
2.负载均衡
那么问题又来了, 当请求到达集群服务器后,应该由哪一台服务器提供服务呢?
这里就要用到负载均衡服务器了。
负载均衡服务器根据相应的策略将请求分发给集群服务器中的某一台进行处理。
2.1负载均衡原理:
首先是负载均衡分类:
1.二层负载均衡(mac):
根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址 请求,负载均衡接收后分配后端实际的MAC地址响应)
2.三层负载均衡(ip):
一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端 实际的IP地址响应)
3.四层负载均衡(tcp):
在三次负载均衡的基础上,用ip+port接收请求,再转发到对应的机器。
4.七层负载均衡(http)
根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。
这里主要介绍四层和七层负载均衡
常见的是四层和七层负载均衡
实现四层负载均衡的软件有:
名称 | 特点 |
F5 | 硬件负载均衡器,功能很好,但是成本很高。 |
lvs | 重量级的四层负载软件 |
nginx | 轻量级的四层负载软件,带缓存功能,正则表达式较灵活 |
haproxy | 模拟四层转发,较灵活 |
实现七层负载均衡的软件有:
名称 | 特点 |
apache | 功能较差 |
Mysql proxy | 功能尚可 |
nginx | 只在http协议和mail协议上功能比较好,性能与haproxy差不多 |
haproxy | 天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移 |
一般是lvs做4层负载;nginx做7层负载;haproxy比较灵活,4 层和7层负载均衡都能做。