分享自己做的LINUX-HA

时间:2022-01-09 03:09:07

 

Linux下高可用集群方案很多,本文介绍的是性价比比较高的一种: 使用Heartbeat 2.0配置Linux高可用性集群。     一、 准备工作     你首先需要两台电脑,这两台电脑并不需要有相同的硬件(或者内存大小等),但如果相同的话,当某个部件出现故障时会容易处理得多。接下来您需要决定如何部署。你的集群是通过Heartbeat 软件产生在两台电脑之间心跳信号来建立的。为了传输心跳信号,需要在节点之间存在一条或多条介质通路(串口线通过modem电线,以太网通过交叉线,等等)。现在可以开始配置硬件了。既然想要获得高可用性(HA),那么您很可能希望避免单点失效。在本例中,可能是您的null modem线/串口,或者网卡(NIC)/ 交叉线。因此便需要决定是否希望为每个节点添加第二条串口null modem连线或者第二条NIC/交叉线连接。我使用一个串口和一块额外的网卡来作为heartbeat的通路,这是因为我只有一条null modem线和一块多余的网卡,并且认为有两种介质类型传输heartbeat信号比较好。硬件配置完成之后,便需要安装操作系统以及配置网络(我在本文中使用的是RedHat)。假设您有两块网卡,那么有一块应该配置用于常规网络用途,另一块作为集群节点之间的专用网络连接(通过交叉线)。例如,假设集群节点有如表-1下的IP地址: 表-1 群集节点的IP地址
主服务器mxl.com 192.168.0.10
心跳IP地址 10.1.1.2
备份服务器bakup.mxl.com 192.168.0.5
心跳IP地址 10.1.1.3
  检查配置是否正确 使用用netstat -nr 和ping 命令   简单网络拓朴图  

分享自己做的LINUX-HA

  安装软件包 heartbeat-2.1.3-3.el5.centos.i386.rpm             perl-Digest-SHA1-2.11-1.2.1.i386.rpm heartbeat-devel-2.1.3-3.el5.centos.i386.rpm       perl-IO-Socket-SSL-1.01-1.fc6.noarch.rpm heartbeat-gui-2.1.3-3.el5.centos.i386.rpm         perl-LDAP-0.33-3.fc6.noarch.rpm heartbeat-ldirectord-2.1.3-3.el5.centos.i386.rpm perl-Mail-POP3Client-2.17-1.el5.centos.noarch.rpm heartbeat-pils-2.1.3-3.el5.centos.i386.rpm        perl-MailTools-1.77-1.el5.centos.noarch.rpm heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm     perl-Net-IMAP-Simple-1.17-1.el5.centos.noarch.rpm libnet-1.1.2.1-2.rf.i386.rpm                      perl-Net-IMAP-Simple-SSL-1.3-1.el5.centos.noarch.rpm perl-Authen-Radius-0.13-1.el5.centos.noarch.rpm   perl-Net-SSLeay-1.30-4.fc6.i386.rpm perl-Convert-ASN1-0.20-1.1.noarch.rpm             perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm perl-Digest-HMAC-1.01-15.noarch.rpm perl-5.8.8-10.el5_0.2.i386.rpm 或使用源码进行安装, 下面以源码安装进行配置 [root@mxl] tar -zxvf libnet.tar.gz    cd libnet ./configure Make Make install   [root@mxl]tar -zxvf heartbeat-2.1.3.tar.gz ./ConfigureMe configure --enable-mgmt --with-ccmuser-name=hacluster Make Make install #--enable-mgmt 表示支持图形管理工具 配置HA需要三个文件:ha.cf     haresources       authkeys     默认/etc/ha.d 下没有这三个文件,我们需要找到这三个文件然后,拷贝到其目录下 [root@mxl heartbeat-2.1.3]# pwd /usr/share/doc/heartbeat-2.1.3 [root@mxl heartbeat-2.1.3]# ls apphbd.cf         faqntips.html        haresources         Requirements.html authkeys          faqntips.txt         hb_report.html      Requirements.txt AUTHORS           GettingStarted.html hb_report.txt       rsync.html ChangeLog         GettingStarted.txt   heartbeat_api.html rsync.txt COPYING           ha.cf                heartbeat_api.txt   startstop COPYING.LGPL      HardwareGuide.html   logd.cf DirectoryMap.txt HardwareGuide.txt    README [root@mxl heartbeat-2.1.3]# cp ha.cf   authkeys    haresources   /etc/ha.d   以上的工作完成之后我们就需要对文件进行配置以实现双机的效果    
  1. 配置hearbeat主文件ha.cf
