关于尚观
最新课程体系
企业服务
零起点咨询
开放课程
报名咨询
免费资源申请
授权加盟
学员专区&薪资
认证课程
  • 尚观首页
  • 尚观简介
  • 师资力量
  • 尚观文化
  • 尚观动态
  • 加入尚观
  • 联系我们
  • 珍贵瞬间
  • Linux系统与集群
  • 数据库集群架构师
  • 嵌入式内核驱动开发
  • 服务器开发架构师
  • 研发型测试架构师
  • RHCE/LPI认证体系
  • Oracle OCP认证
  • 企业高级技术培训
  • 批量人才供应及研发团队建设
  • 软件外包及研发项目合作
  • 人力外包及人力供应
  • 猎头服务
  • 开启职业生涯
  • 如何入门
  • Unix/Linux职业方向
  • 嵌入式职业方向
  • 集群(Cluster)Oracle(DBA)方向
  • 新手专栏
  • Unix/Linux新手专栏
  • Unix/Linux管理
  • 嵌入式及POSIX开发
  • Linux开源文化及市场
  • 最近网络课堂
  • P2P教学视频
  • 精彩Linux培训视频
  • 零起点数据库集群(长期)
  • 嵌入式驱动(长期)
  • Linux金牌三证(RHCE级)
  • Linux架构师(RHCA级)
  • 嵌入式/驱动加速课程
  • 其他咨询
  • Linux免费网络安全公开课
  • 免费Linux资料申请
  • 免费Linux安全&DDOS防御课程
  • 免费嵌入式Linux开发课程
  • 免费Linux网络安全机制
  • 授权加盟&报名点申请
  • 如何加盟
  • 我们的优势
  • 成功案例
  • 行业市场分析
  • 授权加盟中心
  • 学员毕业薪资(不断更新中)
  • 加入尚观猎头服务(仅限老学员)
  • 学员交流论坛
  • OCP认证
  • Intel认证
  • RHCE认证
  • RHCE+OCP
  • RHCE+LPI


    您现在的位置:尚观Linux培训 - 嵌入式Linux培训专家尚观Linux培训 » Unix/Linux管理 » Linux 上的高可用中间件,第 3 部分 IBM LoadLeveler

Linux 上的高可用中间件,第 3 部分 IBM LoadLeveler

 
咨询热线
  • 免费咨询电话:
    400-700-0056
    800-810-0056

    教学就业监督电话:
    400-810-3016

  • QQ在线咨询:

    在线咨询

免费资源
  • -4月24日
  • [沈阳]Linux嵌入式-4月24日
  • [上海]DDos攻防-4月24日
  • [上海]Linux嵌入式-4月24日
  • [深圳]DDos攻防-4月24日
  • [深圳]Linux嵌入式-4月24日
  • [北京]DDos攻防-4月24日
  • 就业课程
  • 免费课程
  • 五万年薪就业保证课程

  • ULP-S 尚观王者IT集群课程
  • UEA-嵌入式内核驱动开发者
  • UGA-4G游戏与应用开发架构师
  • ULA-Linux系统与集群架构师
  • UOA-Oracle数据库集群架构
  • 八万年薪就业保证课程

  • UOM- Oracle集群大师
  • UEM-嵌入式开发大师
  • OCM考试指南全国免费公开课—全面解析及经验分享 7月17日
  • Linux网络攻击威胁分析以及Linux安全技巧 7月27日
  • 零基础轻松快速掌握嵌入式开发技术 7月14日
  • 4G手机游戏与应用高级开发实战课 8月31日
  • iPhone游戏及应用开发高级课程 7月12日
Linux培训●最新开班
  • [大连]ULA课程6月班热招!
  • [沈阳]UEA课程6月班热招!
  • [沈阳]ULA课程6月班热招!
  • [北京]UEA课程6月班热报!
  • [北京]UOA/ULA课程6月班!
  • [上海]UEA课程5月班热招!
  • [上海]ULA/UOA课程6月班!
  • [深圳]UEA课程6月班热招!
 
