前提条件:
服务器有两片网卡eth0和eth1
服务器1:
主机名:node1
eth0:192.168.1.160
eth1:10.1.1.10
服务器2:
主机名:node2
eth0:192.168.1.161
eth1:10.1.1.11
一、安装heartbeat依赖包及heartbeat(请按下面的顺序执行安装,否则会在安装的时候报错)
rpm -ivh perl-Authen-SASL-2.15-1.el5.pp.noarch.rpm
rpm -ivh perl-GSSAPI-0.26-1.el5.rf.i386.rpm
rpm -ivh perl-Net-SSLeay-1.30-4.fc6.i386.rpm
rpm -ivh perl-Convert-ASN1-0.20-1.1.noarch.rpm
rpm -ivh perl-IO-Socket-SSL-1.01-1.fc6.noarch.rpm
rpm -ivh perl-Parse-RecDescent-1.94-6.el5.noarch.rpm
rpm -ivh perl-Digest-HMAC-1.01-15.noarch.rpm
rpm -ivh perl-LDAP-0.33-3.fc6.noarch.rpm
rpm -ivh perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm
rpm -ivh perl-Digest-SHA1-2.11-1.2.1.i386.rpm
rpm -ivh perl-Mail-IMAPClient-3.20-1.el5.noarch.rpm
rpm -ivh perl-XML-SAX-0.14-5.noarch.rpm
rpm -ivh lm_sensors-2.10.0-3.1.i386.rpm
rpm -ivh libtool-ltdl-1.5.22-6.1.i386.rpm
rpm -ivh libtool-ltdl-devel-1.5.22-6.1.i386.rpm
rpm -ivh openhpi-2.4.1-6.el5.1.i386.rpm
rpm -ivh openhpi-devel-2.4.1-6.el5.1.i386.rpm
rpm -ivh net-snmp-5.3.1-14.el5.i386.rpm
rpm -ivh net-snmp-libs-5.3.1-14.el5.i386.rpm
rpm -ivh perl-Compress-Zlib-1.42-1.fc6.i386.rpm
rpm -ivh perl-HTML-Parser-3.55-1.fc6.i386.rpm
rpm -ivh perl-HTML-Tagset-3.10-2.1.1.noarch.rpm
rpm -ivh perl-libwww-perl-5.805-1.1.1.noarch.rpm
rpm -ivh perl-TimeDate-1.16-3_2.0.el5.noarch.rpm
rpm -ivh perl-MailTools-2.04-1.el5.rf.noarch.rpm
rpm -ivh perl-URI-1.35-3.noarch.rpm
rpm -ivh libnet-1.1.4-3.el5.i386.rpm
rpm -ivh heartbeat-pils-2.1.4-11.el5.i386.rpm
rpm -ivh heartbeat-stonith-2.1.4-11.el5.i386.rpm
rpm -ivh heartbeat-2.1.4-11.el5.i386.rpm
rpm -ivh heartbeat-devel-2.1.4-11.el5.i386.rpm
rpm -ivh ipvsadm-1.24-10.i386.rpm
rpm -ivh heartbeat-ldirectord-2.1.4-11.el5.i386.rpm
二、设置两台服务器主机文件/etc/hosts,内容如下:
192.168.1.160 node1
10.1.1.10 ha01
192.168.1.161 node2
10.1.1.11 ha02
127.0.0.1 localhost
三、配置ha的三个文件:
cp /usr/share/doc/heartbeat-2.1.4/authkeys、ha.cf、haresources /etc/ha.d/
heartbeat的配置有以下三个文件,2个节点配置除ha.cf可能不一样外(如心跳接口名称),其他一样。
ha.cf 主配置文件
haresources 资源配置文件
authkeys 认证信息配置文件
1)配置ha.cf
debugfile /var/log/ha_log/ha-debug //调试日志文件
logfile /var/log/ha_log/ha-log //系统运行日志文件,请在相应的路径建立对应的目录
logfacility local0 //日志记录等级
keepalive 2 //心跳频率,2表示2秒;200ms则表示200毫秒
deadtime 10 //节点死亡时间,就是过了10秒后还没有收到心跳就认为主节点死亡
warntime 10 //告警时间
initdead 120 //初始化时间
udpport 694 //心跳信息传递的udp端口
bcast eth1 //采用udp广播来通知心跳,建议在备用节点不只一台时使用
baud 19200
auto_failback on //如果主节点重新恢复过来,主节点将主动将资源抢占过来,如果为off,则只当备用节点当掉后,主节点才取回资源
watchdog /dev/watchdog //看门狗。如果本节点在超过1分钟后还没有发出心跳,那么本节点自动重启
ping 182.168.1.254 //通过ping网关来监测网络是否正常
respawn root /usr/lib/heartbeat/ipfail //随heartbeat启动一起启动
apiauth ipfail gid=root uid=root
hopfudge 1
node node1 //主节点名称,主要是在haresources定义为主节点,与uname -n显示必须一致
node node2 //备用节点名称
2)配置haresources (定义虚拟IP及httpd服务等集群资源,两个节点的这个配制文件一定要相同,否则会出现两个vip地址)
node1 192.168.1.170 httpd //node1为主节点名称,192.168.1.170为虚拟IP地址,httpd是apache的启动脚本,heartbeat将从
/etc/ha.d/resource.d或/etc/rc.d/init.d目录中寻找这个启动脚本,因为我是用tar包安装的,没有标准的http服务。因此需要在
/etc/ha.d/resource.d中建立软连接,ln -s /user/local/apache2/bin/apachectl httpd
注意:在standby节点在启动heartbeat时不会启动httpd。因此需要手工启动(不知是否我配置有问题,如有解决方案请赐教,谢谢)
3)配置authkeys
auth 1
1 crc //主节点与备用节点间数据校验采用crc算法
#2 sha1 HI!
#3 md5 Hello!
注:authkeys需要设置读写权限:chmod 600 ./authkeys
四、测试校验
启动两个节点的heartbeat
service heartbeat start
启动apache:
/usr/local/apache2/bin/apachectl start
在启动apache前,将node1节点中的index.html中的内容改为node1。node2节点中的index.html中的内容改为node2
验证:
1)haresources中配置的虚拟IP:192.168.1.170将在主节点自动启用,可用ifconfig查看到为eth0:0接口,并可用http://192.168.1.170测试网页的打开.将显示"node1"内容,
备份节点虚拟IP不启用是正常的,只在切换时启用。
2)将主节点node1的eth0和eth1都down掉,过一会应该可以看到备份节点接管了192.168.1.170地址。再打开http://192.168.1.170测试网页的打开.将显示"node2"内容,
然后将主节点eth0和eth1起用,由于设置了fallback on,主节点主动将虚拟IP抢占回来(要等一会儿,用ifconfig多刷几次看看),并接管了相应的服务(httpd)。
五、代码同步
可以使用rsync来进行同步也可以使用存储来进行共享,在次不做详细说明