温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

集群环境分析及部署(基础)

发布时间:2020-04-02 03:33:45 来源:网络 阅读:649 作者:Cinyann 栏目:建站服务器

集群概念:

由两个或两个以上的服务实体协调、配合完成一系列工作的模式,对外表现为一个整体。

特点

分配用户请求

故障转移

共享存储


结构

agent   负载调度器

业务层   服务器

存储   共享存储


1.垂直扩展

为同样的计算资源池加入更多资源,比如增加更多内存、磁盘或是虚拟cpu,来应对增加的应用负载

2.水平扩展

需要向计算平台加入更多的机器或设备,来处理增长的需求

向上拓展:对硬件的升级、更换、提升

缺点:

性能:提升是有限度的

集群环境分析及部署(基础)


集群环境分析及部署(基础)


弊端:

DNS没有对后端设备健康状态进行检测的能力,也就是说当WEB2设备出现故障之后,DNS还是根据自己缓存的记录把任务分配到WEB2上。

dns的缺陷:无法实现健康状态检查

缓存dns无法实现分配用户请求

DNS的解析缓存造成任务分配不均,导致单个服务器压力过大。

算法:

     RR(Round-Robin):轮询

     WRR(weightd-Round-Robin):权重(加权轮询)

集群环境分析及部署(基础)


使用agent代理机制,可以对后端设备的健康状态进行检测,有效提高的工作效率。

最基础的一个集群拓扑:

集群环境分析及部署(基础)