文章内容
  • 通过服务器负载均衡实现高可用性
    对随需应变的商务而言,工作负载管理至关重要。IBM LoadLeveler 是一个作业管理系统,它通过匹配作业的处理需求与可用资源,让用户可以在更短的时间内运行更多作业。保持作业管理系统的最大限度系统正常运行时间日益重要。学习如何去使用 LoadLeveler 内在的高可用能力获得 LoadLeveler 集群的高可用性,以及如何使用开放源代码的高可用性软件来进一步提高其可用性。
    IBM LoadLeveler 是一个工作负载管理系统,允许用户在一个资源池中提交、调度和执行作业。它为集群资源的最优化利用提供了动态调度和工作负载均衡的功能。它还为有效的作业和工作负载管理提供了单点控制。
    LoadLeveler 在其每个客户机机器上作为一组后台进程运行。一组客户机机器从属于某个中央管理器机器的形式,称作是 LoadLeveler 集群,LoadLeveler 集群由配置文件来定义。
    为了最大限度地理解并使用本文,您应该对 IBM LoadLeveler 和高可用集群有基本的了解。还应该熟悉本系列的第一篇文章。
    使用 LoadLeveler 实现高可用性
    在作业的调度中,LoadLeveler 集群的每一台机器都要扮演一个或者多个角色。这些角色以及它们如果出现故障会带来的影响如下:
    • 调度机器(scheduling machine): 作业提交的结果是,提交来的作业放置在调度机器所管理的一个队列中。调度机器询问中央管理器(接下来会描述此角色),找到可以运行那个作业的机器,然后调度机器还要在磁盘上保持关于作业的持久信息。
    每个调度机器上的作业信息通常并不是共享的,也不能由 LoadLeveler 集群中其他调度机器所访问。调度机器独立运作,当某个调度机器出现故障时,位于出现故障的调度机器上的作业信息将临时不可使用(但并没有丢失)。在此期间,将不考虑执行等待被调度的作业。令调度机器尽可能快地恢复过来至关重要。在调度机器的高可用配置的示例中,必需的本地文件和目录都位于外部共享磁盘存储器上,这就使得当调度器节点出现故障时,备份的调度机器可以访问它们。
    • 中央管理器机器(central manager machine): 中央管理器的角色是,基于作业的需求在 LoadLeveler 集群中找到将要运行那个作业的一台或多台机器。找到机器后,它会通知调度机器。
    中央管理器是 LoadLeveler 的中心控制点。LoadLeveler 允许您定义一个预备的中央管理器,在主中央管理器出现故障时它可以接管那个角色。稍后的一节将对此进行详细讨论。
    当某个中央管理器出现故障,而又没有定义预备的中央管理器时,已经开始的作业将会继续运行直到完成,不会丢失信息,但是它们的状态将不会报告给用户。调度节点将会接受新的作业,稍后等中央管理器恢复后或者预备的中央管理器接管后再转发。
    • 执行机器(executing machine):运行作业的机器称为执行机器。
    当某个执行节点出现故障时,在那个节点上运行的作业会失败,需要在节点恢复后重新开始运行。作业或者从头开始运行,或者从最后一个检查点开始运行。作业检查点可以选择作为一个选项,或者编入应用程序中。备份执行节点的建立,将直接提供在更短时间内重新开始运行作业的能力。不管有没有备份节点,当节点出现故障时,作业及其作业信息和检查点都不会丢失,因为借助合适的线缆和磁盘技术仍然可以访问它们的磁盘。
    调度节点和执行节点都要维持关于它们的作业状态的持久信息。调度节点和执行节点通过一个协议来确保至少它们其中一个要在磁盘上保持那些状态信息。这样就确保了当调度节点或者执行节点出现故障时那些状态可以恢复。调度节点和执行节点都不会丢弃作业的信息,直到它被传递到其他节点并被接受。在本文所阐述的配置中,作业信息存储在一个共享磁盘上。
    • 提交机器(submitting machine):这台机器用于提交、查询和取消作业,没有任何关于作业的持久数据。由于没有任何持久数据,因而对这些机器来说高可用性并不重要。
    客户机机器的角色取决于在它之上配置的是哪个 LoadLeveler 后台进程。总体上,集群具备构建、提交、执行和管理串行与并行批作业的能力。
    接下来的章节讨论 LoadLeveler 可用于高用性的一些内在能力,以及可以如何使用 heartbeat 提高整个系统的可用性。
    安装 IBM LoadLeveler
    本节介绍的是如何在三台机器上(ha1、ha2 和 ha3)安装 IBM LoadLeveler 3.2 for Linux™。这些步骤基于 LoadLeveler Installation Memo 文档(见 参考资料 中的链接)第 4 章中所列举的步骤。
    1.       为 LoadLeveler 创建如下目录:
    o        本地目录:/var/loadl
    o        主目录:/home/loadl
    o        发布目录:/opt/ibmll/LoadL/full
    o        中央管理器机器的名称:ha
    2.       以 root 身份登录
    3.       创建 loadl 组名称。 下面的命令会在所有节点上创建一个组 ID 为 1000 的 loadl 组:
    groupadd g 1000 loadl
    4.       创建 loadl 用户 ID。 下面的命令会在所有的节点上创建 loadl 用户标识:
    useradd c loadleveler_user -d /home/loadl -s /bin/bash \
    -u 1000 g 1000 -m loadl
    5.       安装 LoadLeveler RPM
    a. 安装 license RPM(在 LLIMAGEDIR 中包含有安装所用的 RPMS)
    cd $LLIMAGEDIR
    rpm -Uvh LoadL-full-license-3.2.0.0-0.i386.rpm
    b. 安装其他 RPM
    cd /opt/ibmll/LoadL/sbin
    . /install_ll -y -d "$LLIMAGEDIR"
    6.       运行初始化脚本 llinit
     .   创建本地目录:
    mkdir /var/loadl
    a. 设置所有者
    chown loadl.loadl /var/loadl
    b. 切换到
    loadl
    c.  ID
    su - loadl
    d. 输入下面的命令,将当前目录切换到发布目录中的 bin 子目录:
    cd /opt/ibmll/LoadL/full/bin
    e. 确保您在 LoadLeveler 的主目录、本地目录和 /tmp 目录中有写权限
    f.   输入 llinit 命令,如下:
    ./llinit -l数据库专家 认证l /var/loadl -release /opt/ibmll/LoadL/full -cm ha
    创建高可用的调度机器配置
    在这个设置中:
    • 机器 ha1 将作为主调度机器
    • 机器 ha2 将作为备份调度机器
    • 机器 ha3 将用作一台作业执行机器
    在高可用配置中,ha1 所需要的本地文件和目录位于外部共享磁盘上,这就使得当调度节点出现故障时 ha2 可以使用它们。就是像下面这样设置的:
    1.       在 ha1 和 ha2 上以 root 身份登录。
    2.       在共享磁盘(/ha)上创建下面的目录:
    o        /ha/loadl/execute
    o        /ha/loadl/spool
    3.       在节点 ha1 上运行下面的命令来设置所有者:
    chown loadl.loadl /ha/loadl/
    chown loadl.loadl /ha/loadl/execute
    chown loadl.loadl /ha/loadl/spool
    4.       在节点 ha1 和 ha2 上切换到 loadl ID:
    su - loadl
    5.       在节点 ha1 上使用下面所示的命令对共享目录设置适当的权限:
    chmod 0777 /ha/loadl/execute
    chmod 775 /ha/loadl/spool
    6.       在节点 ha1 和 ha2 上,删除 /var/loadl 下的 execute 和 spool 目录。
    rm -rf /var/loadl/execute
    rm rf /var/loadl/spool

    7.       在节点 ha1 和 ha2 上使用下面的命令创建指向共享目录的符号链接:
    ln -s /ha/loadl/execute /var/loadl/execute
    ln -s /ha/loadl/spool /var/loadl/spool
    8.       编辑机器的节文件(stanza)。下面是不同节点上 LoadL_admin(在 /home/loadl)文件的相关部分:
    a. ha1 作为主调度机器和中央管理器。在生产环境中,建议将中央管理器和调度后台程序安排在不同的机器上。
    ...
    ha1:   type = machine
                  central_manager = true
                  schedd_host = true
    ha3:   type = machine
    ...
    b. ha2 作为备份的调度机器和中央管理器
    ...
    ha2:   type = machine
            central_manager = true
            schedd_host = true
    ha3:   type = machine
    ...
    c.  ha3 作为执行机器
    ...
    ha:    type = machine
           central_manager = true
           schedd_host = true
    ha3:   type = machine
    ...
    9.       修改不同机器上 LoadL_config(在 /home/loadl 目录下)文件中的 RUNS_HERE 标记,如下:
     .   ha1 和 ha2
    ...
    SCHEDD_RUNS_HERE        =       True
    STARTD_RUNS_HERE        =       False
    ...
    这将确保作业不会被调度到调度机器上去执行。我们希望 ha1 和 ha2 只作为调度机器。
    a. ha3
    ...
    SCHEDD_RUNS_HERE        =       False
    STARTD_RUNS_HERE        =       True
    ...
    10.    编辑三个节点上的 /etc/hosts 文件,如下:
     .   ha1
    ...
    9.22.7.46    ha.haw2.ibm.com ha
    9.22.7.46    ha2.haw2.ibm.com ha2
    ...
    a. ha2
    ...
    9.22.7.46    ha.haw2.ibm.com ha
    9.22.7.46    ha1.haw2.ibm.com ha1
    ...
    b. ha3
    ...
    9.22.7.46    ha.haw2.ibm.com ha
    9.22.7.46    ha1.haw2.ibm.com ha1
    9.22.7.46    ha2.haw2.ibm.com ha2
    ...
    配置 heartbeat 来管理调度机器
    要配置 heartbeat 来管理 LoadLeveler:
    1.       创建一个启动和停止 LoadLeveler 进程的脚本。清单 1 展示了一个非常基本的脚本。可以根据您的设置进行进一步定制。将这个脚本放入 /etc/rc.d/init.d 目录中。

    清单 1. loadl 脚本
    #!/bin/bash
    #
    #          /etc/rc.d/init.d/loadl
    #
    # Starts the loadleveler processes
    #
    # chkconfig: 345 89 56
    # description: Runs loadleveler
    . /etc/init.d/functions
    # Source function library.
    PATH=/usr/bin:/bin:/opt/ibmll/LoadL/full/bin
    #======================================================================
    SU="sh"
    if [ "`whoami`" = "root" ]; then
        SU="su - loadl"
    fi
    #======================================================================
    start() {
                 echo "$0: starting loadleveler"
                 $SU -c "llctl start"
    }
    #======================================================================
    stop() {
                 echo "$0: Stoping loadleveler"
                 $SU -c "llctl stop"
    }
    case $1 in
    'start')
        start
        ;;
    'stop')
        stop
        ;;
    'restart')
        stop
        start
        ;;
    *)
        echo "usage: $0 {start|stop|restart}"
        ;;
    esac
    2.       现在修改 /etc/ha.d/haresources 文件(在两台调度机器节点上),令它们包含上面的 loadl 脚本。修改后的文件相关部分是:
    ha1.haw2.ibm.com 9.22.7.46
    Filesystem::hanfs.haw2.ibm.com:/ha::/ha::nfs::rw,hard loadl
    这一行表明,在启动 heartbeat 时,令 ha1 服务集群 IP 地址,挂载共享的文件系统,然后启动 LoadLeveler 后台进程。在关闭时,heartbeat 将首先停止 LoadLeveler,然后卸载共享文件系统,最后释放 IP。
    测试调度机器失效切换
    本节将阐述如何测试调度后台进程的高可用性。
    1.       使用下面的命令先后在主节点和备份节点上启动 heartbeat 服务:
    /etc/rc.d/init.d/heartbeat start
    当 heartbeat 成功启动后,您应该可以看到一个新的界面(interface),其 IP 是您在 ha.cf 文件所配置的那个。启动了 heartbeat 后,去看一下主节点上的日志文件(默认是 /var/log/ha-log),并确保它正在接管 IP 并启动了 LoadLeveler。通过 ps 命令确认 LoadLeveler 后台进程正在在主节点上运行。heartbeat 将不会在备份节点上启动上述任何一个进程。只是在主节点出现故障后才会启动它们。
    2.       使用下面的命令以用户 loadl 的身份 在 ha3 上启动 loadleveler 后台进程:
    llctl start
    3.       通过耗尽 startd 后台进程,令 ha3 不能作为一台执行机器。为了测试失效切换,这需要在提交作业后再留出足够的时间。以用户 loadl 的身份在节点 ha3 上执行下面的命令:
    llctl drain startd
    4.       在 ha1 机器上,以用户 loadl 的身份使用下面的命令查看哪些作业已经调度到 LoadLeveler 集群:
    llq
    在我们的设置中命令的输出结果将列出 LoadLeveler 集群中所有未完成的旧的作业。
    在 ha1 机器上,以用户 loadl 的身份使用下面的命令查看 LoadLeveler 集群中机器的状态:
    llstatus
    在结果中,您可以看到,在 ha1 机器上 Scehdd 是可用的,而由于前面的第三个步骤,ha3 机器上的 Startd 已经被耗尽了。
    5.       设置示例目录的所有者。 在节点 ha3上(作业将要执行的地方)执行下面的命令:
    chown loadl.loadl /opt/ibmll/LoadL/full/samples
    6.       提交一个作业。 在机器 ha1 上以用户 loadl 的身份执行下面的命令,提交一个 LoadLeveler 所附带的示例作业:
    cd /home/loadl/samples
    llsubmit job1.cmd
    如果成功,您将看到一条类似如下的消息:
    llsubmit: The job "ha1.haw2.ibm.com.23" with 2 job steps has been submitted.
    示例 job1 是一个具有两个步骤的作业,结果是创建两个新的作业步骤。这两个新的作业步骤将变成停止状态(I),因为没有可用的执行机器。
    现在,让主调度机器出现故障。
    7.       模拟失效切换。 只要使用下面这个命令在主系统中停止 heartbeat 即可。
    /etc/rc.d/init.d/heartbeat stop
    在不到一分钟之内,您应该就会看到在备份机器上所有的服务都启动起来。可以在备份机器上通过检查 /var/log/ha-log 文件并执行 ps 命令来确认 LoadLeveler 正在备份机器上运行。备份机器接管控制权后,在备份机器上以用户 loadl 的身份运行 llstatus 和 llq 命令。
    在运行结果中,应该注意到:
    a.       所有先前的未完成的作业,包括上面步骤 6 中提交的作业所对应的两个作业。这就证明了当机器发生失效切换时作业信息都保存了下来。
    b.       现在在 ha2 机器上 schedd 是可用的。
    c.        在 ha3 机器上 startd 仍然是停止的。
    8.       通过在 ha3 上以用户 loadl 的身份执行下面的命令,重新恢复 ha3 机器上的 startd 后台进程:
    llctl resume startd
    ha3 机器现在可以用于执行作业。两个作业应该会变为运行状态,并且应该在 ha3 机器上最终完成。在 ha3 机器上的 /home/loadl/samples 目录中有由这两个步骤的作业所创建的 .out 文件,可以查看它们以确认作业的完成。对这次运行而言,您应该会看到两个文件,即 job1.ha1.23.0.out 和 job1.ha1.23.1.out。
    9.       重新在主节点上启动 heartbeat 服务。这应该会停止备份节点上的 LoadLeveler 进程,并在主节点上启动它们。主节点同样会接管集群 IP。使用下面这个命令启动 heartbeat 服务:
    /etc/rc.d/init.d/heartbeat start
    您可以看到,在主调度节点出现故障前提交的作业,在备份节点接管后如何通过共享磁盘被恢复。
    建立中央管理器的高可用性
    如果您决定像安排调度机器那样将中央管理器安置在独立的节点上(ha4),那么您可以利用中央管理器内在的高可用性。要尝试这种配置,请在所有机器的配置文件中将 ha4 定义为中央管理器。
    网络通信、软件或者硬件出现故障的问题都会导致中央管理器不可使用。在这种情况下, LoadLeveler 集群中的其他机器将认为中央管理器机器不再运转。为解决这个问题,您可以在机器的节文件中指派一个或多个备用的中央管理器来接手控制。
    下面的机器节文件示例将机器 ha5 定义为一台备用的中央管理器:
    ha5: type = machine
         central_manager = alt
    如果主中央管理器出现故障,那么备用的中央管理器就会成为中央管理器。当某个备用中央管理器成为中央管理器时,作业不会丢失,但集群中所有的机器向新的中央管理器汇总这些作业可能需要一会儿的时间。结果是,在短时间内作业状态查询可能会不正确。
    定义备用中央管理器时,您应该在配置文件中设置下面的关键字:
    CENTRAL_MANAGER_HEARTBEAT_INTERVAL = <amount of time in seconds>
    CENTRAL_MANAGER_TIMEOUT = < the number of heartbeat intervals>
    在下面的示例中,备用中央管理器将等待两个时间间隔,其中每个时间间隔为 30 秒:
    CENTRAL_MANAGER_HEARTBEAT_INTERVAL = 30
    CENTRAL_MANAGER_TIMEOUT = 2
    测试中央管理器机器的失效切换
    可以通过在 ha4 机器上杀死名为 Loadl_negotiator 的中央管理器进程来测试失效切换。为了防止中央管理器后台进程在同一台机器被重新启动,您应该将 RESTARTS_PER_HOUR 设置为 0。这样,在大约一分钟之内,将在备用节点 ha5 上启动中央管理器。
    为执行 LoadLeveler 的机器设置高可用性
    此设置类似于为调度机器设置高可用性。
    结束语
    在本文中,您已经了解了如何使用 LoadLeveler 内在的能力实现 LoadLeveler 集群的高可用性,以及如何使用开放源代码软件进一步提高可用性。


    致谢
    感谢 Waiman Chan 对 IBM LoadLeveler 高可用性实现的审查,感谢 Liana L. Fong 所提供的关于 IBM LoadLeveler 的技术指导。




    精彩Linux视频,免费先学!

    查看:尚观Linux培训学员最新就业薪资待遇统计报告!

    查看:UTA-高级研发型测试架构师大纲
    查看:UDA-Linux服务器开发架构师大纲
    查看:UEA-嵌入式内核驱动开发者大纲
    查看:UOA-Oracle数据库集群架构大纲
    查看:ULA-Linux系统与集群架构师大纲

    填表获取 Linux、嵌入式、Oracle 技术资料

  • 姓    名:
  • 固    话:
  • 手    机:
  • E-Mail :
  • 所在地:
  •         

