全部博文(321)
分类: LINUX
2010-07-31 10:46:14
ldirectord使用一个配置文件建立IPVS表,你可以给这个文件取任意合法的名字,但你必须将其放于/etc/ha.d/conf目录下,例如:在VIP 209.100.100.3上的IPVS配置文件可以是:
checktimeout=20 |
注意:在virtual行后面的行必须缩进4个空格或一个tab字符进行标记。
这个文件的前面4行是“全局”设置,它们应用到多个虚拟主机,但是当使用Heartbeat时,这个文件通常都包括一行virtual= 只指定一个VIP地址,这就是为什么你在haresources文件中设置VIP时要每一行放一个的原因的,为每个VIP运行一个ldirectord守护进程,每个ldirectord守护进程使用不同的配置文件,因此每个VIP及其IPVS表成为一个Heartbeat可以管理的资源。
下面来看看这个配置文件中的每一行:
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网站上都有说明文档()。
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指出要使用的转发方法(回忆第11章中Director使用不同的转发方法),这个配置文件使用稍微不同的术语(基于传递给ipvsadm命令的参数)来代表三种转发方法,具体请查看表15-1:
ldirectord配置选项 |
ipvsadm使用的参数 |
ipvsadm -L的输出 |
LVS转发方法 |
gate |
-g |
Route |
LVS-DR |
ipip |
-i |
Tunnel |
LVS-TUN |
masq |
-m |
Masq |
LVS-NAT |
跟随转发方法后面的是分配给真实服务器的权重值,只在带权重的调度方法中有用,最后两个参数指出ldirectord应该访问哪个web页面或URL检查真实服务器的健康状况,以及ldirectord应从真实服务器那里接收到预期的响应。这两个参数都需要用引号引起来,并用逗号隔开。
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" |
这个方法只是在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=启用持续连接,请参考第14章关于持续连接的讨论。