#logfile        /var/log/ha-log     日志存放位置 #keepalive 2       指明心跳时间为秒 #deadtime 30      指定在30秒内没有心跳信号,会立即切换服务 #warntime 10        指明心跳延迟时间为10秒 #initdead 120    在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的”deadtime”选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍 #udpport        694     使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号。   #baud   19200 波特率,串口通信的速度。 #bcast eth1           # Linux           表示在eth1接口上使用广播heartbeat(将eth1替换为eth0,eth2,或者您使用的任何接口)。 #auto_failback on       该选项是必须配置的。对于那些熟悉Tru64 Unix的人来说,heartbeat的工作方式类似于“favored member“模式。在failover之前,haresources文件中列出的主节点掌握所有的资源,之后从节点接管这些资源。当auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。该选项与废弃的nice_failback选项类似。如果要从一个nice_failback设置为off的集群升级到这个或更新的版本,需要特别注意一些事项以防止flash cut。 #node   ken3        该选项是必须配置的。集群中机器的主机名,与“uname –n”的输出相同。 #node   kathy   #ping 10.10.10.254 Ping 192.168.0.1      ping 可以使用 ipfail插件的用途是检测网络故障 a.选择好的候选ping节点     这步很重要。你的选择越好,则得到的HA集群便越强壮。选择固定的交换机路由器等是一个好主意。不要选择HA集群中的任一个成员,也不要选择其他人的工作站。选择能反映您HA节点的连接状况的ping节点也很重要。如果您要监视两个接口的连接情况,明智的做法是为每个接口选择一个只对该接口可用的ping节点。     b.设置auto_failback为on或者off     只有当Heartbeat被配置为非legacy时ipfail才会起作用。在ha.cf文件中,如下将auto_failback设置为on或者off:     auto_failback on     或者     auto_failback off     c.配置ha.cf使之启动ipfail。     向ha.cf中增加如下一行(假设您在编译时的PREFIX为/usr):     respawn hacluster /usr/lib/heartbeat/ipfail     d.向ha.cf中加入ping节点:     ping pnode1 pnode2 pnodeN     将pnode1,pnode2,…pnodeN等替换为您ping节点的IP地址。     确保向集群中各个成员的ha.cf中加入以上相同的配置指令。      e. 修改Heartbeat配置文件       如果修改了配置文件etc/ha.d/ authkeys或者 /etc/ha.d/ha.cf后要使用下面的命令重新加载服务。     #/etc/init.d/heartbeat reload     或者     #service heartbeat reload #respawn userid /path/name/to/run #respawn hacluster /usr/lib/heartbeat/ipfail   该选项是可选配置的:列出将要执行和监控的命令。例如:要执行ccm守护进程,则要添加如下的内容: respawn hacluster /usr/lib/heartbeat/ccm 使得Heartbeat以userid(在本例中为hacluster)的身份来执行该进程并监视该进程的执行情况,如果其死亡便重启之。 对于ipfail,则应该是:respawn hacluster /usr/lib/heartbeat/ipfail 注意:如果结束进程的退出代码为100,则不会重启该进程。  
  1. 配置[root@mxl ha.d]# vi authkeys 文件
#auth 1 #1 crc #2 sha1 HI! #3 md5 Hello!   需要配置的第三个文件authkeys决定了您的认证密钥。共有三种认证方式:crc,md5,和sha1。您可能会问:“我应该用哪个方法呢?”简而言之:如果您的Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但您也希望降低CPU使用,则使用md5。最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。     文件格式如下:     auth <number>     <number> <authmethod> [<authkey>]     因此,对于sha1,示例的/etc/ha.d/authkeys可能是     auth 1 1 sha1 key-for-sha1-any-text-you-want 1 md5 key-for-sha1-any-text-you-want     对于md5,只要将上面内容中的sha1换成md5就可以了。 对于crc,可作如下配置:     auth 2     2 crc     不论您在关键字auth后面指定的是什么索引值,在后面必须要作为键值再次出现。如果您指定“auth 4”,则在后面一定要有一行的内容为 配置完成后文件的权限设置(600) [root@mxl ha.d]# chmod 600 authkeys
  1. 配置[root@mxl ha.d]# vi haresources 文件
#node-name resource1 resource2 ... resourceN node mxl.com #just.linux-ha.org      135.9.216.110 135.9.215.111 135.9.216.112 httpd mxl.com                10.1.1.1 10.1.1.2 httpd smb 重启服务 把配置好的文件拷贝到其它的节点上即可

本文出自 “点滴记录-系统运维-孟星伦” 博客,请务必保留此出处http://haoyou168.blog.51cto.com/284295/386467