HA集群Word格式文档下载.docx
《HA集群Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《HA集群Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
存储方面,使用双控制器的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,目的:
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:
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:
Node1节点1
R3
RIP:
1.0.0.3VIP:
Node2节点2
R4
1.0.0.4VIP:
步骤:
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:
#scp/etc/hostsr4:
#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
///media/Cluster
#scp/etc/yum.repos.d/rhel-debuginfo.repor2:
/etc/yum.repos.d/
#scp/etc/yum.repos.d/rhel-debuginfo.repor3:
#scp/etc/yum.repos.d/rhel-debuginfo.repor4:
#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"
r3=node1'
#sshr4"
r4=node2'
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激活。
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