登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SeaRiver Blog

实力才是你一生最好的依靠!

 
 
 

日志

 
 

续:LVS和Heartbeat的安装配置(2.6.9-42)  

2007-11-30 06:45:02|  分类: load balancer |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2. heartbeat

2.1. heartbeat的介绍
这里的heartbeat就是linux-ha项目,被许多高可用系统采用。我们这里lvs必须是个高可用系统,所以我们采用heartbeat。
本文也以lvs作为高可用服务来说明heartbeat的使用。Heartbeat的高版本可以负责3个及以上的节点。本文2个节点来说明,
在你的两台机器(一台作为主节点,另一台为从节点)上运行heartbeat, 并配置好相关的选项,最重要的是lvs资源一定要配置
进去。那么开始时主节点提供lvs服务,一旦主节点崩溃,那么从节点立即接管lvs服务。

具体介绍请参考:http://www.linux-ha.org/

2.2. libnet的安装
安装heatbeat前必须先安装libnet包,请到http://www.packetfactory.net/projects/libnet/地 址下载。libnet提供了一些高层
的api,让应用程序开发者可以修改网络包。我下的包为libnet.tar.gz,版本为1.1.2.1

cd 存放路径
tar -zxvf libnet.tar.gz
cd libnet
./configure; make ; make install

2.3. heartbeat的安装
http://linux-ha.org/download/index.html下载相应的版本,对于2.6.9-42我下载了最新的稳定版本heartbeat-2.1.2.tar.gz。

cd 存放路径
tar -zxvf heartbeat-2.1.2.tar.gz
cd heartbeat-2.1.2
./ConfigureMe configure; make ; make install

添加以下用户和组,要不heartbeat不能正常启动,heartbeat的运行程序需要以下用户和组
groupadd haclient
useradd hacluster

上述步骤完成后,heartbeat的运行程序文件为/etc/init.d/heartbeat。并且出现/etc/ha.d目录。

2.4. heartbeat的配置
heartbeat的配置信息非常复杂,但是最关键也就是那么几项。如果你要自己弄懂所有配置选项,那么自己参考:
http://www.linux-ha.org/ConfiguringHeartbeat中的文档,特别是《Getting Started with Linux-HA(heartbeat)》文档。

这里需要配置文件有三个:ha.cf、haresources、authkeys。这三个配置文件需要在/etc/ha.d目录下面,但是默认是没有这三
个文件的,所以你要
copy存放路径/heartbeat-2.1.2/doc/ha.cf /etc/ha.d/
copy存放路径/heartbeat-2.1.2/doc/haresources /etc/ha.d/
copy存放路径/heartbeat-2.1.2/doc/authkeys /etc/ha.d/

2.4.1. authkeys
这个配置文件非常简单,就是在auth选择一个值。每个值对应一种算法,这个算法是在主节点和从节点间数据校验用的。这个配置
文件权限必须是0600。
chmod 0600 authkeys

自己选一种算法。我选crc。
配置文件的值如下:
#cat authkeys
--------------
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
--------------

2.4.2. haresources
这个文件配置的是节点要管理的资源也就你的高可用服务,这些资源在主节点down调时候,从节点就会开启这些资源。Heartbeat
认为你配置资源名称 start/stop 就可以开启/停止这些资源。所以让你的资源支持start/stop。其实这你只需要对你的应用服务
作个脚本,脚本接受start参数就会启动应用服务,接受stop参数就会停止服务。

在文件中尾部追加以下:
#cat haresources
--------------
dlpanta_01 IPaddr::10.15.2.163/32/eth0 config_lvs.sh
--------------

第一字段(dlpanta_01):主节点名称(必须uname -n的保持一致);
第二字段(10.15.2.163/32/eth0):对外虚拟服务IP/掩码/接口;
第三字段(config_lvs.sh):表示资源名称,用来启动及停止lvs服务的脚本;

dlpanta_01是主节点的名称。10.15.2.163是对外服务的虚拟IP,也是lvs对外服务的虚拟IP。config_lvs.sh是资源名称,
因为这个就是启动DR的配置文件脚本,只要执行过这个脚本那么机器就变成DR了。

脚本如下:
[root@dlpanta_01 resource.d]# cat /etc/ha.d/resource.d/config_lvs.sh
--------------
#!/bin/sh
#
#       High-Availability Pre-Startup/Shutdown Script
#
# Description:  Runs on Startup or shutdown of heartbeat (not resource based).
#               Also runs before start, after start or before stop,
#               and after stop.
#
# Author:       Matthew Soffen
#
# Support:      linux-ha@lists.linux-ha.org
#
# License:      GNU Lesser General Public License (LGPL)
#
# Copyright:    (C) 2002 Matthew Soffen
#
#
unset LC_ALL; export LC_ALL
unset LANGUAGE; export LANGUAGE

