运维知识-总结1

一、什么是集群?

集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

简单总结为:集群就是一组协同工作但对外表现为一个整体的服务器组

集群系统的优点:

高可扩展性:如上所述,可以通过增加服务器数量达到性能扩展。

高可用性:集群中的一个节点失效,它的任务可以传递给其他节点。可以有效防止单点故障。

高性能:负载均衡集群允许系统同时接入更多的用户。

高性价比:可以采用廉价的硬件服务器构造高性能的系统。

拓展:负载和分布式的区别?

饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是负载均衡。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是负载均衡

 

负载调度器:

调度器:F5>LVS>nginx>

真实服务器:Apache

共享存储:MFS

二、集群的分类:

LBCload balance cluster):负载均衡集群,将用户压力分胆至不同节点

调度器:

软件:Nginx,LVS,AmobaHa-proxy

硬件:F5BIG-IPROSE,安瑞科技

LVS:(linux vit ual server:linunx虚拟服务器,现在LVS已经是Linux标准内核的一部分。

HAC高可用集群  提高服务器的可用性--多台机器工作同一内容,一台不行了,另外一台顶替它工作。

1原理:

心跳检测(互相之间传递一条报文,判断对方是否存在,如果不存在就进行替换)

前提是多台机器之间互相连接信号

2、出现的问题:

脑分离(因为种种原因,相互之间无法联系,但两台设备完好,导致上位冲突)

 

解决方案:

(1)心跳线冗余:两台机器间线断了,再加一条线连接。

(2)串口线:另一种自动更换线的线种。

(3)电源交换机:强行将另一台机器去掉,即使脑分离,不管它是否坏掉,强行更换另一台机器顶替他。

实现方案:

软件:keepalived、heartbeat

硬件:F5、Big-IP、ROSE、安瑞科技

高可用集群(HAC)(耦合概念)

尽可能的提高服务器的可用性

4种高可用性集群的标准:一年的宕机时常,越低越好,5个九基本不好实现。

99:最低标准     87.6小时

999:三九标准 8.8小时

9999:四九标准 53分钟 一年的宕机时长

99999:最高标准 5分钟

只能无限接近100%,但又达不到100%

考虑宕机成本和构建成本对比,宕机成本越高,那么相应的构建成本也越高

HPC:高性能运算集群  提供单台计算机提供不了的运算能力,性能大大加强,稳定

 

三、提升服务器的性能的方式:

垂直拓展:换一台更好性能的服务器,更换更强大的硬件

缺点:

上限瓶颈,服务器的性能是有限制的,不可能会无限制增加

服务访问中断

优点:

技术实现难度低,操作简单

网络拓扑结构无需更改

 

水平拓展:增加服务器数量,协同处理

优点:

上限高

添加节点,服务访问不会中断

性价比较高,性能差的服务器也能利用上

缺点:

技术实现难度较高

-------------------------------------------------------------------------------------------

1LBC(负载均衡集群)和HPC(高性能集群)对于提升性能的区别:

原理上讲:HPC会将一个任务 A平分成若干个小a,然后通过调度器分给各个集群中的机器,通过降低处理单个任务的时间的方法,提高工作效率,每个工作的节点都不同,处理完各个节点后合并完成任务。

LBC不具备拆分任务的功能,只有调度的作用,LBC是通过提升单位时间处理的任务数来提高效率。显而易见,如果再高并发的情况下HPC更适合。

 

例:测试题:

一个A(任务),可被拆分为10a(任务),1a需要1个小时被处理完,有11台机器可用;问以LBC方式集群和HPC方式集群处理A任务,各自的所需时间、节点、方式?

LBC: (1A    0a,(10)时间,(2)节点工作

HPC: (1A    10a,1)时间,(11)节点工作

 

HPC早期的实际应用之一,SETI@HOME 由玛雅公司创建,其原理就是利用高可用性集群来实现的。

 

2、LBC负载均衡集群:

调度器

应用方式分类:对于OSI七层模型:

二层:数据链路层   应用:F5

四层:传输层:     应用:LVSHa-ProxyNginx(新版本支持。老版本不支持四层)、F5

七层:应用层:     应用:NginxHa-Proxy(支持跨平台)、AmoebaF5

 

 

原理:

二层:(MAC编址和寻址)应用在此层,其实是在通过控制数据报的物理出口来均衡分流;数据从物理出口出来,可以选择电信,联通输送数据

四层:一次TCP连接,有C(客户端)和RS(真实服务器)完成

 

 

 

七层:两次TCP连接,由CD(调度器),DRS完成,中间涉及将数据报文重新封装2次的过程,实现两次TCP连接。

 

 

 

这里举个‘栗子’方便理解:

实例1 A去一个写字楼找B,但路过门口,C告诉A B5514房间,那么C只负责引导A连接B,至此只需要一个TCP连接,只是中间涉及到C(调度器)的一个算法,就是将目标IP和源IP转换的过程。

实例2 还是AB,但这次需要C去做中间人去给两个人沟通,A只有通过C来回传话才可以实现数据传输,那么AC 是一个TCP连接,CB是一个TCP连接,这中间涉及两次(数据传进,传出)数据报文封装,即两次TCP连接才可以。

使用场景:

七层里 Nginx: HTTPSSLSMTP,不能说整个七层,因为Amoeba负载只支持sql

整个四层:支持c\s结构

 

比较:

完整性角度:七层>四层:比如SYN攻击,七层会进行拦截掉攻击。

 

 

 

并发量:四层>七层;七层支持域名解析从而分离负载

 

3、LBC在四层应用中的软件 ------LVSLinux Virtual Serverlinux 虚拟服务

 

LVS有两种模块:

用户态:  ipvsadm-----暴露在用户空间的管理工具

内核态:  ipvs------运行在内核空间的核心代码

这里内核态涉及的一个钩子函数:其原理是由内核机制,使内核空间具有优先获得数据报文的权力。使数据包先通过ipvs内核态,然后再进入用户态。

 

 

 

这时数据报文进入到调度器LVS后,数据被内核空间通过钩子函数拦截后,通过算法将数据包的目标IP和源IP进行IP转换;那么这个算法需要在ipvsadm工具编写,然后转换目标IP为所分担压力的集群IP。如下图:

 

 

 

 

 

 

4、LVS工作的三种模式:

NAT模式:转发模式

1、调度器必须是Linux系统,真实服务器可以不是Linux系统。

2、调度器必须是工作在客户端与真实服务器之间,并且真实服务器需要把网关指向调度器

3、入站及出站报文都要经过负载调度器

4、支持端口映射(例如80映射至 8080

ARP通讯行为:只要Linux支持

 

DR模式:直接路由

1、调度器与真实服务器都必须是Linux系统

2、调度器与真实服务器必须是工作在同一个广播域内

3、数据报文入站由调度器完成,出站由真实服务器完成

4、不支持端口映射

 

TUN模式,隧道路由

1、调度器与真实服务器必须是Linux系统

2、调度器与真实服务器必须拥有公网IP,或者公网IP控制权

3、入站由调度器完成,出站由真实服务器完成

4、不支持端口映射

并发量:DR > TUN >NAT

灵活性:NAT >TUN >DR

 

-----------------------------------------------------------------------

 

在集群中调度器分配真实服务器所采用的算法:

1、分类:

固定算法(静态调度算法):只根据算法本身去调度,不考虑服务器本身情况,尽管服务器状态很差,依然根据算法去调度。

 

动态算法(动态调度算法: 除了考虑算法本身,还要考虑服务器状态去调度,更加灵活。

 

2、静态调度算法的分类

(1)RRround robin)轮询:将每次用户的请求分配给后端的服务器,从第一台服务器开始分配至第N台结束,然后循环。

优点:简单,操作方便     缺点:对于一些性能差距较大的服务器容易造成分配不均

 

(2)WRR加权轮询:按照权重比实现在多台服务器之间进行调度。

 

(3)SHsource hash)源地址散列:将同一个IP的用户请求,发送给同一个服务器

 

(4)DHdestination hash)目标地址散列:将同一个目标地址的用户请求发送给同一个真实服务器(提高缓存命中率)。

3、动态调度算法的分类:

(1)LClest-connection)最少连接:将新的连接请求,分配给连接数最少的服务器。

