文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>REDHAT4.7 安装Heartbeat+Ldirectord+LVS以及问题..

REDHAT4.7 安装Heartbeat+Ldirectord+LVS以及问题..

时间:2010-06-03  来源:dafeng1113

REDHAT4.7 安装Heartbeat+Ldirectord+LVS以及问题解决(三)   Heartbeat及Ldirectord配置文件详解:      安装完各个软件包,在/etc/ha.d/目录下并没有各个软件的相关配置。需要我们在源代码目录将其示例配置文件拷贝到/etc/ha.d/目录下进行配置:

cp ./heartbeat-2.0.2/doc/ha.cf   /etc/ha.d/
cp ./heartbeat-2.0.2/doc/authkeys  /etc/ha.d/
cp ./heartbeat-2.0.2/doc/haresources  /etc/ha.d/

cp ./heartbeat-2.0.2/ldirectord/ldirectord.cf  /etc/ha.d/

    一、Ldirectord配置文件:

# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=no

# A sample virual with a fallback that will override the gobal setting
virtual=192.168.7.110:80
        real=192.168.7.11:80 gate
        real=192.168.7.12:80 gate
#       fallback=127.0.0.1:80 gate
        service=http
        request=".test.html"
        receive="Test Page"
        virtualhost=192.168.7.110
        scheduler=wrr
        persistent=1800
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80

   Ldirectord配置文件详解:         原文来自:http://blog.chinaunix.net/u/11169/showart_1189864.html

checktimeout=20
这个值就是ldirectord等待健康检查执行完毕的等待时间,单位秒。如果因为某些原因检查失败或在设置的时间周期内没有完成检查,ldirectord将会从IPVS表中移除真实服务器[16]。
checkinterval=5
这个值指定ldirectord在两个检查之间的间隔时间。
autoreload=yes
如果启用这个选项,它使ldirectord按时计算这个配置文件的md5校验和值,看其是否有改动,当发现有改动时自动应用那些改动,这个方便的特性运行你容易地改变集群的配置,你对配置文件改动后几秒,ldirectord将察觉到有改动,调用ipvsadm命令实现改动,从有效服务器池中移除真实服务器或按需要将它们添加到池中[17]。
注意:你也可以通过向ldirectoed守护进程发送HUP信号(使用kill命令)强制它重新载入,或运行ldirectord reload。
quiescent=no
当一个节点在checktimeout设置的时间周期内没有响应是它是“静止的”(它的权重为0),当你设置了这个选项后,ldirectord将会从IPVS表中移除真实服务器而不是“停止”它,从IPVS表移除节点将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果你不将这个选项设置为no,当某个节点崩溃时,对某些客户端计算机而言可能会显示为集群关闭了,因为在这个节点崩溃前这些客户端计算机被分配给它了,而连接跟踪记录和程序连接模板仍然保留在Director上。
使用这个选项时,你可能也想在系统启动时使用下面这个命令[18]:
echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn
如果客户端使用一个先前的连接跟踪记录尝试与相同的服务器对话,但此时该服务器已经失效了,可以设置这个内核变量为1使连接跟踪记录立即失效[19]。
注意:所有sysctl变量。包括expire_nodest_conn 变量,在LVS网站上都有说明文档(
http://www.linuxvirtualserver.org/docs/sysctl.html
)。
logfile="info"
这一行内容告诉ldirectord使用syslog程序记录错误消息(查看/etc/syslog.conf找出“info”级别的消息是写到哪里的),你也可以输入记录错误消息的目录和文件名,如果没有指定值,日志消息将被写入/var/log/ldirectord.log。
virtual=209.100.100.3:80
这一行指定我们想要在Director上设置的VIP地址和端口号,这就是你要添加到DNS向客户端广播的ip地址,任何情况下,这就是客户端计算机用来连接到你配置的集群资源的ip地址。
你也可以在这一行指定Netfilter掩码(或fwmark)代替ip地址,例如,下面的条目仍然是有效的:
virtual=2
这一条表明你使用的是ipchains或iptables标记抵达Director的数据包[20],所有含有这个标记的数据包都将按照这个配置文件后面的规则进行处理。
注意:数据包通常被标记创建端口仿射性(例如在端口443和端口80之间),参考第14章关于数据包标记和端口仿射性的讨论。
下面的第一个缩进行指出由哪个真实服务器向客户端计算机提供资源:
real=127.0.0.1:80 gate 1 ".healthcheck.html", "OKAY"
这一行指出Director本身(在回路ip地址127.0.0.1)充当LocalNode模式,将响应抵达VIP 200.100.100.3的客户端请求。
注意:在生产环境中不要使用LocalNode,除非你对集群负载均衡资源进行了充分的测试,如果你不使用LocalNode模式,通常可以改善集群的可靠性。
real=209.100.100.100:80 gate 1 ".healthcheck.html", "OKAY"
这一行使用RIP地址209.100.100.100添加了第一个LVS-DR真实服务器。这个配置文件中的每以real=行都使用下面的语法格式:
real=RIP:port gate|masq|ipip [weight] "Request URL", "Response Expected"
这个语法描述告诉我们该配置文件中每一real=行都必须给出gate、masq或ipip指出要使用的转发方法