prefix=/usr
exec_prefix=/usr
. /etc/ha.d/shellfuncs

_VIP=10.15.2.163

case "$1" in
'start')
        echo 1 > /proc/sys/net/ipv4/ip_forward

        #/sbin/ifconfig eth0:0 $_VIP broadcast $_VIP netmask 255.255.255.255   ---> 不需要这里再指定,HA自动完成
        #/sbin/route add -host $_VIP dev eth0:0

        /sbin/ipvsadm -C

        /etc/rc.d/init.d/ipvsadm start
        ;;
'pre-stadrt')
        ;;
'post-start')
        ;;
'stop')
        #echo 0 > /proc/sys/net/ipv4/ip_forward      ---> stop时,最好再不要再设为0,因为再设为0时,mysql连接会出现假死现象,不会立刻显示无法连接.
                                                          而是出现僵持不动,大概90秒后才会出现无法连接的提示(我测试时是这样的).

        #/sbin/ifconfig eth0:0 $_VIP broadcast $_VIP netmask 255.255.255.255
        #/sbin/route add -host $_VIP dev eth0:0

        /etc/rc.d/init.d/ipvsadm stop
 ;;
'pre-stop')
        ;;
'post-stop')
        ;;
*)
        echo "Usage: $0 { start | pre-start | post-start | stop | pre-stop | post-stop }"
        ;;
esac
exit 0
--------------

2.4.3. ha.cf
这个配置文件比较复杂。我只配了关键的几项:
#cat ha.cf
--------------
logfile         /var/log/ha-log    //系统运行日志文件,取默认值
logfacility     local0    //日志等级,取默认值
keepalive       625ms    //心跳频率,自己设定。1:表示1秒;625ms:表示625毫秒
deadtime        5    //节点死亡时间阀值,就是从节点在过了5秒后还没有收到心跳就认为主节点死亡
warntime        1250ms    //发出警告时间
initdead        30    //heartbeat第一次启动时启动其所控资源的时间
udpport         694    //心跳信息传递的udp端口
bcast           eth0            # Linux  //采用udp广播来通知心跳,建议在副节点不止一台时使用
auto_failback   off    //主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源
node            dlpanta_01   //主节点名称,与uname -n保持一致。排在第一的默认为主节点,所以不要搞措顺序
node            dlpanta_05   //副节点名称,与uname -n保持一致
ping            10.15.2.50   //伪节点IP(比如网关),伪节点就是其失效时主/副节点不会正常工作但本身不是主/副节点之一
respawn         hacluster       /usr/lib/heartbeat/ipfail //与ping选项一起使用,取默认值。
--------------

其它选项说明:
debugfile /var/log/ha-debug
说明:调试日志文件文件,取默认值
ucast eth0 10.15.2.120
说明:采用网卡eth0的udp单播来通知心跳,eth0的IP
#mcast eth0 225.0.0.1 694 1 0
说明:采用udp多播来通知心跳,建议在副节点不止一台时使用
watchdog /dev/watchdog
说明:看门狗。如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启

stonith baytech /etc/ha.d/conf/stonith.baytech
说明:主/副等所有节点的一种校验。
respawn userid /path/name/to/run
说明:和heartbeat必须一起启动的本地服务
baud 19200
说明:串口波特率,与serial一起使用。
serial /dev/ttyS0 # Linux
说明:采用串口来传递心跳信息。

2.5. 运行结果
在主节点dlpanta_01(10.15.2.120)和副节点dlpanta_05(10.15.2.124)启动heatbeat

/etc/init.d/heartbeat start

这时,我用mysql远程连接10.15.2.163,第一次进10.15.2.121,第二次则10.15.2.122,第三次10.15.2.123. 在主节点输入ipvsadm,显示

[root@dlpanta_01 ha.d]# ipvsadm
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.15.2.163:mysql rr
  -> dlpanta_02:mysql             Route   1      0          0        
  -> dlpanta_03:mysql             Route   1      0          1        
  -> dlpanta_04:mysql             Route   1      1          0        

[root@dlpanta_01 ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.15.2.163:3306 rr
  -> 10.15.2.121:3306             Route   1      0          0        
  -> 10.15.2.122:3306             Route   1      0          0        
  -> 10.15.2.123:3306             Route   1      1          0        

这时,reboot主节点10.15.2.120, 那么以前的连接失效, 副节点10.15.2.124:/var/log/ha-log中显示主节点死亡,然后本节点接管资源.
这时再用mysql远程连接10.15.2.163,依然可以.只是所有的登录已经通过副节点转发.

 

以上heartbeat配置成功!

 

 

  评论这张
 
阅读(1000)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018