分享
 
 
 

在Linux上实现高可用服务

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

高可用服务可算是当前企业应用中的一个热门了。高可用服务(High- Availability Service)是指用两台或更多机器来运行服务(比如http、NFT、Oracle等),当主服务器down机后,其它的副服务器就自动接管服务,当主服务器回复到正常状态时,再自动将服务从副服务器上接管回来。大家都知道在服务器领域中Linux操作系统本身就具有很高的稳定性,然而在实际应用中,可能会要求系统具备更高的稳定性。这时候就需要构建高可用服务来保证系统能提供不间断的服务。许多商家都提供了Linux上的高可用产品,比如:Rose HA、Turbo HA Cluster Server、SGI FailSafe Server等,不过Linux上也有免费的高可用产品,比如High-Availability Linux Project,它是一个高可用性Linux项目。利用它,我们可以在Linux上构建各种高可用的服务。本文就将利用heartbeat实现高可用的 http服务。

下面先介绍一下这次实验的软硬件情况:

A. 硬件

服务器:2台, 都具有双网卡,一块用于连接到网络,一块用于双机互连。

心跳线:特殊的串口线,用于串口信息的检测。

网线:交叉网线,用于双机互连的。支持heartbeat的UDP协议通讯。

B. 软件

操作系统:RedHat 9.0

服务:Apache (两台服务器上的apache设置和内容完全一致)

HA软件:heartbeat 1.0.4 for RedHat 9.0

C. 网络信息

服务器1

主机名:ha1.bogus.sh.cn

eth0: 192.168.2.1(接入LAN)

eth1: 10.0.0.1(接心跳线)

服务器2

主机名:ha2.bogus.sh.cn

eth0: 192.168.2.2(接入LAN)

eth1: 10.0.0.2(接心跳线)

对外服务的IP:192.168.1.3

下面是具体的安装过程:

1、安装heartbeat

我们选择heartbeat1.0.4,它是2003/10/14更新的,也是当前最新的稳定版本。另外还有heartbeat-beta1.1.3,不过如果你是第一次安装,没有需要和以前的版本配合的话,就不要选这个。

因为我们使用的操作系统是Red Hat 9.0,所以我们直接用相应版本的rpm包来安装。

heartbeat 1.0.4 for RedHat 9.0主要包有以下4个:

heartbeat-1.0.4-2.rh.9.i386.rpm

heartbeat-ldirectord-1.0.4-2.rh.9.i386.rpm

heartbeat-pils-1.0.4-2.rh.9.i386.rpm

heartbeat-stonith-1.0.4-2.rh.9.i386.rpm

不过这些包都依赖其它的一些包,它们可以在这里中找到:

ipvsadm-1.21-1.rh.9.um.1.i386.rpm

libnet-1.1.0-1.rh.9.um.1.i386.rpm

perl-Authen-SASL-2.03-1.rh.9.um.1.noarch.rpm

perl-Convert-ASN1-0.16-2.rh.9.um.1.noarch.rpm

perl-IO-Socket-SSL-0.92-1.rh.9.um.1.noarch.rpm

perl-ldap-0.2701-1.rh.9.um.1.noarch.rpm

perl-Mail-IMAPClient-2.2.7-1.rh.9.um.1.noarch.rpm

perl-Net-SSLeay-1.23-1.rh.9.um.1.i386.rpm

perl-XML-NamespaceSupport-1.08-1.rh.9.um.1.noarch.rpm

perl-XML-SAX-0.12-1.rh.9.um.1.noarch.rpm

下面给出笔者的安装顺序:

rpm -ivh heartbeat-pils-1.0.4-2.rh.9.i386.rpm

rpm -ivh heartbeat-stonith-1.0.4-2.rh.9.i386.rpm

rpm -ivh heartbeat-1.0.4-2.rh.9.i386.rpm

rpm -ivh ipvsadm-1.21-1.rh.9.um.1.i386.rpm

rpm -ivh perl-Net-SSLeay-1.23-1.rh.9.um.1.i386.rpm

rpm -ivh perl-IO-Socket-SSL-0.92-1.rh.9.um.1.noarch.rpm

rpm -ivh perl-Convert-ASN1-0.16-2.rh.9.um.1.noarch.rpm

rpm -ivh perl-XML-NamespaceSupport-1.08-1.rh.9.um.1.noarch.rpm

rpm -ivh perl-XML-SAX-0.12-1.rh.9.um.1.noarch.rpm

rpm -ivh --nodeps perl-Authen-SASL-2.03-1.rh.9.um.1.noarch.rpm

rpm -ivh --nodeps perl-Mail-IMAPClient-2.2.7-1.rh.9.um.1.noarch.rpm

(注:以上两个包还有依赖关系,可以从cpan.org上找到tar包安装,然后就用--nodeps强行安装)

rpm -ivh perl-ldap-0.2701-1.rh.9.um.1.noarch.rpm

