HA集群.docx
- 文档编号:4395893
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:16
- 大小:274.63KB
HA集群.docx
《HA集群.docx》由会员分享,可在线阅读,更多相关《HA集群.docx(16页珍藏版)》请在冰豆网上搜索。
HA集群
1,集群:
是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的平台。
2,集群的分类:
1)HighPerformanceComputeclutering(HPC高性能计算集群,用以科学领域)。
2)High-availability(HA高可用集群)。
3)Load-balanceclutering(LB负载均衡集群)。
3,HA是一套软件和硬件组成的集群
HA不解决实际完整性问题。
只有硬件不是HA,叫热备,即人为的切换使用备用机,F5叫热备。
4,HA三种实现方式:
1)主从方式,包含两台服务器及一个或多个服务。
一台服务器器运行服务,另外一台作为备份服务。
2)对称方式,包含两台服务器及一个或多个服务,两台服务器都运行服务并互为备份。
3)多机方式,由多台服务器及多个服务组成。
故障时切换至一组服务器中的一台。
5,
主从方式
对称方式
示意图
主从方式和对称方式的实现方式只是在细节配置方面不同,他们都同样包含内部网络链路、端口检测链路和共享磁盘阵列。
多机方式
6,HA集群中的技术词汇:
服务(Server):
这里单指一些提供集群功能的资源,比如IP地址、共享存储设备等。
浮动IP(FloatIP):
能够浮动的IP地址,这里不是动态IP,动态IP在LB中使用。
成员服务器或节点(MemberServerorNode):
集群中实际提供服务资源的节点。
失效域(FailoverDomain):
HA集群中提供特定资源的成员服务器的集合,失效域包含一个或多个服务器。
在一个服务器宕机后,此服务器可以转移资源的备用服务器。
在设计集群时,不能让所有的成员服务器都是失效域的成员,也不能一个成员也没有。
失效域过大,浪费资源,而且服务切换时间过长;失效域过小,可用性过低则不能达到5个9。
心跳(Heartbeat):
通过网络数据包的方式判断对方是否正常运行的一种方式。
共享存储(ShareStorage):
为保证HA集群在服务进行切换的时候不会出现数据不一致的情况,可以使光纤磁盘柜,ISCSI,或者是特定的网络服务比如NFSNAS。
单一故障点(SinglePointOfFailure:
SPOF):
存储方面,使用双控制器的RAID,而RAID又可以使用RAID0,1,5;网络方面使用多条网络线路绑定成为一条虚拟线路使用。
电源使用UPS冗余不间断电源。
等其他的都硬件都使用备份。
仲裁(Quorum):
为保证服务器及其所运行的服务能够正常,采用的一种在共享磁盘中保存成员服务器信息的一种方法。
通俗讲就是在服务器出现故障时,判断谁接替谁接着提供不间断服务。
失效迁移(Failover):
当成员服务器的硬件或软件出现故障时,集群为保证服务的持续运转,所做的切换过程。
监视器(Watchdog):
持续监视对方服务器是否存活的一套硬件或软件,不是那个心跳线,而是使用心跳线检测对方的硬件或软件。
可编程电源控制器(ProgramablePowerControllerorSmartPowerSwitch):
宕机是由于软件原因造成时,服务器很有可能占据那个浮动IP或其他服务资源,如果此时FloatIP浮动到备用机后,会造成ip地址冲突。
此服务是自动的,当发现故障时,会自动断电,及时会造成不正常关机。
LB集群
1,概念:
使用专门的路由算法将数据包分散到多个真实服务器中进行处理,从而到达负载均衡的作用。
当单台服务器性能升级到一定程度时,再升级就不会得到更大的效果,此时可以使用LB将请求分发到多个服务器上。
2,实现方式:
硬件方式:
F5
软件方式:
LVS、Nginx、HAProxy、Bind
硬件的:
并发请求数
F5,BigIP:
1000w
IBM,A10:
600W
Critrix,Netscaler:
500w
价格,性能依次降低。
软件:
LVS(LinuxVirtualServer)
HAproxy
nginx
varnish、squid
3,7层负载均衡:
应用层的负载均衡:
Nginx、HAProxy
4层负载均衡:
LVS(某些在3层)
3层负载均衡:
LVS(需要判断工作模式)
LVS集群简介
1,LVS基于Linux内核实现四层或三层负载均衡调度。
也是路由方式。
LVS基于内核的netfilter模块,而lvs本省也是linux内核的一个补丁(不同于IPTABLES)
2,LVS最先采用IP隧道方式使成员服务器可以跨越多个子网。
3,组成部分:
IPVS内核模块:
是内核的补丁模块,结合netfilter模块工作。
IPVSadm:
控制LVS工作的客户端软件,但是piranha、keepalive并不是使用它,而是调用LVS相应的程序接口。
控制端软件:
piranha、keepalive(是两种控制方式,piranha相对轻量级)。
4,lvs三种路由方式:
VS-NAT、VS-TUN、VS-DR。
5,VS-NAT实现方式
NAT:
(NetworkAddressTranslation,网络地址转换),将内部网络的私有IP地址翻译成全球唯一的公网IP地址,解决了IP地址不足和隐藏内部网络细节。
NAT的实现方式:
Ø静态转换(StaticTranslation)。
Ø动态转换(DynamicTranslation)。
Ø端口多路复用(PortAddressTranslation,PAT)
1)静态转换就是将内部网络的私有IP地址转换为公有合法IP地址,IP地址的对应关系是一对一的,是不变的。
2)动态转换是指将内部网络的私有地址转换公有地址,IP地址的对应关系是不确定的、随机的,所有被授权方为互联网的私有ip地址可随机转换为任何指定的合法的外部IP地址。
也就是说,只要指定哪些内部地址可以进行NAT转换,以及哪些可用的合法IP地址可以作为外部地址,就可以进行转换了。
动态转换也可以使用多个合法地址集。
但是动态转换也是一对一的方式,所以内部网络同时访问Internet的主机数要少于配置的合法地址集中的IP地址数,才可以使用动态转换。
3)端口多路复用是改变数据包的源IP地址和源端口并进行端口转换,即端口地址转换采用端口多路复用方式。
A.当源2.0.0.1:
7000到达LB分发机1.0.0.1:
80后,LB分发机先对用户过来的外网IP地址进行缓存,然后经过NAT地址转换:
将2.0.0.1:
7000换为目的IP192.168.1.100:
80,目的IP也是LB分发机经过计算得到的。
此时源:
2.0.0.1:
7000,目的:
192.168.1.100:
80
B.当RealServerA回复时,源192.168.1.100:
80,目的:
2.0.0.1:
7000
C.RealServer的回复到达LB分发机后,LB分发再次使用NAT转换,根据记录将源修改为:
1.0.0.1:
80,此个过程对于RealServer都是透明的。
6,VS-TUN模式
针对VS-NAT的弱点而设计:
VS-NAT的请求量不是很大,而当回复时,如果回复的是大型文件则LB分发机会成为瓶颈,而Qos无法解决问题,所以VS-NAT模式只适用于10-20台。
A.在LB分发机上不会有任何地址转换的事情了,分发机保存的记录是与后端的多个主机所建立的相应的隧道。
当RealServer得到请求时,会通过自己的网络直接返回给客户端,而不用再经过LB分发机。
B.相应的请求到达LB分发机后,通过隧道封装的方式将数据包转发给后端服务器。
C.在后端主机上也有和LB一样的IP,但由于是在不同的网段中,不会冲突。
D.可以使LB分发机与RealServer不在一个物理网络中
E.隧道是虚拟的连接但不是VPN。
F.但是会碰到非原地址路由问题,需要在机房的路由上配置允许非原地址数据包转发。
7,VS-DR方式(最常用)
常用词汇缩写:
ClientIPAdressCIP客户端地址。
DirectorGatewayDGW它是LB分发机的内部IP,也是内部网关。
VirtualIPVIP虚拟IP,LB集群对外提供服务的唯一入口,也是公网IP。
PrimaryIPPIP主LB分发机的内网IP,就是与备用LB分发机上的IP对应IP。
用作心跳线IP。
SlaveIP
DirectorIPDIP可以是DGW和PIP、SIP的IP,此时LB分发机既是内网的网关DIP,又是LB分发机的内部IP
如果整个内网使用单独的路由器连接到公网,则那个路由器则是DIP
RealServerIPRIP真正提供相应服务的后端服务器IP地址。
当只有LB分发机A与B时,他们形成了HA集群
当只有LB分发机A或B与后端节点时,就形成了LVS的LB集群,
PIP、SIP、RIP的作用:
A.检测后端服务器及备用LB分发机的存在、存活与否。
B.检测后端服务器是否加入、退出了这个集群。
VIP不会引起IP地址冲突:
使用arptables模块将对应IP的arp广播关掉。
即server不会广播自己有VIP,也不会接受含有谁是VIP的广播信息。
工作原理:
1),用户发起web请求:
源:
CIP:
CPORT
目标:
VIP:
80
2),此时,LB分发机保存的是后端RealServer的MAC地址,与前面的nat转换不同。
S1:
MAC1
S2:
MAC2
(这个MAC地址是通过PIP、SIP、RIP之间的的心跳监测获得的。
)
LB分发机通过TCP/IP协议的第二层数据链路层的mac地址进行通信,然后将数据帧直接转发传输给RealServer.
RealServer正因为配置了VIP,所以解封装到网络层的时候看到目标IP是发给自己的,所以才不会产生错误。
3),当RealServer恢复请求时就会直接通过物理链路发送给外网,不会再经过LB分发机。
8,LVS的调度算法:
lvs分发机需要将外部客户请求分发给后端真实服务器处理。
这需要一种算法。
1)循环调度(Round-RobinSchedulingRR):
简单说是轮询,将请求按照后端真实主机的顺序一一分发。
缺点是当后端服务器的性能不一致时,就会产生分配不均的情况。
2)加权循环调度(WeightRound-RobinSchedulingWRR):
根据权重值,给性能好的服务器非配较多请求,给性能差的服务器分配较少的请求。
3)最少连接(Least-ConnectionLC):
在使用WRR模式时,举例当网站为一个小说阅读类网站时,用户的请求被分配到性能好的服务器上后,由于用户一直保持连接看小说,而后续的请求依然按照设定的权重值来分配资源,就会造成性能好的服务器保持的连接数越来越多,进而越来越忙,而性能差的服务器想对并不忙的状态。
所以出现了LC模式。
4)加权最少连接(WeightLeast-ConnectionWLC默认设置):
依然为了照顾服务器的性能不一致,而加入了权重概念。
5)基于地区的最少连接调度(Locality-BasedLeast-ConnectionSchedulingLBLC):
常用与代理缓存服务器。
6)带有复制调度的基于地区的最少连接调度(Locality-BasedLeast-ConnectionSchedulingwithReplicationScheulingLBLCR):
常用与代理缓存服务器。
7)目标散列调度(DestionationHashSchedulingDH):
常用与代理缓存服务器。
8)源散列调度(SourceHashSchedulingSH):
9)最少队列调度(NeverQueueSchedulingNQ):
9,“权”的概念:
Ø“权”是相对的比例。
Ø“权”是对服务器性能的评估。
使用WLC应该注意的问题:
LB分发机对新加入的服务器加入瞬间的短期分配不均衡问题)。
例子:
当S1,S2的负载已经不能满足请求,而新增加一台成员服务器时,LB分发主机会认为新加入的S3太空闲,而在瞬间给S3大量的请求。
而不是按照我们预想的逐步增加请求数。
所以,为了实现平稳上升请求数量,应该在LB分发机上打开quiesce设置,首先清空LB分发机当前的分发列表,然后重新分配新的请求数量。
(注意不是清空实际的链接)
10,LVS调度持续性:
Ø保持用户连接和session的必要性
ØLVS提供两种解决方法:
⏹持续性(persistence)
⏹防火墙标记(firewallmarks)
例子:
后端有两个RealServer,上面运行的都是论坛,
当用户第一次访问时,LB分发机把请求发送给S1,然后做了登录操作,建立了session是对话链接,在这个session中,用户已经登录,但是只有S1知道。
当用户第二次访问时,LB分发机把请求又发送给了S2,此时刷新页面后发现又成了未登录状态,因为S2不知道用户在S1中的session会话链接。
解决方法:
1)使用户一直访问S1。
2)RealServer之间同步session,也叫Session复制。
3)在S1,S2后面加入一个共享存储,让所有RealServer把session写入同一个存储中,然后读取时,就会session同步。
实际方法:
✓持续性:
在LB分发机进行分发时,将用户相应的数据包的首部做一个记录,然后用户再次访问时分配给同一台RealServer。
✓防火墙标记:
在路由器转发数据的时候,在数据包的首部内容中添加一部分数值,这样打了同样标记的数据包就会被识别出来。
(这里是在IP层做标记)
在用户跨越端口(80和443)访问时,应该保持用户的状态,所以应该让用户的访问一直在S1上面,而不能在跳转时访问S2的443端口。
当用户访问80端口时,就给他打一个A标签,当用户跳转443端口时,分发时发现数据包是A标签,就仍然给S1
LVS配置实操(DR模式)
主机名
IP地址
LB1主分发机
R1
PIP:
1.0.0.1VIP:
1.0.0.100
LB2从分发机
R2
SIP:
1.0.0.2VIP:
1.0.0.100
Node1节点1
R3
RIP:
1.0.0.3VIP:
1.0.0.100
Node2节点2
R4
RIP:
1.0.0.4VIP:
1.0.0.100
步骤:
1)使用hosts文件件配置IP对应的主机名,这里使用RIP、PIP、SIP。
然后同步yum源和hosts文件。
最后安装各个主机的httpd服务,并启动。
#vim/etc/hosts
1.0.0.1r1
1.0.0.2r2
1.0.0.3r3
1.0.0.4r4
#scp/etc/hostsr2:
/etc/
#scp/etc/hostsr3:
/etc/
#scp/etc/hostsr4:
/etc/
#vim/etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]
name=RedHatEnterpriseLinux$releasever-$basearch-Debug
baseurl=file:
///media/Server/
enabled=1
gpgcheck=0
gpgkey=file:
///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-Cluster]
name=RedHatEnterpriseLinux$releasever-$basearch-Cluster
baseurl=file:
///media/Cluster
enabled=1
gpgcheck=0
gpgkey=file:
///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#scp/etc/yum.repos.d/rhel-debuginfo.repor2:
/etc/yum.repos.d/
#scp/etc/yum.repos.d/rhel-debuginfo.repor3:
/etc/yum.repos.d/
#scp/etc/yum.repos.d/rhel-debuginfo.repor4:
/etc/yum.repos.d/
#yumcleanall
#yumlist
#sshr2yumcleanall
#sshr2yumlist
#sshr3yumcleanall
#sshr3yumlist
#sshr4yumcleanall
#sshr4yumlist
#yuminstallhttpd
#sshr2yuminstallhttpd
#sshr3yuminstallhttpd
#sshr4yuminstallhttpd
#echo"r1=LB1">/var/www/html/index.html
#sshr2"echo'r2=LB2'>/var/www/html/index.html"
#sshr3"echo'r3=node1'>/var/www/html/index.html"
#sshr4"echo'r4=node2'>/var/www/html/index.html"
2)LB分发机上的软件安装配置
安装ipvsadm和piranha软件。
#yuminstallipvsadmpiranha-y
#sshr2yuminstallipvsadmpiranha-y
在r1上面配置piranha的登录密码,然后启动piranha-gui,再启动httpd服务器
#piranha-passwd
#/etc/init.d/piranha-guistart
在r1浏览器中输入:
http:
//127.0.0.1:
3636,输入piranha的用户名密码登录。
在页面中有CONTROL/MONITORING(控制/监控),GLOBALSETTINGS(全局设置),REDUNDANCY(冗余),VIRTUALSERVERS(虚拟服务器)几个选项卡。
1),CONTROL/MONITORING(控制/监控)
其中Updateinformationnow是将修改的配置保存到配置文件的按钮,否则所有的修改只是保存在浏览器的缓存中。
2),GLOBALSETTINGS(全局设置)配置主分发机及lvs模式的配置。
PrimaryserverpublicIP:
1.0.0.1
PrimaryserverprivateIP:
(为提供冗余,而备用的一个线路IP,可以为空)
(Maybeblank)
Usenetworktype:
(设置lvs的模式)
(Currenttypeis:
direct )
最后点击ACCEPT保存
3)REDUNDANCY(冗余)配置从分发机等,开始时是关闭的,因为单台分发机也是可以运行的。
点击ENABLE激活
RedundantserverpublicIP:
1.0.0.2(从分发机的SIP)
Heartbeatinterval(seconds):
6(每隔多久做一次心跳监测,默认6秒)
Assumedeadafter(seconds):
18(多少秒没有反馈时,算对方死亡。
默认18,就是三次检测)
Heartbeatrunsonport:
539(在哪个端口上做心跳检测,默认539注意防火墙)
MonitorNIClinksforfailures:
网卡检测
Syncdaemon:
同步服务状态,将服务变化同步到从分发机上面。
4)VIRTUALSERVERS(后端真实服务器)
首先点击ADD,再EDIT,当编辑好后,使用(DE)ACTIVE激活当前的配置。
EDIT时也会有三个选项卡
VIRTUALSERVER选项卡
NAME:
httpd(服务的名字)
Applicationport:
80(请求端口)
Protocol:
tcp
VirtualIPAddress:
1.0.0.100(VIP地址)
VirtualIPNetworkMask:
255.0.0.0
SorryServer:
当所有RealServer都宕机后,指定访问外部的一台宕机显示。
FirewallMark:
防火墙标签,保持session连续性的解决方案。
Device:
eth1:
1(在哪个设备上配置VIP,就写哪个设备)
Re-entryTime:
15当一台RealServer连入集群时,等待多久才将其加入集群服务列表。
防止当加入后,由于物理原因造成的总是上线、下线的不稳定现象。
Servicetimeout:
当检测不到RealServer时,多少秒后认定其死亡。
Quiesceserver:
当认定RealServer死亡后,是否将其踢出列表。
no立即。
yes将其权重值清零。
旧的访问继续,新的访问不再分配。
基于间歇性的网络中断。
Loadmonitoringtool:
rup和ruptime是探测后端服务器连接和承载压力的工具,但是在某些算法中会造成分发机分配不均的问题,建议使用none。
Scheduling:
使用的算法。
WLC默认。
Persistence:
持续性和session保持的设置,当为10时,表示用户在10秒内发起的连接都分配到同一台后端服务器。
实验小值,生产大值。
PersistenceNetworkMask:
在一定的子网范围内,提供持续性。
不常用。
最后点击ACCEPT。
REALSERVER选项卡
先ADD2条记录,再EDIT,最后(DE)ACTIVATE激活。
NAME:
r3
Address:
1.0.0.3
Port:
可以不配
Weight:
1,配置权重值。
最后ACCEPT,然后再编辑第二条记录。
MONITORINGSCRIPTS
在sending中输入testlink%h(这里是手动写的脚本,发送httpd请求或其他请求,看是否有正常的回复,如果返回值是oK,表示正常。
h表示每台主机hostname。
点击ACCEPT。
最后激活各个配置。
然后回到第一个选项卡CONTROL/MONITORING(控制/监控),然后保存配置文件。
然后去/etc/sysconfig/ha/lvs.conf查看配置文件。
上面的serial_no值是每更新一次,就会有相应的变化。
然后将此lvs.conf复制到从分发机r2上面。
5)编写刚刚提到的testlink脚本
#!
/bin/bash
/usr/bin/links-dump1$1>/dev/null2>&1
if[0-eq$?
];then
echook
else
echofail
fi
给定运行权限
#chmoda+xtestlink
复制到/bin目录下。
#cptestlink/bin/
拷贝给r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HA 集群