1. 讲在集群前
流量相关:
- PV(Page View):页面浏览量或点击量,表示所有访问者在24小时内查看某个网站或网页的总次数。
- UV(Unique Visitor):独立访客,统计一天内访问某个站点的用户数,以cookie为依据。
- IP:独立IP的访问用户,指一天内使用不同IP地址的用户访问网站的数量。
- 一般情况:PV > UV > IP
- 拓展:
- IP和UV之间的数据:通常UV量略高于IP量,每个UV更准确地对应一个实际的浏览者。
- UV大于IP:在网吧、学校、公司等使用相同IP的场所,不同用户或使用不同浏览器访问网站时,UV数会大于IP数。
- UV小于IP:在家庭中,使用ADSL拨号上网,同一个用户在不同时间访问网站时,IP可能会不同,但实际访客数唯一,因此UV数小于IP数。
- K8S Kubernetes 读法kubəˈnetis(库bə 内踢子)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
性能扩展:
- 垂直扩展(纵向扩展):为现有的计算资源池增加更多资源,例如增加内存、磁盘或虚拟CPU,以应对增加的应用负载。典型案例包括对称多处理机(SMP)。
- 水平扩展(横向扩展):通过向计算平台添加更多的机器或设备来处理增长的需求。
2. 集群概述
什么是集群?
是两台或者两台以上的服务器相互协作完成同一项任务但对外表现为一个整体的服务器组构建方式。
集群系统的优点:
- 高可扩展性:通过增加服务器数量来提升性能。
- 高可用性:集群中的一个节点失效时,其任务可以传递给其他节点,有效防止单点故障。
- 高性能:负载均衡集群允许系统同时接入更多的用户。
- 高性价比:可以使用廉价的硬件服务器构建高性能的系统。
拓展:负载和分布式的区别?
- 负载均衡:多台服务器相互协作完成同一项任务 类似于厨房里请了两个厨师,两个厨师都能炒同样的菜,这两个厨师的关系是负载均衡。
- 分布式:多台服务器相互协作完成同一项或同一类任务(为了使厨师专注于炒菜,聘请了一个配菜师负责切菜、备料等,厨师和配菜师的关系是分布式。如果一个配菜师忙不过来,再请一个配菜师,两个配菜师的关系又是负载均衡。)
集群的分类:
- LBC(Load Balancer Cluster):负载均衡集群:通过调度器对后端的应用服务器进行任务分配调度,应用服务器之间彼此分摊压力的服务器组部署方式。
- HAC(High Availability Cluster):高可用集群(高可靠):两台配置了相同功能的服务器,彼此进行心跳检测,发生故障时快速故障转移的服务器部署方式。
- HPC(High Performance Computing Cluster):高性能计算集群(了解):
LBC(负载均衡集群)
概念:
通过调度器对后端的应用服务器进行任务分配调度,应用服务器之间彼此分摊压力的服务器组部署方式。
目的:
提高业务性能,降低单台服务器的压力。
特性:
- 不同节点之间相互独立,不共享任何硬件资源。
- 通过一定算法将客户端的访问请求分配到集群的各个节点上,充分利用每个节点的资源。
- 负载均衡扩展了网络设备和服务器带宽,增加吞吐量,加强网络数据处理能力。
实现方式:
- 硬件:
F5 Big-IP系列 A10
- 软件:
二层负载:链路级负载
没有软件
四层负载:(包含三层)
LVS - Linux Virtual Server
七层负载:
nginx、amoeba、
LVS(Linux Virtual Server):
- LVS是Linux虚拟服务器的缩写,是中国最早纳入Linux内核的应用层程序。
- RAC(Real Application Clusters):是Oracle的负载调用软件。
算法:
- RR(Round-Robin):轮询
- WRR(Weighted Round-Robin):加权轮询
结构:
- 集群IP(VIP):虚拟IP
- 负载调度器(DS):调度器IP(DIP)
- 真实服务器(RS):应用服务器IP(RIP)
- 共享存储
层级:
- 硬件:二层、四层、七层
- 软件:
- 四层负载调度器:LVS、RAC
- 七层负载调度器:MySQL Proxy、Nginx、Haproxy
LVS和Nginx的主要区别是什么?
- 触发条件不同:
- 四层:工作在传输层,转发数据依靠的是三层的IP和四层的Port。
- 七层:工作在应用层,数据依靠URL或主机名(FQDN)来区分,进行多次连接。
- 实现原理不同:
- 四层负载调度器:TCP连接建立一次,客户端和RS主机之间。
- 七层负载调度器:TCP连接建立两次,客户端和负载调度器;负载调度器和RS主机。
- 应用场景不同:
- 四层负载调度器:主要应用于TCP应用,如OA、ERP。
- 七层负载调度器:主要应用于HTTP协议,根据用户访问页面进行判断和调度。
- 安全性不同:
- 四层负载调度器:转发SYN攻击。
- 七层负载调度器:拦截SYN攻击。
LVS工作原理:
LVS会根据预设的集群规则判断数据包是否符合转发条件,符合条件的数据包会被转发给后端服务器,不符合条件的则直接丢弃,提高传输效率,而nginx是会拦截客户端请求,代替客户端去向服务器发起请求,需要2次tcp连接,效率会低一点。
- IPVS:钩子函数,负责处理数据包过滤等内核层面的功能。。
- IPVSADM:用来创建规则,是为内核空间的函数提供配置,例子: 类比红绿灯系统,即使红绿灯杆(函数)已经准备就绪,没有正确的规则(设定好的灯闪烁模式)也是无法正常工作的
![[Pasted image 20241101151024.png]]
名词解释:
- CIP:客户端IP
- DIP:负载调度器IP 作为路由器进行广域网通信的必备条件
- VIP:集群虚拟IP 作为路由器进行广域网通信的必备条件
- RIP:真实服务器IP
- 负载调度器 :用于判断主机目标端口是否开放
相关命令:
-
查看机器是否支持LVS服务
grep “IP_VS” /boot/config-3.10.0-957.el7.x86_64 -
命令:ipvsadm (linux一般没有请手动安装)
-
查看集群:
ipvsadm -ln
-l #列出list
-n #数字化显示 -
创建集群:
ipvsadm -A -t 192.168.88.110:80 -s rr
-A #add创建集群
-t #匹配数据包的传输协议类型是否是TCP
ip #匹配数据包的目标IP地址
port #匹配数据包的目标port
-s 表示指定的算法- 给已创建集群添加真实服务器
ipvsadm -a -t 192.168.88.110:80 -r 192.168.199.130:80 -m
ipvsadm -a -t 192.168.88.110:80 -r 192.168.199.140:80 -m
-a #向已存在的集群中添加真实服务器
-r #指定要加入到集群中的真实服务器地址和端口
-m #LVS软件的工作模式,NAT模式
- 给已创建集群添加真实服务器
-
删除集群:
ipvsadm -D -t 192.168.88.110:80
-D #删除集群以及集群内的真实服务器
ipvsadm -d -t 192.168.88.110:80 -r 192.168.199.130:80
-d #删除指定集群内的指定真实服务器 -
修改集群:
ipvsadm -E -t 192.168.88.110:80 -s wrr
#-E Edit 修改已存在集群的指定功能,例如修改算法 rr -> wrr
ipvsadm -e -t 192.168.88.110:80 -r 192.168.199.130:80 -g
#-e #修改集群内真实服务器的指定功能,例如工作模式 NAT(m) -> DR(g) -
备份与恢复:
ipvsadm-save -n > /dir/filename
ipvsadm-restore < /dir/filename
-n #另存为时,必须加-n选项,否则无法用来正常恢复,即不-n会显示localhost
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现