北京(Beijing)

电子地图
电话:(010)62113016/17 68949060
地址:北京海淀区中关村南大街 甲10号 银海大厦南区410-418

上海(Shanghai)

电子地图
电话:(021)64859996 64859889
地址:上海徐汇区钦江路333号漕河泾开发区38号楼申能科技3楼

深圳(Shenzhen)

电子地图
电话:(0755)82995128 82995168
地址:深圳福田区 彩田路 中深花园B2005室

沈阳(Shenyang)

电子地图
电话:(024)31500816 31500817
地址:沈阳和平区三好街54号物产科贸大厦2号楼201室

大连(Dalian)

电子地图
电话:(0411)84336822 84326822
地址:大连沙河口区西安路86号行政大厦(罗斯福广场对面)17楼1705室

成都(Chengdu)

电子地图
电话:(028)66677820 66677828 66677829
地址:成都青羊区上西顺城街252号顺吉大厦8楼A3

2005-2009高新技术企业

LPI授权培训考试中心

CSDN战略伙伴

51Job战略伙伴

Oracle WDP授权培训与考试中心

Intel软件服务培训供应商

Redhat授权培训与考试中心

国家高新技术企业认证
 

友情链接(联系QQ:87865954):   LPI  RedHat  CSDN  ChinaUnix  ITPub  Eygle.Com  PHP中国  网易教育  Linux培训  嵌入式培训 
Linux联盟  21CN教育  Unix爱好者家园  ZOL服务器  广告联盟  Linux  嵌入式技术网  股票入门  大功率LED网   搜电网   网页制作
杭州写字楼网  时尚论坛  医药营销联盟  Linux技术中心  泉州人才网  广州招聘网  天天健康  上海商铺  北京赶集网  畅享网  SVN中文技术网 
网罗天下  工具软件下载  Oracle培训  北京法律咨询  天津赶集网  嵌入式资讯网  天极导航  Fedora中文爱好者  oklinux  沸点100网  Linux公社 
深圳本地宝  IT英才网  教培英才网  个人简历模板  中国二手车城  连锁加盟  天极网南京站

COPYRIGHT © 2000-2009 北京尚观科技有限公司 - Linux培训及嵌入式培训专家 ALL RIGHTS RESERVED

咨询热线:400-700-0056    800-810-0056
京ICP备05058027号 | Linux就业信息 | 免责声明 |