涉及的算法:公式: 连接数=活动连接数*256+非活动连接数

 

(2)WLC加权最少连接:特殊的最少连接算法,权重越大承担的请求越多,它是基于LC基础上的算法

计算公式:连接数=(活动连接数*256+非活动连接数)/权重

计算出来的权重越大,则连接数越少,分配的连接越多。

 

(3)SED最短期望延迟:特殊的WLC算法,为了约束当活动链接数为0时的分配问题

算法:连接数=(活动连接数+1*256/权重   ----

 

4NQ永不排队:特殊的 SED 算法,无需等待,如果有真实服务器的连接数等于0那就直接分配不需要运算

 

5LBLC特殊的DH算法:即能提高缓存命中率,又要考虑服务器性能

 

6LBLCR    LBLC+缓存:尽可能提高负载均衡和缓存命中率的折中方案

 

4、有状态服务和无状态服务     

有状态服务:受状态影响    例:mysql服务,一旦从一组服务中移出,再次放入服务中,数据库变化较大,无法再继续工作。

 

无状态服务:不受状态影响,例如Apache服务,数据存在数据库,所以移出服务,再放入依然能继续正常工作。

http是一个无状态协议:当我们第一期访问网页后,再一次访问时,Apache不会记录你访问的内容,以及你的登录用户名及密码等。

 

中心化服务:正常的集群LBC

去中心化服务:redis集群

 

Cookie:有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

Session:尤其是在网络应用中,称为"会话控制"。Session 对象存储特定用户会话所需的属性及配置信息;当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中

 

脱敏

 

4、持久化连接:即每次连接都连接到设定好持久化的那个对象上。

1LVS独有的特性,类似于SH算法

2、调度算法可以持久化共用,但持久化的优先级大于算法。

 

原理:在内存中维护hash表,表中记录着CRS客户端到真实服务器之间的连接信息,如果hash表到期,信息消亡;;例如时间为100s,在有限时间内,再次访问,时间会自动增加,但不会超过最大到期时间;

 

持久化(PCC)分类:

(1)持久化客户端连接:每客户端持久;将来自于同一个IP的请求统统定向到此前选定的RS;也就是只要是IP相同,就调度的RS不变,不考虑端口。

 

例:

 

ClientRS    192.168.1.1>D:22>RS1

                192.168.1.1>D:80>RS1

例:ipvsadm -A -t 172.16.0.0:0  -s wlc -p 120

(2)持久化端口连接:每客户端持久;将来自于同一IP同一端口的请求,统统定向至此前连接的RS,需要同时满足IP相同,端口相同。

 

ClientRS    192.168.1.1>D:22>RS1

                192.168.1.1>D:80>RS2

如果持久化不满足时,可以加上RR算法,

ipvsadm -A -t 172.16.0.0:80  -s rr -p 120

(3)持久化防火墙标记连接:将来自于同一客户端的指定服务的请求,始终定向至此选定的RS。不过它可以将两个毫不相干的端口定义为一个集群服务

 

example

iptables -t mangle  -A PREROUTING  -d  192.168.25.159 -p tcp  --dport 80 -j MARK --set-mark 10

iptables -t mangle  -A PREROUTING  -d  192.168.25.159 -p tcp  --dport 443 -j MARK --set-mark 10

 

 

这里的Mark就是设定的值,他可以根据值来分配集群

当目标地址是10.10.10.12    目标端口是80时     5(给的值是5

当目标地址是10.10.10.12    目标端口是443时    5(给的值是5

 

 

当目标地址是10.10.10.13    目标端口是22时     10(给的值是10

当目标地址是10.10.10.12    目标端口是22时    10(给的值是10

 

则记录的5值的集群就是:

10.10.10.12:80

10.10.10.12:443

 

则记录的10值的集群就是:

 

10.10.10.13:22

10.10.10.12:22

 

1、ARP响应

(1)ARP-响应级别

Arp-ignore

0 默认级别,只要本机配置有相应IP地址就响应

1           仅在请求的目标地址配置在请求到达的网络接口上时,才给予响应

(2)arp-announce

0 默认级别,将本机任何网络接口上的任何地址都向外通告

1           尽可能避免向目标网络通告与网络不匹配的地址信息表

2           仅向目标网络通告与其网络相匹配的地址信息。

 

VIP(虚拟IP),又叫集群IP,浮点IP:应用与在集群中传递数据包、访问集群。

 

持久化的意义:为了https,因为HTTPS每一次连接过程很繁琐,适合建立起一个稳定的连接,不要每次连接都重新走一遍加密连接,挥手握手等过程。所以这里需要持久化来维持或保证https的稳定连接,节省系统资源。

 

Ipvsadm 的一些命令:

#修改集群服务的调度算法:

Ipvsadm  -E  -t  192.168.13.100:80  -s wlc

#清除所有集群服务

IPvsadm -C

#修改一个真实服务器的权重值

Ipvsadm -e -t 192.168.13.100:80  -r ip:80

 

HAC高可用性集群

概念部分:

实现原理:心跳检测

问题:脑分裂

解决方案:

1)心跳线冗余

2)串口线

(3)电源交换机

实现软件:

1、keepalived:

它是一种健康检查工具:依靠VRRP协议(虚拟路由冗余协议)

特点:(1)支持故障的自动切换主从节点

(2)支持节点健康状态检查

抢占模式:适用于M(主) B(从)节点性能不一致的情况下

非抢占模式:适用于M(主) B(从)节点性能一致的情况下

2、heartbeat:依靠脚本实现高可用

 

 

 

3、需要背下的一些概念:

虚拟设备:由一个主( Master 设备和多个备( Backup "设备组成的一个虚拟网关

 

主设备( Master ):负责转发数据报文和周期性向备设备发送 VRRP 协议报文

 

备设备( Backup ):不负责转发数据报文,在 Master 设备发生故障的时候会通过选举形式成为新的 Master 设备,该角色会接收来自 Master 设备的 VRRP 报文并加以分析

 

VRID:用来表示一个 VRRP

 

虚拟IP:配置在虚拟设备上的虚拟IP地址,一个虚拟设备可以拥有一个或者多个虚拟IP地址。

 

IP 地址拥有者:分配给虚拟设备的虚拟 IP 的真实拥有者,IP 拥有者会直接跳过选举成为 Master,并且是不可抢占的

 

虚拟 MAC 地址:由虚拟设备生成的虚拟 MAC 地址,每一个虚拟设备都会自动生成一个虚拟 MAC 地址,这个 MAC 地址是用于虚拟设备处理 ARP 报文的

优先级:用于表示物理设备的优先级,这个参数用于 Master 的选举,取值范围是 1-254,这个有优先级有两个比较特殊的值,分别是 0 255,优先级 0 是由原来 Master 设备发送的,这个优先级是声明此设备不再参与 VRRP 组。优先级为 255 的是 IP 拥有者的优先级,拥有这个优先级会直接成为 Master。(优先级数值越低优先级则越高)

 

抢占模式:当 Backup 设备接收到的 VRRP 报文通过分析得出当前 Master 设备的优先级低于 Backup 设备,则 Backup 设备会切换为 Master 设备。

 

VRRP 一共有三种状态,分别是:初始状态( Initialize )、活动状态( Master )、备份状态( Backup

 

4VRRP主节点需要做的事情:

1定期发送 VRRP 报文

2以虚拟 MAC 地址响应对虚拟 IP 地址的 ARP 请求

3转发目的 MAC 地址为虚拟 MAC 地址的 IP 报文

4如果它是这个虚拟 IP 地址的拥有者,则接收目的 IP 地址为这个虚拟 IP 地址的 IP 报文。否则,丢弃这个 IP 报文

5如果收到比自己优先级大的报文则转为 Backup 状态

6如果收到优先级和自己相同的报文,并且发送端的 IP 地址比自己的 IP 地址大,则转为 Backup 状态

7当接收到接口的 Shutdown 事件时,转为Initialize

 

5VRRP从(备份)节点需要做的事情

1接收 Master 发送的 VRRP 报文,判断 Master 的状态是否正常

2对虚拟 IP 地址的 ARP 请求,不做响应

3丢弃目的 MAC 地址为虚拟 MAC 地址的 IP 报文

4丢弃目的 IP 地址为虚拟 IP 地址的IP报文

5Backup 状态下如果收到比自己优先级小的报文时,丢弃报文,立即切换为 Master( 仅在抢占模式下生效 )

6如果收到优先级和自己相同或者比自己高的报文,则重置定时器,不进一步比较 IP 地址

7当接收到接口的 Shutdown 事件时,转为 Initialize

8如果 MASTER_DOWN_INTERVAL 定时器超时,则切换为 Master

VRRP协议在网络环境的工作模式:

主备份模式

负载分担模式

 

 

SQUID-代理服务器:

1、意义

squid服务程序是一款在Unix系统中最为流行的高性能代理服务软件,通常会被当作网站的前置缓存服务,用于替代用户向网站服务器请求页面数据并进行缓存,通俗来讲,Squid服务程序会接收用户的请求,然后自动去下载制定数据(如网页)并存储在服务器内,当以后的用户再来请求相同数据时,则直接将刚刚存储在服务器本地的数据交给用户,较少用户的等待时间。

 

缓存存储在硬盘内:

 

2作用:

Squid服务程序配置起来相对简单,效率高、支持如HTTPFTPSSL等多种协议的数据缓存,还支持基于ACL访问控制列表和ARL访问权限列表功能的内容过滤与权限管理功能,禁止用户访问存在威胁或不适宜的网站资源,保证内网安全的同时还整体的提高了客户机的访问速度,帮助节省网络宽带,尤其适合安装在内存大,硬盘转速块的服务器上。

 

3、从作用分为正向代理和反向代理:

 

正向代理:

让用户可以通过Squid服务程序获取网站页面的数据,具体工作形式分为标准代理模式与透明代理模式                                                    

1)标准正向代理模式:将网站的数据缓存在服务器本地,提高数据资源被再次访问时的效率,但用户必需在上网时指定代理服务器的 IP 地址与端口,否则将不使用 Squid 服务。

 

 

 

2)透明正向代理模式:功能作用域标准正向代理模式完全相同,但用户不需要指定代理服务器的 IP 地址.  与端口号,所以这种代理服务对于用户来讲完全透明的。

反向代理

反向代理则是为了降低网站服务器负载而设计的,反向代理服务器负责回应用户对原始网站服务器的静态页面请求,即 如果反向代理服务器中正巧有用户的静态则直接将缓存的内容发送给用户,减少了对原始服务器的部分数据资源请求。

 

 

CDN(内容分发网络):服务器数量多才有意义

 

 

 

 

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术

 

 

关于SQUID的其他补充:

 

软件包:squid-3.xxxx  

系统服务:squid

主程序:/usr/sbin/squid

主配置文件:/etc/squid/squid.conf

默认监听端口:TCP 3128

默认访问日志:/var/log/squid/access.log

 

配置文件中的一些权限:

http_port 3128                                      #端口

access_log /var/log/squid/access.log squid                #访问日志存放位置

cache_mem 64 MB                             #缓存热数据最大占用服务器内存大小

cache_dir ufs /var/spool/squid 100 16 256        #缓存目录:100:缓存最大100MB(到达100M后,之前的缓存记录被挤掉),最多16个一级缓存目录,256个二级缓存目录

visible_hostname proxy.benet.com    #可用主机名,随便起名,不设置会报警

dns_testnames www.google.com www.163.com   #dns测试域名,测试squid自己能访问公网

maximum_object_size 4096 KB      #最大缓存对象的大4MB

reply_body_max_size  10 MB  #允许下载的单个文件最大大小

 

 

Squid--ACL权限设置:访问控制列表

ACLAccess Control List ,访问控制列表):

根据源地址、目标URL、文件类型等定义列表

acl  列表名称  列表类型  列表内容 ...

针对已定义的acl列表进行限制

http_access  allowdeny  列表名称 ...

 

[root@localhost ~]# vi /etc/squid/squid.conf

……

acl a1 src 0.0.0.0/0.0.0.0

http_access deny a1

[root@localhost ~]# service squid reload

 

可设置的控制选项:

src  à    源地址

dst  à   目标地址

port  à   目标端口

dstdomain  à   目标域

time  à   访问时间

maxconn  à   最大并发连接

url_regex  à   目标URL地址

www.baidu.com

Urlpath_regex  à   整个目标URL路径

http://www.baidu.com/1.jpeg

 

posted @   西门一盏灯  阅读(334)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
1
点击右上角即可分享
微信分享提示