rpm -ivh heartbeat-ldirectord-1.0.4-2.rh.9.i386.rpm

2、配置heartbeat

heartbeat的配置有以下三个文件,它们是:

ha.cf

主要配置文件

haresources

资源配置文件

authkeys

关于认证信息

前两个文件应该是所有人都可读的,而authkeys是只有root才可读可写的。

2.1. /etc/hd.d/ha.cf

这个文件主要负责定义媒体和设置参数,是heartbeat的主要配置文件。这里我们的ha.cf文件内容如下:

node ha1.bogus.sh.cn

node ha2.bogus.sh.cn

serial /dev/ttyS0

baud 19200

deadtime 5

keepalive 1

initdead 30

udp eth1

udpport 694

下面是对ha.cf的相关解释:

keepalive 1

该参数指定两次 heartbeat 之间的秒数。在本实验中,每秒一次 heartbeat。

deadtime 5

该参数指定等待声明主机死机的时间。指定 10 表示 heartbeat 将在节点停止响应 10 秒之后启动故障转移。

initdead 30

该参数指定heartbeat首次启动时deadtime应该为多久。因为当heartbeat在引导时启动时,还需要给网络启动留出时间,所以这个时间要设得长一些。

udpport 694

该参数指定heartbeat发送UDP包时所使用的端口。

udp eth1

该参数指定在哪个接口上发送heartbeat。

node ha1.bogus.sh.cn与node ha2.bogus.sh.cn

该参数告诉 heartbeat 使用哪些主机。节点名的正确性是非常重要的。节点名应与命令uname -n所显示的名称一致。

serial /dev/ttyS0

该参数指定在心跳线接在哪一个串口上。

baud 19200

该参数串口通讯的波特率。

2.2. /etc/ha.d/haresources

这个文件指定同步的服务以及主机是什么。两台机器上的这个文件一定要一致。我们设定的是高可用服务是Apache,它对外的IP是192.168.2.3,所以haresources的内容应该如下:

ha1.bogus.sh.cn 192.168.2.3 httpd

其中httpd是启动脚本的名称。heartbeat会先从/etc/ha.d/resource.d和/etc/rc.d/init.d的目录中去寻找httpd这个启动脚本,这里因为我们采用的apache是Redhat自带的apache,在/etc/rc.d/下面就有一个httpd的启动脚本,所以heartbeat就可以利用httpd start/stop来启动或停止apache服务了。NextPage###

2.3. /etc/ha.d/authkeys

有三种认证方式:crc, md5, and sha1. sha1是最难破解的,md5其次,crc最次。

这个文件的格式如下:

auth

[]这里我们的authkeys文件内容如下:auth 11 sha1 sha1 myAuthkey然后将其权限设为600,以提高安全性。注意:如果不做这一步,heartbeat可能无法正常运作。chmod 600 authkeys2.4 另一台服务器的配置对于另一台服务器就也重复做以上的设定,如:vi /etc/ha.d/ha.cfvi /etc/ha.d/haresourcesvi /etc/ha.d/authkeyschmod 600 authkeys在两台机器上的haresources和authkeys应该完全相同。ha.cf也应该相同,除非你的心跳线是连接不同的串口的或者交叉网线连接的网卡不同。3、启动heartbeat首先关闭两台机器的高可用服务,因为heartbeat 启动时会自动服务打开,这里的高可用服务是apache,我们可以用以下命令来关闭它们:/etc/rc.d/init.d/httpd stop然后,可以通过以下命令先后在两台机器上启动heartbeat:/etc/rc.d/init.d/heartbeat start用以下命令可以查看到heartbeat在运行中的log:tail -f /var/log/ha-log用以下命令可以关闭heartbeat服务/etc/rc.d/init.d/heartbeat stop4、测试heartbeat服务启动以后,就可以开始测试了。为了区分apache服务是来自于哪一台服务器,我们在apache的index.html中加上主机名。这样我们通过访问主页就能够区分是哪一台服务器在提供apache了。一开始,我们访问http://192.168.2.3,看到的是ha1的页面,然后我们想办法让ha1断开一下,比如关机或重启。然后,我们刷新页面,不久就可以看到页面变成ha2的了,这表示ha2已经接管了ha1的apache服务,我们在ha2上察看,可以发现它已经自动挂上了 192.168.2.3个IP了,而且apache服务也已经启动了。然后我们再让ha1重新运作起来,这时候,我们再次刷新页面,不久就可以看到页面又变回到ha1的了,而ha2上的apache服务也自动关闭了。在整个过程中,对外的apache服务几乎没有受到什么影响。5、结束语heartbeat是遵守GPL发行的开源软件,这就提供了一个低成本的高可用解决方案,利用heartbeat,还可以构筑其它的高可用服务,比如LDAP、DataBsee、NFS、FTP等等。另外heartbeat也可以很方便的移植到其它类UNIX平台中去,更详细资料可从其官方网站中找到。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有