快速业务通道

HA 高可用集群

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-17

HA 高可用集群项目实践

时 间:2009年4月

姓 名:赵舜东

 

实验目的:通过实验深入理解HA LVS集群的原理,并可以熟练配置

实验环境:Red Hat Enterprise Linux Server release 5.3

实验前提:该实验是建立在LVS的基础上,在弄懂LVS的前提下,才能做本实验,实际工作中的LVS多为DR方式,实验前保证,实验环境是做LVS-DR时的实验环境.

实验内容:

一、环境的配置

二、软件的安装

三、服务的配置

四、集群的测试

 

实验内容:

Empire CMS,phome.net

一、 环境的配置

192.168.0.0/255.255.255.0用来模拟公网IP的一个网段

(一)Director 和备份Director的环境设置

192.168.0.120

[root@unixhot ~]# hostname node1.unixhot.com

[root@unixhot ~]# vim /etc/sysconfig/network

[root@unixhot ~]# vim /etc/hosts

HOSTNAME=node1.unixhot.com

192.168.0.12 node1.unixhot.com node1

192.168.0.120 node2.unixhot.com node2

2.备份的director192.168.0.120的配置同上,把主机名设置为node2 (注意,主机名设置,并且能通过hosts文件解析)

(二)真实机的配置

1. 同LVS集群,关闭arp

2. 同LVS集群,绑定VIP到lo本地回环上

3. 同LVS集群,设置默认的网关为DGW


Empire CMS,phome.net

 

一、 软件的安装

(以下是安装heartbeat所需依赖的包,可能根据系统安装时选择的软件包不同,所依赖的包也会不同,这里要在主从两台Director上安装)

heartbeat-2.1.3-3.el5.centos.i386.rpm

heartbeat-devel-2.1.3-3.el5.centos.i386.rpm

heartbeat-gui-2.1.3-3.el5.centos.i386.rpm

heartbeat-ldirectord-2.1.3-3.el5.centos.i386.rpm

heartbeat-pils-2.1.3-3.el5.centos.i386.rpm

heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm

perl-Convert-ASN1-0.20-1.1.noarch.rpm

perl-Crypt-SSLeay-0.51-11.el5.i386.rpm

perl-Data-HexDump-0.02-1.2.el5.rf.noarch.rpm

perl-Date-Calc-5.4-1.2.2.1.i386.rpm

perl-IO-Socket-INET6-2.51-2.fc6.noarch.rpm

perl-IO-Socket-SSL-1.01-1.fc6.noarch.rpm

perl-LDAP-0.33-3.fc6.noarch.rpm

perl-libwww-perl-5.805-1.1.1.noarch.rpm

perl-libxml-perl-0.08-1.2.1.noarch.rpm

perl-Mail-POP3Client-2.18-1.el5.rf.noarch.rpm

perl-MailTools-2.02-1.el5.rf.noarch.rpm

perl-Net-DNS-0.59-3.el5.i386.rpm

perl-Net-IMAP-Simple-1.17-1.el5.rf.noarch.rpm

perl-Net-IMAP-Simple-SSL-1.3-1.el5.rf.noarch.rpm

perl-Net-SSLeay-1.30-4.fc6.i386.rpm

perl-RadiusPerl-0.13-1.el5.rf.noarch.rpm

perl-TimeDate-1.16-5.el5.noarch.rpm

perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm

perl-XML-Parser-2.34-6.1.2.2.1.i386.rpm

perl-XML-SAX-0.14-5.noarch.rpm

 

Empire CMS,phome.net


三、服务的配置

安装成功后会创建/etc/ha.d 目录,但默认情况下该目录里没有配置文件.