负载均衡集群(LBC Load Balance Cluster

作用:减轻单台服务器压力

Load Balancing负载均衡,不同节点之间相互独立,不共享任何资源;通过一定算法将客户端的访问请求平分到群集的各个节点上,充分利用每个节点的资源。负载均衡扩展了网络设备和服务器带宽,增加吞吐量,加强网络数据处理能力。

实现

软件:LVS RAC

硬件:F5

集群环境分析及部署(基础)


1.分担系统的负载

2.监控节点的运行情况

在一个网络下,可以搭建多个负载均衡集群来实现压力的分散:

集群环境分析及部署(基础)

集群环境分析及部署(基础)


区别:

硬件后期的维护,比较好,但是价格偏高

软件灵活性比较大,价格相对便宜

高可用集群(HA):保证服务器的不间断运行

集群环境分析及部署(基础)

为应用程序提供持久访问

出现故障自由切换


实现访问web1和web2无论哪一个,得到的结果都是一样的,不会有偏差

集群环境分析及部署(基础)


为了使用web1和web2内容一致:

使用的机制是:心跳检测

方法实现:

RS232串口线(心跳线)

每隔几秒钟发个数据包,看对方是否(存活)有回应,无回应,则判断目标出现问题

现有网卡

集群环境分析及部署(基础)

通过两个服务器之间的eth2端口进行检测(每隔一段时间发送数据包进行确认)

eth0是给用户访问使用的

服务器可用性要求标准:

99%2个91年87.6小时(停机)
99.9%3个91年8.8小时(停机)
99.99%4个91年53分钟(停机)
99.999%5个91年3-5分钟(停机)

如果心跳线出现故障:

两台主机都认为对方出现故障(死亡),都会抢着接替对方工作,处理响应客户的请求,抢夺共享的资源、数据。(这种现象称之为“脑裂”)

带来的后果:数据不完整、甚至是灾难级

集群环境分析及部署(基础)


在脑裂的情况下:

两台主机都认为对方已死亡,都会对共享存储服务器,读取、写入数据,这样同时对一个文件,进行写入,会造成数据丢失,完整性遭到破坏。

对服务造成影响:导致访问不可达

集群环境分析及部署(基础)

正常情况下web1在工作,web2不工作,在脑裂情况下,双方主机都认为对方已死亡,这时,web2服务器会抢夺web1的IP地址,给自己配置,在同一个网络下,由于web1和web2使用相同的IP,会造成网络故障,用户不能正常访问服务器。

解决方案:

预防为主:增加冗余心跳线

强制隔离:

集群环境分析及部署(基础)

两台服务器都连接电源交换机,当web2检测出web1出问题时,想要接替工作,又为了避免脑裂情况出现,这时,web2会发送一条指令给电源交换机,这时电源交换机会将连接web1的电源线断掉,这样就不会出现web1和web2冲突的现象

Stonish:爆头

Shoot in other node in the head

用工具实现:ipfail

为两个服务器设置参考IP(一般是网关IP)

当两台服务器认为对方出问题时,这时会ping 设置的参考IP,如果参考IP都ping不通,这时服务器会判定问题不是出在对方服务器,是自己内部出了问题,这时,会检测自己内部,并作出相应的动作

高可用集群软件:

集群环境分析及部署(基础)


高性能运算集群:

集群环境分析及部署(基础)


A包含10个子任务:a1 a2 a3 .......a10

每个子任务完成需要1小时

负载均衡集群:(单位时间内处理的子任务)

1台计算机完成任务需要10小时(处理10个子任务)

10台计算机完成任务需要10小时(总共处理100个子任务)

高性能运算集群:(缩短单个任务的执行时间,来提升效率)

1台计算机完成任务需要10小时(处理10个子任务)

10台计算机完成任务需要1小时(总共处理10个子任务)

高性能集群概念:

高性能计算集群就是将一个大的运算任务拆分,每一个节点计算其中一部分运算内容,最后再将每台计算机的处理结果汇总,得到我们想要的答案,这种运算方式就是高性能运算集群。

集群环境分析及部署(基础)

3PB的数据需要处理,这时AGENT会告诉客户端,如何分发到每个存储服务器为100G,之后,客户端会找AGENT2,询问AGENT2如何处理这些分发的数据,这时AGNET2会分别去到每个节点上运行

程序以运算处理数据,当数据被处理完之后,会将数据汇总,反馈给客户端,这个过程就是高性能运算集群。


集群环境分析及部署(基础)


负载调度器:

集群环境分析及部署(基础)

硬件:F5 citrix array

软件:

四层负载调度器  四层交换机

效率高

LVS    Linux virtual server

七层负载调度器  七层交换机

mysql proxy

nginx

haproxy

高级特性

集群环境分析及部署(基础)


四层交换机:IP+端口

七层交换机:URL或主机名或页面内容包含的高级特性

区别:

1.触发条件不同

四层:工作在传输层,转发数据依靠的是三层的ip和四层的port

七层:工作在应用层。转发数据依靠URL或主机名

2.实现原理不同

四层负载调度器:TCP连接建立一次,客户端和RS主机之间

四层交换机工作原理:(转发作用)

集群环境分析及部署(基础)

七层负载调度器:TCP连接建立两次,客户端和负载调度器;负载调度器和RS主机

七层交换机工作原理:(起到代理服务器的角色)

集群环境分析及部署(基础)


七层交换机可以根据客户发起的访问请求,做出判断,给客户相应的内容反馈!

3.应用场景不同

四层负载调度器:TCP应用为主 OA ERP

七层负载调度器:以HTTP协议为主

4.安全性不同

四层负载调度器:转发***

七层负载调度器:拦截***

IPVS:钩子函数,内核机制,在请求没有到达目的地址之前,捕获并取得优先控制权的函数。

IPVSADM:工作在用户空间,负责为ipvs内核框架编写规则,定义谁是集群服务,谁是后端真实 的服务器

LVS概述:

首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

举例:

集群环境分析及部署(基础)


解释:当外网客户端,将请求提交到负载调读器的外网卡上,这时网卡会对请求进行处理,将请求提交到内核所提供的的INPUT函数模块上 ,这个函数正常情况下,会将客户申请访问本地80端口的应用请求转发给本地应用所安装HTTP服务器上面,但是我们真正的目的是,想让负载调度器将用户的请求转发到后端的web网站节点上面去,这时我们就需要IPVS,IPVS在这里扮演的是钩子函数角色(正常情况下,所接受的请求会被转发到本地的相应服务上面,但是IPVS所扮演的钩子函数角色会在请求被转发到本地服务上面之前,将数据请求包文强制拿过来,自己先查看,如果发现用户是访问集群节点的话,会通过eth2端口,因为IPVS会保存一定的策略,自己能够判断,然后会相应的把请求转交给web1,第二次给web2,依次轮询。。。)

这时,我们会有疑问,IPVS内核模块为什么会知道把请求分别转发给web1、web2,这是因为是有IPVSadm工具来实现的

CIP:client IP 客户端IP

DIP:director IP 负载调度器内网口IP

VIP:virtual IP 虚拟IP 集群IP

RIP:realserver IP 服务器节点IP 真实服务器IP

NAT:地址转换

集群环境分析及部署(基础)

注意:

1.最多支持10台左右RS

2.集群节点(director和RS)必须在同一个网络中

3.RS的网关必须位于客户端和RS之间

4.RS可以用任意的操作系统

5.RS网关必须设置为director

DR:路由模式

集群环境分析及部署(基础)

集群环境分析及部署(基础)

优点:

大大减轻了负载调度器的压力

可以支持更多的服务器节点RS

注意:

1.RS必须和director在一个网络

2.RS可以设置公网IP或私网IP(当负载调度器坏了的话,可以直接让客户访问通过公网IP访问集群)

3.负载调度器只负责入站请求

4.集群节点的网关不能使用director

TUN:隧道模式

集群环境分析及部署(基础)

集群环境分析及部署(基础)


优点:

不受地理位置限制

注意:

1.所有节点都要有公网IP,RS并且必须配置在RIP上

2.RS一定不能使用负载调度器作为默认网关

4.必须支持隧道功能

负载调度器算法:

静态算法:只考虑算法本身,不考虑服务器状态

rr (轮循):从1开始到n结束(N=RS个数)、无状态的的调度算法,不考虑服务器性能

wrr (加权轮循):按权重比例进行调度,权重越大,负责的请求越多(权重=优先级)

sh (源地址hash):源地址散列或源地址hash,实现会话绑定,保留之前建立的会话信息。将来自于同一个ip地址的请求发送给一个真实服务器。

dh (目标地址hash):将同一个目标地址的请求,发送给同一个服务器节点。提高缓存命中率

动态算法:既要考虑算法本身,也要考虑服务器状态(原理:通过hash表记录连接状态----active/inactive)

LC (最少连接):将新的连接请求分配给当前连接数最少的服务器。。。公式:活动连接*256+非活动连接

WLC(加权最少连接):最少连接的特殊模式。。。公式:(活动连接*256+非活动连接)/权重

SED(最短期望延迟):加权最少连接的特殊模式。。。。公式:(活动连接 +1)*256/权重

NQ     (永不排队):sed的特殊模式,当某台真实服务器连接为0时,直接分配,不计算

LBLC(基于局部性的最少连接):dh的特殊模式,既要提高缓存命中率,又要考虑连接数量。先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

LBLCR(带复制的基于局部性的最少连接):LBLCR=LBLC+缓存共享机制

实验:基于NAT模式负载集群搭建

拓扑展示:

集群环境分析及部署(基础)




背景:需要五台虚拟机,图中IP为展示使用,以下操作,不一样

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)