service=http
这一行指出测试真实服务器的健康时ldirectord使用的服务,你必须要为你指定的服务载入正确的CPAN Perl 模块。
checkport=80
这一行指出健康检查使用的端口是80。
protocol=tcp
这一行指出该服务使用的协议。可以是tcp、udp或fwm,如果你使用fwm或fwmark标记的数据包,在virtual=那一行你必须使用Netfilter掩码(或fwmark)代替ip地址。
scheduler=wrr
这一行指出使用的是带权重的循环负载均衡技术进行调度(查看前面的real行为每个真实服务器分配的权重值),参考第11章中描述的LVS支持的调度方法,ldirectord不检查这一项的有效性,ldirectord只管传递你输入的内容给ipvsadm创建虚拟服务。
checktype=negotiate
这个选项指出ldirectord守护进程使用什么方法监视真实服务器,checktype有以下这样一些值:
negotiate :
这个方法连接到真实服务器发送你指定的请求,如果在checktimeout周期内真实服务器都没有返回你指定的应答字符串,这个节点就被认为已经死掉了,你可以在每个节点上指定请求和应答字符串,或在ldirectord配置文件中添加两行内容,为所有节点设置同样的请求和应答字符串:
request=".healthcheck.html"
receive="OKAY"
connect :
这个方法只是在checkport指定的端口上连接到真实服务器,并假设真实服务器一切都ok,值需要到真实服务器的TCO/IP连接是通畅的,这个方法没有negotiate可靠,当没有negotiate检查可用时,使用这个方法显得有点用处。
A number :
如果在这里输入一个数字代替negotiate或connect ,ldirectord将会执行你指定的数字次数的连接测试,然后再执行一次negotiate 测试,这个方法减少了真实服务器应答健康检查的要求,同时也减少了集群网络通讯[21]。
off :
禁用ldirectord监视真实服务器的健康。
fallback=127.0.0.1
fallback地址指出当IPVS表中没有真实服务器时,客户端计算机应该被重定向的ip地址,通常将其设为loopback地址127.0.0.1,为了强制客户端计算机连接到本地的守护进程,至少要通知用户出现问题了,可能还要让他们知道要获取额外的帮助应该联系谁。
你也可以为fallback web页面设置一个端口号:
fallback=127.0.0.1:9999
注意:我们不会使用持续连接创建我们的虚拟服务表,在ldirectord.conf文件中使用 persistent=启用持续连接。

  Heartbeat配置文件详解:

      原文来自:http://hi.baidu.com/fengjian1585/blog/item/ba1c2b607cc0bfd78db10dfa.html

heartbeat主要的配置文件有3个,aukeys,ha.cf和haresources。下面具体说一下这3个文件的具体功能以及配置。
在说明配置之前先大致阐述一下heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,目前1.2.3版本只支持2个节点间的监测和备份(
release 2将支持多个节点,可惜正在开发之中),它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

===========================================


1.authkeys
heartbeat的认证配置文件

