Centos65搭建集群环境.docx
- 文档编号:10639930
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:24
- 大小:380.72KB
Centos65搭建集群环境.docx
《Centos65搭建集群环境.docx》由会员分享,可在线阅读,更多相关《Centos65搭建集群环境.docx(24页珍藏版)》请在冰豆网上搜索。
Centos65搭建集群环境
Centos6.5搭建HA(lvs+heartbeat)集群环境过程
引言
本文档指导服务器开发或维护人员配置高性能的集群环境,附录还收集了一些服务器搭建的其它相关技术
本文档的预期读者是服务器开发或服务器维护技术人员
概述:
LVS集群结构
一般的LVS+heartbeat集群的体系结构以下图所示。
LVS集群的体系结构
1)LoadBalancer层:
位于整个集群系统的最前端,有一台或者多台负载调度器(DirectorServer)组成,LVS模块就安装在DirectorServer上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给ServerArray层的应用服务器(RealServer)上。
同时,在DirectorServer上还要安装对RealServer服务的监控模块Ldirectord,此模块用于监测各个RealServer服务的健康状况。
在RealServer不可用时把它从LVS路由表中剔除,恢复时重新加入。
2)服务器池(serverpool),是一组真正执行客户请求的服务器,由一组实际运行应用服务的机器组成,RealServer可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个RealServer之间通过高速的LAN或分布在各地的WAN相连接。
在实际的应用中,DirectorServer也可以同时兼任RealServer的角色。
3)后端存储(backendstorage),它为服务器池提供一个共享的存储区,是为所有RealServer提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Redhat的GFS文件系统,oracle提供的OCFS2文件系统等。
4)从整个LVS结构可以看出,DirectorServer是整个LVS的核心,目前,用于DirectorServer的操作系统只能是Linux和FreeBSD,linux2.6内核不用任何设置就可以支持LVS功能,对于RealServer,几乎可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
DirectorServer服务器上安装了LVS和heartbeat两个核心软件。
LVS通过负载均衡算法把用户请求分发到RealServer服务器;heartbeat实现DirectorServer单点失败问题,通过heartbeat的心跳检测和资源管理,当主DirectorServer服务器失效后,备DirectorServer服务器立即接管服务。
实现DirectorServer服务不会中断。
LVS简介:
参考网址:
LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org,中文官方站点是http:
//zh.linuxvirtualserver.org。
现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
使用LVS技术要达到的目标是:
通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。
从而以低廉的成本实现最优的服务性能。
LVS集群特点:
1)IP负载均衡技术
负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的是IP负载均衡技术。
LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:
安装在DirectorServer上,同时在DirectorServer上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。
这个虚拟IP一般称为LVS的VIP,即VirtualIP。
访问的请求首先经过VIP到达负载调度器,然后由负载调度器从RealServer列表中选取一个服务节点响应用户的请求。
当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的RealServer节点,而RealServer节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR,详述如下:
1、VS/NAT:
即(VirtualServerviaNetworkAddressTranslation)
也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的RealServer地址,同时报文的目标端口也改成选定的RealServer的相应端口,最后将报文请求发送到选定的RealServer。
在服务器端得到数据后,RealServer返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
可以看出,在NAT方式下,用户请求和响应报文都必须经过DirectorServer地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。
2、VS/TUN:
即(VirtualServerviaIPTunneling)
也就是IP隧道技术实现虚拟服务器。
它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个RealServer,而这个RealServer将直接响应用户的请求,不再经过前端调度器,此外,对RealServer的地域位置没有要求,可以和DirectorServer位于同一个网段,也可以是独立的一个网络。
因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
3、VS/DR:
即(VirtualServerviaDirectRouting)
也就是用直接路由技术实现虚拟服务器。
它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到RealServer,而RealServer将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。
这种方式是三种负载调度机制中性能最高最好的,但是必须要求DirectorServer与RealServer都有一块网卡连在同一物理网段上。
2)负载调度算法
负载调度器是根据各个服务器的负载情况,动态地选择一台RealServer响应用户请求,那么动态选择是如何实现呢,其实也就是我们这里要说的负载调度算法,根据不同的网络服务需求和服务器配置,IPVS实现了如下八种负载调度算法,这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其它资料。
1、轮叫调度(RoundRobin)
“轮叫”调度也叫1:
1调度,调度器通过“轮叫”调度算法将外部用户请求按顺序1:
1的分配到集群中的每个RealServer上,这种算法平等地对待每一台RealServer,而不管服务器上实际的负载状况和连接状态。
2、加权轮叫调度(WeightedRoundRobin)
“加权轮叫”调度算法是根据RealServer的不同处理能力来调度访问请求。
可以对每台RealServer设置不同的调度权值,对于性能相对较好的RealServer可以设置较高的权值,而对于处理能力较弱的RealServer,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。
充分合理的利用了服务器资源。
同时,调度器还可以自动查询RealServer的负载情况,并动态地调整其权值。
3、最少链接调度(LeastConnections)
“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。
如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
4、加权最少链接调度(WeightedLeastConnections)
“加权最少链接调度”是“最少连接调度”的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。
5、其它算法
其它四种调度算法分别为:
基于局部性的最少链接(Locality-BasedLeastConnections)、带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplication)、目标地址散列(DestinationHashing)和源地址散列(SourceHashing),对于这四种调度算法的含义,本文不再讲述,如果想深入了解这其余四种调度策略的话,可以登陆LVS中文站点zh.linuxvirtualserver.org,查阅更详细的信息。
3)其它特点
1、高可用性
LVS是一个基于内核级别的应用软件,因此具有很高的处理性能,用LVS构架的负载均衡集群系统具有优秀的处理能力,每个服务节点的故障不会影响整个系统的正常使用,同时又实现负载的合理均衡,使应用具有超高负荷的服务能力,可支持上百万个并发连接请求。
如配置百兆网卡,采用VS/TUN或VS/DR调度技术,整个集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。
2、高可靠性
LVS负载均衡集群软件已经在企业、学校等行业得到了很好的普及应用,国内外很多大型的、关键性的web站点也都采用了LVS集群软件,所以它的可靠性在实践中得到了很好的证实。
有很多以LVS做的负载均衡系统,运行很长时间,从未做过重新启动。
这些都说明了LVS的高稳定性和高可靠性。
3、适用环境
LVS对前端DirectorServer目前仅支持Linux和FreeBSD系统,但是支持大多数的TCP和UDP协议,支持TCP协议的应用有:
HTTP,HTTPS,FTP,SMTP,,POP3,IMAP4,PROXY,LDAP,SSMTP等等。
支持UDP协议的应用有:
DNS,NTP,ICP,视频、音频流播放协议等。
LVS对RealServer的操作系统没有任何限制,RealServer可运行在任何支持TCP/IP的操作系统上,包括Linux,各种Unix(如FreeBSD、SunSolaris、HPUnix等),Mac/OS和Windows等。
4、开源软件
LVS集群软件是按GPL(GNUPublicLicense)许可证发行的自由软件,因此,使用者可以得到软件的源代码,并且可以根据自己的需要进行各种修改,但是修改必须是以GPL方式发行。
5、IPVS的管理客户端软件是ipvsadm
Heartbeat简介
叁考网址:
Heartbeat的概念
Linux-HA的全称是High-AvailabilityLinux,它是一个开源项目。
这个开源项目的目标是:
通过社区开发者的共同努力,提供一个增强Linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。
其中Heartbeat就是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有HA软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享IP地址的所有者等。
自1999年开始到现在,Heartbeat在行业内得到了广泛的应用,也发行了很多的版本,可以从Linux-HA的官方网站http:
//www.linux-ha.org下载到Heartbeat的最新版本。
1)Heartbeat的组成
Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能等,主要分为以下几大部分。
1、heartbeat:
节点间通信检测模块。
2、ha-logd:
集群事件日志服务。
3、CCM(ConsensusClusterMembership):
集群成员一致性管理模块。
4、LRM(LocalResourceManager):
本地资源管理模块。
5、StonithDaemon:
使出现问题的节点从集群环境中脱离。
6、CRM(ClusterResourceManagement):
集群资源管理模块。
7、Clusterpolicyengine:
集群策略引擎。
8、Clustertransitionengine:
集群转移引擎。
Heartbeat结构如下图所示
Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序。
要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail、Mon和Ldirector等。
Heartbeat自身包含了几个插件,分别是ipfail、Stonith和Ldirectord,介绍如下。
ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并做出合理的反应。
为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时做出转移措施。
Stonith插件可以在一个没有响应的节点恢复后,合理接管集群服务资源,防止数据冲突。
当一个节点失效后,会从集群中删除。
如果不使用Stonith插件,那么失效的节点可能会导致集群服务在多于一个节点运行,从而造成数据冲突甚至是系统崩溃。
因此,使用Stonith插件可以保证共享存储环境中的数据完整性。
Ldirector是一个监控集群服务节点运行状态的插件。
Ldirector如果监控到集群节点中某个服务出现故障,就屏蔽此节点的对外连接功能,同时将后续请求转移到正常的节点提供服务。
这个插件经常用在LVS负载均衡集群中。
关于Ldirector插件的使用,将在后续章节详细讲述。
同样,对于操作系统自身出现的问题,Heartbeat也无法监控。
如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点资源无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。
针对这个问题,就需要在Linux内核中启用一个叫watchdog的模块。
watchdog是一个Linux内核模块,它通过定时向/dev/watchdog设备文件执行写操作,从而确定系统是否正常运行。
如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。
在Linux中完成watchdog功能的软件叫softdog。
softdog维护一个内部计时器,此计时器在一个进程写入/dev/watchdog设备文件时更新。
如果softdog没有看到进程写入/dev/watchdog文件,就认为内核可能出了故障。
watchdog超时周期默认是一分钟,可以通过将watchdog集成到Heartbeat中,从而通过Heartbeat来监控系统是否正常运行。
2)Heartbeat的工作原理
1、集群成员一致性管理模块(CCM)
CCM用于管理集群节点成员,同时管理成员之间的关系和节点间资源的分配。
Heartbeat模块负责检测主次节点的运行状态,以决定节点是否失效。
ha-logd模块用于记录集群中所有模块和服务的运行信息。
2、本地资源管理器(LRM)
LRM负责本地资源的启动、停止和监控,一般由LRM守护进程lrmd和节点监控进程StonithDaemon组成。
lrmd守护进程负责节点间的通信;StonithDaemon通常是一个Fence设备,主要用于监控节点状态,当一个节点出现问题时处于正常状态的节点会通过Fence设备将其重启或关机以释放IP、磁盘等资源,始终保持资源被一个节点拥有,防止资源争用的发生。
3、集群资源管理模块(CRM)
CRM用于处理节点和资源之间的依赖关系,同时,管理节点对资源的使用,一般由CRM守护进程crmd、集群策略引擎和集群转移引擎3个部分组成。
集群策略引擎(Clusterpolicyengine)具体实施这些管理和依赖;集群转移引擎(Clustertransitionengine)监控CRM模块的状态,当一个节点出现故障时,负责协调另一个节点上的进程进行合理的资源接管。
4、heartbeat集核心模块
在Heartbeat集群中,最核心的是Heartbeat模块的心跳监测部分和集群资源管理模块的资源接管部分。
心跳监测一般由串行接口通过串口线来实现,两个节点之间通过串口线相互发送报文来告诉对方自己当前的状态。
如果在指定的时间内未受到对方发送的报文,就认为对方失效,这时资源接管模块将启动,用来接管运行在对方主机上的资源或者服务。
安装和配置集群软件
安装前准备工作
准备四台服务器,都安装centos6.5操作系统,其中两台做DirectorServer,另外两台做RealServer服务器,DirectorServer服务器是双网卡。
一根交叉网线连接DirectorServer两台服务器的网卡。
网络及IP地址规划:
DirectorServer
节点类型
IP地址规划
主机名
类型
主用节点
eth0:
192.168.13.215
h1
publicip
eth1:
10.1.1.1
privateip
eth0:
0:
192.168.13.195
virtualip
备用节点
eth0:
192.168.13.194
h2
publicip
eth1:
10.1.1.2
privateip
修改eth1网卡IP地址
修改/etc/sysconfig/network-scripts/ifcfg-eth1。
修改前可以先备份一下,在文件输入
DEVICE=eth1
HWADDR=6C:
92:
BF:
07:
93:
B9
TYPE=Ethernet
UUID=bd2f490a-f115-465a-9807-8a026f571576
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO=dhcp
BOOTPROTO=static
BROADCAST=10.1.1.255
IPADDR=10.1.1.1#h2改成10.1.1.2
NETMASK=255.255.255.0
重启网络:
servicenetworkrestart
10.1.1.1和10.1.1.2互ping一下,如果通了就ok
安装和配置heartbeat
heartbeat是实现DirectorServer核心主备软件,实现DirectorServer单点失效和服务器主备互换功能,这个软件安装到DirectorServer服务器,主备都需要安装。
安装heartbeat
安装heartbeat比较简单,执行下面命令可以安装到服务器
yum-yinstallheartbeat*#主备都要执行
注:
如果执行yum-yinstallheartbeat*将显示找不到包,需要下载EPEL包和安装,按下面方法解决。
yum-yinstallwget#安装wget,如果已经安装则跳过
wgethttp:
//dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm#下载epel包
rpm-ivhepel-release-6-8.noarch.rpm#安装epel
yum-yinstallheartbeat*
出现如下图所示表示安装成功
配置heartbeat
配置heartbeat只需要配置三个文件,ha.cf;authkeys;haresources。
拷贝配置文件到指定目录
cd/usr/share/doc/heartbeat-3.0.4/
cpha.cfauthkeysharesources/etc/ha.d/
修改ha.cf文件
vim/etc/ha.d/ha.cf
在文件中修改下列选项,加上#号就是不开启
#debugfile/var/log/ha-debug#用于记录heartbeat的调试信息,加上#号就是不开启
logfile/var/log/ha-log#指名heartbeat的日志存放位置。
logfacilitylocal0#如果未定义上述的日志文件,那么日志信息将送往local0(对应的#/var/log/messages),如果这3个日志文件都未定义,那么heartbeat默认情况下将在/var/log下建立ha-debug和ha-log来记录相应的日志信息。
bcasteth1#指明心跳使用以太网广播方式,并且是在eth1接口上进行广播。
keepalive2#发送心跳报文的间隔,默认单位为秒,如果你毫秒为单位,那么需要在后面跟ms单位,如1500ms即代表1.5s
deadtime30#指定若备用节点在30秒内没有收到主节点的心跳信号,则立即接管主节点的服务资源。
warntime10#指定心跳延迟的时间为10秒。
当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务。
发出最后的心跳警告信息的间隔。
initdead120#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。
取值至少为deadtime的两倍。
udpport694#设置广播/单播通信使用的端口,694为默认使用的端口号
#baud19200#设置串行通信的波特率。
这里不启用
#serial/dev/ttyS0#选择串行通信设备,用于双机使用串口线连接的情况。
如果双机使用以太网连接,则应该关闭该选项。
#ucasteth0192.168.60.132#采用网卡eth0的udp单播来组织心跳,后面跟的
IP地址应为双机对方的IP地址。
#mcasteth0225.0.0.169410#采用网卡eth0的Udp组播来组织心跳,如果采用组播通讯,在这里可以设置组播通讯所使用的接口,绑定的组播ip地#址(在224.0.0.0-239.255.255.255间),通讯端口,ttl(timetolive)所能经过路由的跳数,是否允许环回(也就是本地发出的数据包时候还接收)一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Centos65 搭建 集群 环境