在共享存储服务器上面配置NFS

集群环境分析及部署(基础)

集群环境分析及部署(基础)

在RS1和RS2上面分别安装Apache服务

RS1的网页页面通过挂载NFS服务器上面的首页

mount -t nfs 192.168.115.179:/share /var/www/html/

挂载之后、启动Apache服务之后,失败

chcon -R -h -t httpd_sys_content_t /var/www/html/

之后就好了

RS1的网关指向负载调度器的内网口IP

route add default gw 192.168.115.175

RS2的网页由自己创建,两个服务首页不同,方便区分

RS2的网关指向负载调度器的内网口IP

集群环境分析及部署(基础)

负载调度器:(双网卡)

开启路由转发功能

集群环境分析及部署(基础)

并执行sysctl -p刷新

安装IPVSadm软件

集群环境分析及部署(基础)

检查ipvsadm是否安装成功

集群环境分析及部署(基础)

配置

集群环境分析及部署(基础)


外网客户端验证:(每刷新一次,页面会一次出现)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)



基于DR模式的负载集群:

原理拓扑展示:

集群环境分析及部署(基础)

实验拓扑展示:

集群环境分析及部署(基础)


图上IP地址仅供参考:

ARP工作原理:

集群环境分析及部署(基础)

arp_ignore:接收到其他主机的ARP请求后的响应级别

后面参数设置的如果是0:

只要本机配置有响应的IP地址就响应

集群环境分析及部署(基础)

后面参数设置的如果是1:

仅响应请求的目的地址配置在请求到达的网络接口上

集群环境分析及部署(基础)


arp_announce:设置ARP通告的级别

0:通告网络本机所有接口的任何地址信息

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

配置:

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

集群环境分析及部署(基础)

负载调度器:

配置ifcfg0:1映射子端口,地址为集群IP(210)

优化环境配置:(/etc/sysctl.conf)

集群环境分析及部署(基础)

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

sysctl -p

查询IPVS是否安装:

