首页 > 代码库 > HA集群详细配置和实例

HA集群详细配置和实例

一.集群的介绍

二.集群需要的软件

三.集群的配置

四.实例讲述集群






一.集群的介绍


集群的概念


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

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


HA==high available 二台服务器一台主一台从,主出故障后从继续工作


使用集群的目的


提高性能

一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机器计算也很难胜任。这时,一般都使用计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。

降低成本

通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用超级计算机相比已属相当便宜。在达到同样性能的条件下,采用计算机集群比采用同等运算能力的大型计算机具有更高的性价比。

提高可扩展性

用户若想扩展系统能力,不得不购买更高性能的服务器,才能获得额外所需的CPU 和存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。

增强可靠性

集群技术使系统在故障发生时仍可以继续工作,将系统停运时间减到最小。集群系统在提高系统的可靠性的同时,也大大减小了故障损失。



集群的分类


科学集群

科学集群是并行计算的基础。通常,科学集群涉及为集群开发的并行应用程序,以解决复杂的科学问题。科学集群对外就好像一个超级计算机,这种超级计算机内部由十至上万个独立处理器组成,并且在公共消息传递层上进行通信以运行并行应用程序。

负载均衡集群

负载均衡集群为企业需求提供了更实用的系统。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序的大量用户提供服务。每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。对于网络流量负载,当网络服务程序接受了高入网流量,以致无法迅速处理,这时,网络流量就会发送给在其它节点上运行的网络服务程序。同时,还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。与科学计算集群一样,负载均衡集群也在多节点之间分发计算处理负载。它们之间的最大区别在于缺少跨节点运行的单并行程序。大多数情况下,负载均衡集群中的每个节点都是运行单独软件的独立系统。

但是,不管是在节点之间进行直接通信,还是通过中央负载均衡服务器来控制每个节点的负载,在节点之间都有一种公共关系。通常,使用特定的算法来分发该负载。

高可用性集群

当集群中的一个系统发生故障时,集群软件迅速做出反应,将该系统的任务分配到集群中其它正在工作的系统上执行。考虑到计算机硬件和软件的易错性,高可用性集群的主要目的是为了使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像。当它代替主节点时,它可以完全接管其身份,因此使系统环境对于用户是一致的。

高可用性集群使服务器系统的运行速度和响应速度尽可能快。它们经常利用在多台机器上运行的冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补者将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,集群永远不会停机。

在实际的使用中,集群的这三种类型相互交融,如高可用性集群也可以在其节点之间均衡用户负载。同样,也可以从要编写应用程序的集群中找到一个并行集群,它可以在节点之间执行负载均衡。从这个意义上讲,这种集群类别的划分是一个相对的概念,不是绝对的。


                                

技术分享




二.集群需要的软件


heartbeat


1.介绍


Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。


2.工作原理


heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。



3.高可用集群


高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。






三.集群配置的详解


ha.cf中的参数


#debugfile /var/log/ha-debug
说明:调试日志文件文件,取默认值

logfile /var/log/ha-log
说明:系统运行日志文件,取默认值

#logfacility local0
说明:用于syslog()/logger的设备

keepalive 2
说明:心跳频率,自己设定。1:表示1秒;200ms:表示200毫秒

deadtime 30
说明:节点死亡时间阀值,就是从节点在过了10后还没有收到心跳就认为主节点死亡,自己设定

warntime 10
说明:发出警告时间,自己设定

udpport 694
说明:心跳信息传递的udp端口,自己设定

#bcast eth0 # Linux
说明:采用udp广播播来通知心跳,建议在副节点不只一台时使用

ucast eth0 172.30.31.68
说明:采用网卡eth0的udp单播来通知心跳,eth0的IP

#mcast eth0 225.0.0.1 694 1 0
说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用

auto_failback off
说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源

node heartbeat1
说明:主节点名称,与uname –n保持一致。排在第一的默认为主节点,所以不要搞措顺序
node heartbeat2
说明:副节点名称,与uname –n保持一致

watchdog /dev/watchdog
说明:看门狗。如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启

以上这些是我个人认为必配项,下面这些是可选项
stonith baytech /etc/ha.d/conf/stonith.baytech
说明:主/副等所有节点的一种校验。

respawn userid /path/name/to/run
说明:和heartbeat必须一起启动的本地服务

ping 10.10.10.254
说明:伪节点IP,伪节点就是其失效时主/副节点不会正常工作但本身不是主/副节点之一。

respawn hacluster /usr/lib/heartbeat/ipfail
说明:与ping选项一起使用,取默认值。

baud 19200
说明:串口波特率,与serial一起使用。

serial /dev/ttyS0 # Linux

说明:采用串口来传递心跳信息





四.实例讲述集群





主服务器:master eth0 : 192.168.0.21

                            eth1:10.0.0.20

svip心跳线:192.168.0.30

从服务器:slave  eth0 : 192.168.0.22

                          eth1 : 10.0.0.21




