企业实例~4.HighAvailability 高可用服务搭建之——ldirectord.cf详解

ldirectord 使用一个配置文件建立 IPVS 表,你可以给这个文件取任意合法的名字,但你必
须将其放于/etc/ha.d/conf 目录下,例如:在 VIP 209.100.100.3 上的 IPVS 配置文件可以是:

checktimeout=20
checkinterval=5
autoreload=yes
quiescent=no
logfile="info"
virtual=209.100.100.3:80
real=127.0.0.1:80 gate 1 ".healthcheck.html", "OKAY"
real=209.100.100.100:80 gate 1 ".healthcheck.html", "OKAY"
service=http
checkport=80
protocol=tcp
scheduler=wrr
checktype=negotiate
fallback=127.0.0.1


注意:在 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 网站上都有说明文档
(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 指出要使
用的转发方法(回忆第 11 章中 Director 使用不同的转发方法),这个配置文件使用稍微
不同的术语(基于传递给 ipvsadm 命令的参数)来代表三种转发方法,具体请查看表 15­
1:

跟随转发方法后面的是分配给真实服务器的权重值,只在带权重的调度方法中有用,最
后两个参数指出 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"
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=启用持续连接,请参考第 14 章关于持续连接的讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值