利用Linux群集进行不间断认证分析
2007-03-12 10:50:35 来源:WEB开发网服务脚本
对于简单的冷备用案例,我们可以使用标准的 /etc/init.d/slapd 脚本而无需做更改。但是我们希望执行特别的功能,所以我们创建了自己的 slapd 脚本,该脚本存储在 /etc/ha.d/resource.d/ 中。Heartbeat 将该目录作为它搜索路径中的第一个,因此我们无需担心会运行 /etc/init.d/slapd 脚本。但是,您应当检查以确定在引导时不再启动 slapd(从您的 /etc/rc.d 树除去任何 S*slapd 文件)。首先,在第 17 和 18 行我们指明 slapd 服务器的启动配置文件。
该脚本遵循标准 init.d 语法,因此启动信息包含在从第 21 行开始的 test_start() 函数中。首先我们停止所有当前正在运行的 slapd 实例。在第 39 行我们利用主配置文件启动主服务器。我们的设计将遵循这样的规则:如果主节点和辅助节点都在运行,则在主节点上启动 slapd 作为主服务器,在辅助节点上启动 slapd 作为从服务器,并启动复制守护程序。如果仅有一个节点在运行,则启动 slapd 作为主服务器。虚拟 Ip 依赖于 slapd 主服务器。为了完成该操作,我们必须知道哪个节点正在执行脚本,并且如果我们位于主节点,那么我们需要知道辅助节点的状态。重要的内容位于脚本的“start”分支。因为我们已经在 Heartbeat 配置中指明了主节点,所以我们知道,当 test_start() 函数运行时,它是在 Heartbeat 的主节点上运行的(因为 Heartbeat 使用了 /etc/init.d/ 脚本,所以所有脚本都是利用参数“start|stop|restart”调用的)。当调用脚本时,Heartbeat 会设置许多环境变量。下面是一个我们感兴趣的环境变量:
HA_CURHOST=slave6
我们可以使用“HA_CURHOST”值来告诉我们,何时正在主节点(slave6)上执行,何时正在进行故障转移(此时 HA_CURHOST 的值为“slave5”)。现在我们需要知道另一个节点的状态。为了得到结果,我们可以询问 Heartbeat。我们将使用 Heartbeat 提供的 api_test.c 文件,并创建一个简单客户机来询问节点状态(api_test.c 文件对客户机还有很多操作,我们只除去了不需要的部分,并添加了一条输出语句)。请注意程序中执行查询的第 31 行。
更多精彩
赞助商链接