技术分享



主服务器修改hosts


1.关闭防火墙 iptables -F


getenforce 




2.编辑hosts文件


vim /etc/hosts


添加二行命令


192.168.0.21 master

192.168.0.22 slave





从服务器修改hosts


1.关闭防火墙 iptables -F


getenforce 



2.编辑hosts文件


vim /etc/hosts


添加二行命令


192.168.0.22 test

192.168.0.227 other


技术分享



主服务器安装hearbeat软件


1.进入软件下载目录


cd /usr/local/src

下载软件

wget   www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm 


2.解压软件

rpm -ivh epel-release-6-8_32.noarch.rpm


技术分享

3.安装


yum install -y heartbeat


技术分享


4.安装libnet

yum install -y libnet






从服务器安装hearbeat软件


1.安装


yum install -y heartbeat


技术分享

2.安装libnet

yum install -y libnet



mysql :主从 主备 等都可以使用高可用



主服务器修改配置文件


1.进入目录cd /usr/share/doc/heartbeat-3.0.4/ 拷贝样例



2.复制文件

cp authkeys ha.cf haresources /etc/ha.d/



3.进入ha.d目录下


cd /etc/ha.d 编辑 vi authkeys文件



#auth 1              ------改成auth 3

#1 crc

#2 shal HI!

#3 md5 Hello!    -------#去掉


技术分享


4.改变权限


chmod 600 authkeys



5.给网卡设置多个ip


cd /etc/sysconfig/network-scripts/


cp ifcfg-eth0 ifcfg-eth0\:1


打开网卡的配置


vim !$


DEVICE=eth0:1

#HWADDR=00:0C:29:BA:1F:9E

TYPE=Ethernet

#UUID=a814f62c-c31f-4602-8d11-13d6ee3ea7aa

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.0.30

NETMASK=255.255.255.0

#GATEWAY=192.168.0.250

红色的是需要修改的


技术分享


6.重启,多了一个网卡


service network restart


技术分享


6.编辑haresources文件


vim /etc/ha.d/haresources


技术分享


如果主的nginx服务出问题后从可以启动,主从分别安装nginx


yum install -y nginx


7.master编辑ha.cf文件


vim ha.cf


把里面的东西全部清空 echo > ha.cf  


拷贝文件进来


debugfile /var/log/ha-debug

logfile /var/log/ha-log       #---日志文件

logfacility local0

keepalive 2            #---探测时间

deadtime 30          #---30秒检测不到就表示死了

warntime 10          #---10秒会有警告

initdead 60            #----预留一段时间

udpport 694          #---通信的端口

ucast eth0 192.168.0.22         #---对方的网卡和ip,最好使用单独的ip,或者可以用串口线

auto_failback on           #---会自动切换

node master

node slave

ping 192.168.0.250

respawn hacluster /usr/lib/heartbeat/ipfail


技术分享


8.把配置文件拷贝到从上去


安装scp命令


yum install openssh-clients -y


scp --- 主要是在不同的Linux系统之间来回copy文件

 

scp authkeys haresources ha.cf slave:/etc/ha.d/


输入yes,即可复制文件


技术分享




从服务器的配置


1.进入ha.d目录

cd /etc/ha.d


2.修改配置


authkeys haresources 不用修改


vim ha.cf需要修改(只需要修改对方的ip)


slave配置ha.cf


vim ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log       #---日志文件

logfacility local0

keepalive 2            #---探测时间

deadtime 30          #---30秒检测不到就表示死了

warntime 10          #---10秒会有警告

initdead 60            #----预留一段时间

udpport 694          #---通信的端口

ucast eth0 192.168.0.21  修改下ip      #---对方的网卡和ip,最好使用单独的ip,或者可以用串口线

auto_failback on           #---会自动切换

node lizheng

node mysql1

ping 192.168.0.250

respawn hacluster /usr/lib/heartbeat/ipfail


技术分享





安装完成后就需要测试


启动heartbeat,一定要先启动主在启动从


主启动服务


/etc/init.d/heartbeat start



从启动服务


/etc/init.d/heartbeat start





主服务器操作


1.ip add 可以查看虚拟ip已经生成


技术分享


2.查看ip,已经生成一个新的网卡


技术分享


3.查看nginx服务,已经启动了


技术分享





主服务器上操作


 echo "1q23323123213master" > /usr/share/nginx/html/index.html


浏览器上输入

192.168.0.21 显示内容表示成功


从服务器上


 echo "1巅峰盛典发过的fhert643slave" > /usr/share/nginx/html/index.html


把主服务器icmp屏蔽掉


iptables -A INPUT -p icmp -j DROP



查看日志


tail -f /var/log/ha-log



从服务器查看网卡状态


技术分享


主服务器把heartbeat服务给停掉查看从服务器


/etc/init.d/heartbeat stop


 从服务器上显示的内容


技术分享

HA集群详细配置和实例