#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
注释说得很清楚,在这里我还是解释一下,该文件主要是用于集群中两个节点的认证,采用的算法和密钥(如果有的话)在集群中节点上必须相同,目前提供了3种算法:md5,sha1和crc。其中crc不能够提供认证,它只能够用于校验数据包是否损坏,而sha1,md5需要一个密钥来进行认证,从资源消耗的角度来讲,md5消耗的比较多,sha1次之,因此建议一般使用sha1算法。
我们如果要采用sha1算法,只需要将authkeys中的auth 指令(去掉注释符)改为2,而对应的2 sha1行则需要去掉注释符(#),后面的密钥自己改变(两节点上必须相同)。改完之后,保存,同时需要改变该文件的属性为600,否则heartbeat启动将失败。具体命令为:chmod 600 authkeys
===========================================


2 ha.cf
heartbeat的主要配置文件

debugfile /var/log/ha-debug 用于记录heartbeat的调试信息

logfile /var/log/ha-log 用于记录heartbeat的日志信息

如果未定义上述的日志文件,那么日志信息将送往local0(对应的#/var/log/messages),如果这3个日志文件都未定义,那么heartbeat默认情况下
将在/var/log下建立ha-debug和ha-log来记录相应的日志信息。

keepalive 2
发送心跳报文的间隔,默认单位为秒,如果你毫秒为单位,那么需要在后面跟ms单位,如1500ms即代表1.5s


deadtime 30 用于配置认为对方节点菪掉的间隔


warntime 10 发出最后的心跳警告报文的间隔

initdead 120 #网络启动的时间


udpport 694 #广播/单播通讯使用的udp端口

bcast eth0 # Linux 心跳所使用的网络接口


mcast eth0 225.0.0.1 694 1 0
如果采用组播通讯,在这里可以设置组播通讯所使用的接口,绑定的组播ip地#址(在224.0.0.0 - 239.255.255.255间),通讯端口,ttl(time to live)所能经过路由的#跳数,是否允许环回(也就是本地发出的数据包时候还接收)


ucast eth0 192.168.1.2
如果采用单播,那么可以配置其网络接口以及所使用的ip地址


auto_failback on
用于决定,当拥有该资源的属主恢复之后,资源是否变迁:是迁移到属主上,还是在当前节点上继续运行,直到当前节点出现故障。


stonith baytech /etc/ha.d/conf/stonith.baytech
用于共享资源的集群环境中,采用stonith防御技术来保证数据的一致性


watchdog /dev/watchdog
该指令是用于设置看门狗定时器,如果节点一分钟内都没有心跳,那么节点将重新启动


node ken3 设置集群中的节点,注意:节点名必须与uname –n相匹配


ping 10.10.10.254
ping指令以及下面的ping_group指令是用于建立伪集群成员,它们必须与下述#的ipfail指令一起使用,它们的作用是监测物理链路,也就是说如果集群节点与上述伪设备不相通,那么该节点也将无权接管资源或服务,它将释放掉资源。

apiauth client-name gid=gidlist uid=uidlist
apiauth ipfail gid=haclient uid=hacluster    设置你所指定的启动进程的权限

===================================================


3 haresource
heartbeat的资源配置文件

just.linux-ha.org 135.9.216.110 http


上面是haresource文件,该文件主要是为你部署的集群配置资源或者服务,它的每一有效行的格式如下:
node-name resource1 resource2 ... resourceN
其中node-name即为集群中某一节点的名称,必须与uname –n相同,
后面的资源组resource1 resource2 …resourceN中每一个资源都是一个shell脚本,它们的搜索路径为/etc/init.d/和/usr/local/etc/ha.d/resource.d(该路径根据你所安装heartbeat的路径有所不同),heartbeat为我们提供了一个非常好的资源扩展框架,如果我们需要控制一种自己的资源,只需要实现一个支持start和stop参数的shell脚本就可以了,目前heartbeat所支持的资源脚本可以在我提供的上述路径中去查看。

相关阅读 更多 +
排行榜 更多 +
棘手的狙击手

棘手的狙击手

飞行射击 下载
坦克快跑

坦克快跑

飞行射击 下载
野生猎人猎杀恐龙

野生猎人猎杀恐龙

飞行射击 下载