grep -i "ip_vs" /boot/config-2.6.32-431.el6.x86_64集群环境分析及部署(基础)

安装ipvsadm

rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm

设置增加负载调度器,默认使用轮询

ipvsadm -A -t 192.168.115.210:80 -s rr

设置使用DR模式

ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.178:80 -g

ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.173:80 -g

ipvsadm -L -n

service ipvsadm save

共享存储服务器:

集群环境分析及部署(基础)

集群环境分析及部署(基础)


RS1配置:

配置本地回环接口IP

集群环境分析及部署(基础)

优化环境变量(/etc/sysctl.conf)

集群环境分析及部署(基础)

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

安装Apache服务,并将NFS服务器上面的主页内容挂在过来

mount -t nfs 192.168.115.179:/share /var/www/html/

集群环境分析及部署(基础)


设置一条路由,凡是请求跟集群地址(115.210)相关的信息的时候,都会交给本地回环接口处理

route add -host 192.168.115.210 dev lo:0


RS2配置:

配置本地回环映射端口:

集群环境分析及部署(基础)

优化环境:

集群环境分析及部署(基础)

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

安装Apache服务,手动创建一个主页,区分内容,以便达到实验效果

集群环境分析及部署(基础)


设置一条路由,凡是请求跟集群地址(115.210)相关的信息的时候,都会交给本地回环接口处理

route add -host 192.168.115.210 dev lo:0

客户端验证:直接访问集群的IP,进行访问,刷新会依次轮询显示页面

集群环境分析及部署(基础)

集群环境分析及部署(基础)

ipvsadm命令参数选项详细含义如下所示

-A (--add-service) 在内核的虚拟服务器列表中添加一条新的虚拟IP记录。也就是增加一台新的虚拟服务器。虚拟IP也就是虚拟服务器的IP地址。

-E (--edit-service) 编辑内核虚拟服务器列表中的一条虚拟服务器记录

-D (--delete-service) 删除内核虚拟服务器列表中的一条虚拟服务器记录

-C (--clear) 清除内核虚拟服务器列表中的所有规则

-R (--restore) 恢复虚拟服务器规则

-S (--save) 保存虚拟服务器规则,输出为-R 选项可读的格式

-a (--add-server) 在内核虚拟服务器列表的一条记录里添加一条新的Real Server记录。也就是在一个虚拟服务器中增加一台新的Real Server

-e (--edit-server) 编辑一条虚拟服务器记录中的某条Real Server记录

-d (--delete-server) 删除一条虚拟服务器记录中的某条Real Server记录

-L|-l –list 显示内核中虚拟服务器列表

-Z (--zero) 虚拟服务器列表计数器清零(清空当前的连接数量等)

--set tcp tcpfin udp 设置连接超时值

-t 说明虚拟服务器提供的是tcp服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-u 说明虚拟服务器提供的是udp服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-f  fwmark 说明是经过iptables标记过的服务类型

-s  此选项后面跟LVS使用的调度算法

有这样几个选项: rr|wrr|lc|wlc|lblc|lblcr|dh|sh

默认的调度算法是: wlc

-p  [timeout] 在某个Real Server上持续的服务时间。也就是说来自同一个用户的多次请求,将被同一个Real Server处理。此参数一般用于有动态请求的操作中,timeout 的默认值为360 分钟。例如:-p 600,表示持续服务时间为600分钟。

-r 指定Real Server的IP地址,此选项后面跟如下格式:

 [real-server-ip:port]

-g (--gatewaying) 指定LVS 的工作模式为直接路由模式(此模式是LVS 默认工作模式)

-i (-ipip) 指定LVS 的工作模式为隧道模式

-m (--masquerading) 指定LVS 的工作模式为NAT模式

-w (--weight) weight 指定Real Server的权值

-c (--connection) 显示LVS目前的连接信息 如:ipvsadm -L -c

-L --timeout 显示“tcp tcpfin udp”的timeout值,如:ipvsadm -L --timeout

-L --daemon 显示同步守护进程状态,例如:ipvsadm -L –daemon

-L  --stats 显示统计信息,例如:ipvsadm -L –stats

-L  --rate 显示速率信息,例如:ipvsadm -L  --rate

-L  --sort 对虚拟服务器和真实服务器排序输出,例如:ipvsadm -L --sort

注: 保存添加的虚拟ip记录和ipvsadm的规则可以使用service ipvsadm save,还可以用-S或--save。清除所有记录和规则除了使用-C,还以使用--clear。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI