集群的一些知识和实验
- 集群为了什么?
实现高并发,高可用,实现1+1>2,实现各个服务器协同工作。
- 集群的一些条件?
多台机器,难度不是哪些命令,而在一个架构上的理解。(需要10-8台机器)
CPU i5。 内存8G。环境一定要知道,以及记住。
- 何为集群
我们先来看看一些集群的优劣对比:
单个人:它一定有它的局限性,接口时间长,暂停服务,但是成本低,但是一定要禁止单台服务器
单台服务器的标准:(基本的15000RMB的服务器)
pv:是网页的点击次数
如果是web网页的话:10w/h pv
页游【其所有资源从服务器获取】、下载、视频的话:2k~3k/h pv
流水线:它的业务不会中断,效率比单个人高,适合大型业务,缺点是成本高昂
因此,集群就是实现各个服务器协同工作的的一个集合体,它可以有子集群【也可以理解为集群有分类】,比如redis集群、MySQL集群、nginx集群,负载均衡集群、高可用集群、
- 负载均衡架构图(LBC)‘ 分担服务器的压力,提升工作效率,提高并发量
如图所示:我们的client发送请求过来(此时可能是并发的请求),经过负载均衡服务器进行了一个请求的分发到各个CVM服务器上去,再处理请求。
什么市CVM服务器?
云服务器ECS或者CVM是多个CPU,内存,硬盘组成的计算池和存储池和网络的组合,它通过虚拟技术将服务器商所有的服务器进行虚拟化,充分利用闲置的资源,并且如果一台机器故障,会立即转移到其它可用的服务器,并且可以随时升级服务宽带cpu等硬件配置,而不需重新购买,它有很高的稳定性和可扩展性,而且价格低廉,是目前市场上的主流服务器,ECS或CVM都是云服务器,叫法不一样而已,技术都是一样的。
高可用集群(HAV)
尽可能保障服务正常运行。
如图:一台master(主)和Backup(备机)连接我们的apache服务器,Master和Backup服务器通过keep-alived + nginx做心跳检测。也可以用heart-beat也是可以
问题:心跳检测会出现脑裂的问题,就是我的backup服务器误认为我的master服务器暂停工作,但是实际没有暂停工作。
1、负载均衡集群(LBC)实验
目的:减轻单台服务器压力,将结果分担给多台服务器运行
软件负载均衡就是可以在普通服务器上运行负载均衡的软件以实现负载均衡,常见的有Nginx、LVS、HAproxy。区别如下:
- Nginx:是7层负载均衡软件,用基于TCP协议进行请求的转发
- LVS:是4层负载均衡软件,运行在内容,其一部分是嵌入在Linux中的,性能是负载均衡软件中最高的,更加的通用,阿里、腾讯云的负载均衡的底层原理就是使用LVS。
- HAproxy:是7层负载均衡软件
因此,安装负载均衡,安装的是4层还是7层的负载均衡软件,需要根据业务特点进行,且很多的大公司都是使用LVS定制版,在开源版本的基础上做了比较多的性能优化,淘宝开源过优化的alibaba/LVS,爱奇艺开源DPDK版本的LVS,大部分中小型公司使用开源的LVS足够满足业务需求。
LVS有三种工作模式:有DR、NAT、Tunnel模式,每种模式工作原理不同,各种模式都有自己的优缺点,适合不同的应用场景。
负载均衡有二层、四层、七层,LVS是四层,nginx为七层。
LVS和nginx的简单比较(详细的参照https://1938494248.gitbook.io/linux/):
LVS的负载均衡是在四层传输层进行目标的地址替换(存粹),其没有涉及流量转发与流量修改,效率很高。
而nginx是基于应用层,当请求进入nginx候,nginx发现发送过来的TCP请求的是apache服务器,那么就回再次发送TCP请求到apache服务器,拿到数据后进行封装、入库、转发,效率低,它的压力比LVS压力大的多。
现在很多大公司的负载均衡服务依然使用的是LVS,包括阿里,腾讯的负载均衡服务器【可以去官网搜他们的负载均衡服务器,确实是这样子的】
我们需要知道LVS的相关术语:
1、DS:Director Server。指的是前端负载均衡器节点。
DIP:Director Server IP。负载均衡服务器和内部主机通讯的IP地址。
2、RS:Real Server。后端真实的工作服务器。
RIP:Real Server IP。后端服务器的真实IP地址。
3、VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址,可以理解为面向用户入口的地方。
4、CIP:Client IP。访问客户端的IP地址。
LVS由ipvsdam(命令行,我们需要安装)和ipvs(再集成在Linux内核中)组成,后面实验的时候回涉及到。
随让DR模式性能最好,也最重要,但是我们还是按照NET、DR、Tunnel模式的顺序进行讲解。
关于LVS更加深层次的剖析可以看链接:https://www.cnblogs.com/liwei0526vip/p/6370103.html
1、NET模式
如图所示:黑箱子为负载均衡服务器DS它是由两块网卡的。一块网卡对应外网,一块网卡对应内网。对应外网的网卡连接的是客户端的CIP,另一块网卡对应的是真实服务器(RS)的IP(RIP),因此,其可以做IP映射,实现内外网的机器访问。此外,数据的流入流出都是通过DS服务器的,它是双向流量的,对lvs的负载比较大。
原理如下:
这个模式的核心就是DNAT与SNAT,DNAT就是目标地址转换,DNAT就是源地址转换。如图所示,当负载均衡服务器(DS)检测到要访问的目标服务器需要进行端口映射,那么就会使用DNAT吧目标地址更改掉(13.14更改为1.11地址)。当RS服务器处理完毕请求,经过DS服务器返回数据是会使用SNAT把源IP更改掉(1.11更改为13.14)【这个原理是本质】。
NAT模式的优缺点如下:
优点:支持windows操作系统,支持端口映射
缺点:后端RS(真实服务器)需要配置网关,双向流量对lvs负载压力比较大
应用场景:如果是windows系统,使用lvs的话,就必须选择NAT模式了
2、DR模式
DR模式的数据报是通过路由器发送到负载均衡服务器(DS)中,DS通过隐藏IP地址转发至RS服务器,RS处理完数据后直接返回到客户机Client中。因此DR模式的效率是最高的。
如图所示:
DR模式的有点和缺点
优点:响应数据不经过lvs,直接返回客户端,性能好。此外,对数据包的修改比NAT模式少。
缺点:lvs和rs必须在同一个物理网络。不支持端口映射。
应用场景:对性能要求非常高,可以首选DR模式,而且可以透传客户端源IP地址(通过IP隐藏)。
3、Tunnel模式在国内使用较少,这里就不进行讲解了
1、DR的环境搭建
环境信息:
一共要6台机器
网络:
网段:10.10.10.0/24
id:10.10.10.11~16/24 (6台服务器)
VMWARE:网络类型,仅主机模式