[root@unixhot ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/

[root@unixhot ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/

[root@unixhot ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

[root@unixhot ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/

(一)ldirectord

用来配置ipvsadm,并通过一个测试页,监控真实机的web服务情况,如果有真实机的服务停止了,就把它的权重设置为零,这样director就不会 分发请求给该真实机,如果所有的真实机都down了,就会在director上打开自己的web服务器,并提示系统正在维护中.

1. [root@unixhot ~]# vim /etc/ha.d/ldirectord.cf

# Global Directives

checktimeout=3 # 检查的超时时间,如果3秒钟还监听不到心跳说明对方已down

checkinterval=1 # 检查的间隔时间,每间隔1秒钟,测试心跳

fallback=127.0.0.1:80 # 如果所有的真实机全部down,director就会把自己的web服务打开

autoreload=yes

logfile="/var/log/ldirectord.log" #记录日志

logfile="local0" #设置日志对象

emailalert="admin@unixhot.com" #设置出现故障时的邮件提醒

emailalertfreq=3600 #邮件警告时间间隔,就是如果故障没有派出,每隔3600秒发送一封邮件

emailalertstatus=all # 设置邮件格式为最详细的格式

quiescent=yes # 如果真实机down了,把它的权重设置为0

# Sample for an http virtual service

virtual=192.168.0.128:80 设置VIP (注意在这里VIP要自己绑定到director上,但后面做heartbeat的时候就不用自己绑定了,会自动绑定)

real=192.168.0.121:80 gate weight 20 #设置真实机 并设置权重

real=192.168.0.122:80 gate weight 30

fallback=127.0.0.1:80 gate #设置所有真实机down后,开启自己的web服务

service=http #测试的服务

request="test.html" #测试的页面

receive="Test Page" #测试的内容

#virtualhost=some.domain.com.au

scheduler=wrr #调度算法

#persistent=600

#netmask=255.255.255.255

protocol=tcp

checktype=negotiate

checkport=80

#request="index.html"

#receive="Test Page"

#virtualhost=www.x.y.z

 

2.[root@unixhot ~]# chkconfig —add ldirectord (添加到启动管理,默认是没有自动添加)

3.[root@unixhot ~]# chkconfig —list | grep directord

ldirectord 0:off 1:off 2:off 3:on 4:off 5:on 6:off

3.[root@unixhot ~]# ipvsadm -Ln (发现并没有任何信息)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

4.[root@unixhot ~]# service ldirectord start (启动ldirectord)

5.[root@unixhot ~]# ipvsadm -Ln (发现ipvsadm有配置了,可是权重都是零,也就是不可用,我们的test.html文件还没创建,ldirectord无法获取正常的页面自然就会把权重值设置为0)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.12:80 wrr

-> 192.168.0.122:80 Route 0 0 0

-> 192.168.0.121:80 Route 0 0 0

-> 127.0.0.1:80 Local 1 0 0

6.[root@unixhot ~]# ssh 192.168.0.121 (设置测试页)

[root@node1 ~]# echo "Test Page" > /var/www/html/test.html

7.[root@unixhot ~]# ssh 192.168.0.122

[root@node2 ~]# echo "Test Page" > /var/www/html/test.html

8.设置完毕测试页重启服务

[root@unixhot ~]# service ldirectord restart

Restarting ldirectord... success

9.[root@unixhot ~]# ipvsadm -Ln (发现已经可以正常工作了)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.12:80 wrr

-> 192.168.0.122:80 Route 30 0 0

-> 192.168.0.121:80 Route 20 0 0

(二)heartbeat

heartbeat 软件用来做双机热备,两台服务器通过心跳线进行通信,并设置仲裁机制,每隔一定的时间彼此通信,如果主服务器发现自己ping 不通仲裁的计算机,就告诉从服务器,进行服务的切换,如果从服务器发现主服务器没了心跳信号,而自己能ping通仲裁的计算机,也会把服务切换过来.

[root@unixhot ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d

该配置文件用来设置两台服务器用来做心跳测试时,数据加密的方式

[root@unixhot ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/

主配置文件

[root@unixhot ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

用来设置进行资源切换时,都需要切换哪些资源

1.[root@unixhot ~]# vim /etc/ha.d/haresources

node1.unixhot.com IPaddr::192.168.0.128/24/eth0 ldirectord

2.[root@unixhot ~]# vim /etc/ha.d/authkeys

auth 3

#1 crc

#2 sha1 HI!

3 md5 Hello!

[root@unixhot ~]# chmod 400 /etc/ha.d/authkeys (注意此处修改权限,不然会报错)

3.[root@unixhot ~]# vim /etc/ha.d/ha.cf

keepalive 2 #检查心跳间隔时间

deadtime 30 #多长时间对方没有心跳说明对方死亡

warntime 10 #警告时间

initdead 120 #初始化的时候,多长时间以后开始监听心跳

udpport 694 #设置心跳端口

#baud 19200 心跳监控使用串口方式 波特率为19200

#serial /dev/ttyS0 # Linux 设置串口

#mcast eth0 225.0.0.1 694 1 0 多播方式

ucast eth0 192.168.0.120 #使用单播方式

auto_failback on #主的服务器恢复以后再切换回来

node node1.unixhot.com #节点 主的放上面

node node2.unixhot.com #从的放下面

ping 10.10.10.254 #仲裁 可以设置DGW,在这里随便找了一台局域网中可以ping通的主机

#ping_group group1 10.10.10.254 10.10.10.253 可以设置仲裁组

#hbaping fc-card-name 设置FC的网卡名

respawn hacluster /usr/lib/heartbeat/ipfail 更新arp 一般运行5次

4.复制配置文件到从服务器192.168.0.120

[root@unixhot ~]# scp /etc/hosts root@192.168.120:/etc/hosts

[root@unixhot ~]# scp /etc/ha.d/authkeys 192.168.0.120:/etc/ha.d/

[root@unixhot ~]# scp /etc/ha.d/ha.cf 192.168.0.120:/etc/ha.d/

[root@unixhot ~]# scp /etc/ha.d/haresources 192.168.0.120:/etc/ha.d/

[root@unixhot ~]# scp /etc/ha.d/ldirectord.cf 192.168.0.120:/etc/ha.d/

5.[root@unixhot ~]# ssh 192.168.0.120

root@192.168.0.120''s password:

Last login: Tue Apr 28 23:41:09 2009

[root@director ~]# vim /etc/ha.d/ha.cf

ucast eth0 192.168.0.12 (修改为192.168.0.12)

Empire CMS,phome.net

四、集群的测试

(一)在主服务器测试,看服务是否正常

[root@node1 ~]# /etc/init.d/heartbeat start (在主服务器上启动服务)

[root@node2 ~]# /etc/init.d/heartbeat start (在从服务器中启动服务)

在192.168.0.12(主服务器)上测试

[root@node1 ~]# ipvsadm -Ln (发现运行正常)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.128:80 wrr

-> 192.168.0.122:80 Route 30 0 0

-> 192.168.0.121:80 Route 20 0 0

[root@node1 ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:B0:C4:01:2A:0C

inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::2b0:c4ff:fe01:2a0c/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:12249 errors:1 dropped:0 overruns:1 frame:0

TX packets:3520 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1638888 (1.5 MiB) TX bytes:384236 (375.2 KiB)

Interrupt:225 Base address:0x4c00

eth0:0 Link encap:Ethernet HWaddr 00:B0:C4:01:2A:0C (发现VIP自动绑定上了)

inet addr:192.168.0.128 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Interrupt:225 Base address:0x4c00

(二)下面我们把192.168.0.12和仲裁192.168.0.16的网络截断,看服务是否会自动切换到192.168.0.120

[root@node1 ~]# iptables -t filter -A INPUT -s 192.168.0.16 -j DROP

[root@node1 ~]# ssh 192.168.0.120

[root@node2 ~]# ipvsadm -Ln (发现所有的资源全部都切换了回来)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.128:80 wrr

-> 192.168.0.122:80 Route 30 0 0

-> 192.168.0.121:80 Route 20 0 0

[root@node2 ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0C:29:EE:44:8D

inet addr:192.168.0.120 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:feee:448d/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:29626 errors:0 dropped:0 overruns:0 frame:0

TX packets:2300 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:3710954 (3.5 MiB) TX bytes:372394 (363.6 KiB)

Interrupt:169 Base address:0x2000

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:EE:44:8D

inet addr:192.168.0.128 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Interrupt:169 Base address:0x2000

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:438 errors:0 dropped:0 overruns:0 frame:0

TX packets:438 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:35036 (34.2 KiB) TX bytes:35036 (34.2 KiB)

(三)下面把主服务器和仲裁的网络打开,看是否服务又会自动切换回来.

[root@node1 ~]# iptables -F

[root@node1 ~]# ipvsadm -Ln (发现所有的资源又切换回来了)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.128:80 wrr

-> 192.168.0.122:80 Route 30 0 0

-> 192.168.0.121:80 Route 20 0 0

[root@node1 ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:B0:C4:01:2A:0C

inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::2b0:c4ff:fe01:2a0c/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:18649 errors:1 dropped:0 overruns:1 frame:0

TX packets:9346 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2518641 (2.4 MiB) TX bytes:1020634 (996.7 KiB)

Interrupt:225 Base address:0x4c00

eth0:0 Link encap:Ethernet HWaddr 00:B0:C4:01:2A:0C

inet addr:192.168.0.128 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Interrupt:225 Base address:0x4c00

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:10471 errors:0 dropped:0 overruns:0 frame:0

TX packets:10471 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:4990366 (4.7 MiB) TX bytes:4990366 (4.7 MiB)

Empire CMS,phome.net

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号