全部博文(710)
分类:
2011-12-31 23:11:01
原文地址:集群-HA-heartbeat 作者:lh0365
HA文档
1、 基础拓扑图
2、 安装测试环境平台
3、 软件使用版本
4、 配置过程
5、 Ldirectord图
6、 Ldirectord工作原理
7、 Ldirectord配置说明
基础拓扑图
补充说明:
1、 心跳线是用于两台服务器进行互连的一个线路,证明对方是否存活的一个机制。
2、 仲裁:当两台服务器不通了,他不会立刻切换服务,这时候他会尝试ping仲裁,用于测试网络的联通性。
3、 这里在DIRECTORD端标明了主辅,当主的当机后,辅的会自动切换服务,当主的恢复工作的时候,主的会要求将服务重新切回到自己,辅的会释放绑定的IP,服务等。
4、 仲裁可以是一台后端的服务器或者任何一个可以ping通的网络设备。
5、 一般集群HA端的重要的三个要素:
服务切换、IP切换、文件系统的切换
安装测试环境平台
一 硬件:
1、 服务器两台
2、 cpu单核
3、 内存256兆
4、 网卡各一块百兆
二 软件:
1、 readhat5.2
2、 内核版本:2.6.18-92.el5-i686
软件使用版本
1、libnet版本:1.1.2
2、heartbeat版本:heartbeat-2.1.3
配置过程
一、ipvsadm安装过程
准备:
1、 下载libnet,目前我在64位的服务器上安装存在问题,正在测试中。
2、 下载heartbeat-2.1.3
3、 准备相应的perl模块
LWP::UserAgent
MailTools
TimeDate
目前发现这些必装,其它的情况尚未发现,如果这些模块缺少,ldirecotd将无法启动
安装:
1、 libnet1.1.2安装
./configure
make
make install
2、 heartbeat-2.1.3安装
./ConfigureMe configure --prefix=/usr/local/hearbeat
make
make install
cd /usr/local/hearbeat/
cp /usr/local/hearbeat/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d
cp /usr/local/hearbeat/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d
cp /usr/local/hearbeat/share/doc/heartbeat-2.1.3/haresources /etc/ha.d
二、heartbeat的配置:
配置:
1、cd /etc/ha.d
2、vi ha.cf
根据自己的需求修改如下参数
debugfile /var/log/ha-debug
logfile /var/log/ha-log(日志选项,根据自己的需求制定安装路径)
keepalive 2(心跳联系时间间隔,这里的单位是秒,每2秒产生一次证明对方状态的数据包)
deadtime 8(死亡时间,失去联系8秒后,认定对方当机)
warntime 5(警告时间,在日志中产生最后心跳”late heartbeat”字样前的警告时间设定)
udpport 694(udp端口,ucast和bcast的通讯端口)
ucast eth1 192.168.1.74(这里采用ucast的广播方式来证明对方的状态,从设备eth1发出广播,对端的IP地址)
auto_failback on (打开后当主DIRECTORD恢复工作后,会发生自动切换的动作)
watchdog /dev/watchdog (软件看门狗,监控DIRECTORD状态,若对方被判定当机,此软件狗可以控制重新启动服务器,不过不好用)
node test.ha.com(主server的域名 要放在上面,这里的域名在hosts文件中作了映射)
node test2.ha.com(辅server的域名)
ping 192.168.1.4(仲裁IP,用于判断DIRECTORD的网络状态)
respawn root /usr/local/hearbeat/lib/heartbeat/ipfail (这是一个发生PING的脚本,没有细读过)
apiauth client-name gid=root uid=root (权限设置)
apiauth ipfail gid=root uid=root (权限设置)
3、保存退出
4、vi authkeys(主辅两边一样)
auth 1 #选择哪种认证
1 crc #crc方式
#2 sha1 HI! #sha1加密后面的”HI!”是密码
#3 md5 Hello! #md5方式(采用Hello!这个字符串的MD5机密串作为认证串)
(注:文件说明,这个文件是服务器在互相通信时,采用加密方式的设置;)
5、chmod 600 authkeys
6、保存退出
7、vi haresources(主辅两边一样)
加上下面这行
test.ha.com IPaddr2::192.168.198.77/24/eth0:1 ipvsadm ldirectord
说明:(以空格为分隔符)
$1 域名,将主域名填写在这里
$2 IPaddr2这是用于添加IP的一个脚本,如果这里没有用虚拟网卡,用的是真实的,这里就用IPaddr这个脚本;
Ip/网络掩码/设备号
$3 是在/etc/init.d目录下的一个服务名,如果有自己的服务需要自动切换的,也可以写,这里是自动查找/etc/init.d目录下的
$4 同上
8、保存退出
Ldirectord图
图形参数说明:
VIP: 对外提供APACHE访问的外网地址
DIP: 用于与后端真实的APACHE服务器联系的IP
RIP:真实APACHE的服务器的IP地址
ldirectord工作原理
DIRECTORD会定时向后端的REAL SERVER发送HTTP请求,类似于GET ,然后分析看页面中是否存在符合自己定义的某些特殊关键字,如果有,则该服务器工作正常,如果没有,则该服务出现异常,会自动将IPVSADM里的关于到这个服务器的权重改为“0”,则就不会出现类似网页第一次打不开,刷新之后就能打开的问题了。
ldirectord配置说明
1、cd /etc/ha.d
2、vi ldirectord.cf
checktimeout=3(健康检查执行完毕的等待时间)
checkinterval=1
#autoreload=no
#callback=
logfile="/var/log/ldirectord.log" (日志选项)
#logfile="local0"
#execute="configuration"
quiescent=yes
# A sample virual with a fallback that will override the gobal setting
以下格式必须这样
virtual=192.168.198.77:80
real=192.168.1.2:80 gate(gate是申明此LVS采用DR方式,和-g参数一样)
checktype=negotiate
service=http
request="test"(浏览的文件)
receive="lihui"(被获取的内容)
scheduler=wlc(算法,和ipvsadm的算法保持一致)
persistent=10(定向分配值和-p这个参数是同义)
protocol=tcp