为高可用性集群设置 sqlhosts、连接管理器和密码文件的示例

此示例显示如何为较小的高可用性集群设置连接管理器。

您有由以下三个服务器组成的高可用性集群配置:
  • 主服务器
  • HDR 辅助服务器
  • SD(共享磁盘)辅助服务器
您希望集群提供以下三种不同的服务来支持不同的应用程序:
  • 联机事务处理 (OLTP),可以在主服务器上运行
  • Payroll 服务,可以在 HDR 辅助服务器或主服务器上运行
  • 报告服务,可以在 HDR 辅助服务器或 SD 辅助服务器上运行

下图说明了连接管理器将客户机连接请求路由到相应服务器时所需的服务级别协议。

图: 连接管理器配置


在此图之前的段描述了此图的内容。
连接管理器计算机和客户端计算机上的 sqlhosts 文件具有以下条目:
#dbservername    nettype       hostname      servicename      options
cluster_1 group    -        -       i=10
ifx       onsoctcp host1    port1   g=cluster_1
ifx_hdr   onsoctcp host2    port2   g=cluster_1
ifx_sds   onsoctcp host3    port3   g=cluster_1
oltp     onsoctcp    cmhost1 cmport1
report    onsoctcp cmhost1  cmport2
payroll   onsoctcp cmhost1  cmport3 
每个数据库服务器上的 sqlhosts 文件具有以下条目:
#dbservername    nettype       hostname      servicename      options
ifx     onsoctcp host1    port1
ifx_hdr onsoctcp host2    port2
Ifx_sds onsoctcp host3    port3
连接管理器的 sqlhosts 文件定义了一个名为 cluster_1 的服务器组。该服务器组已配置为确保在主服务器发生故障且重新启动了连接管理器时,连接管理器可以重新连接到集群。该服务器组包含可用作故障转移目标的所有服务器节点(ifxifx_hdrifx_sds)。

要配置和启动连接管理器,请执行以下操作:

  1. 创建密码文件并将其加密。对于此示例,请创建包含以下条目的文件 passwords.txt
    ifx      ifx       gbasedbt password1
    ifx_hdr  ifx_hdr   gbasedbt password2
    ifx_sds  ifx_sds   gbasedbt password3
    运行以下命令来加密该文件:
    onpassword -k SecretKey -e ./passwords.txt
  2. 设置 GBASEDBTDIR 环境变量以指向安装了 Client SDK 的目录。
  3. 创建连接管理器配置文件。对于此示例,在要运行连接管理器的计算机上,创建包含以下条目的文件 cmconfig
    NAME      cm_example
    LOG       1
    LOGFILE ${GBASEDBTDIR}/etc/cmlog
    
    CLUSTER cluster_1
    {
      GBASEDBTSERVER ifx 
      SLA  oltp    DBSERVERS=primary
      SLA  payroll DBSERVERS=HDR,primary
      SLA  report  DBSERVERS=SDS,HDR
      FOC  ORDER=ifx_sds,ifx_hdr \
           TIMEOUT=10 \
           RETRY=1
    }
    此配置文件指定了以下信息和行为:
    • 连接管理器实例的名称为 cm_example
    • 已启用日志记录。
    • 日志文件的名称为 cmlog,并且该日志文件位于 $GBASEDBTDIR/etc 目录中。
    • 连接管理器管理的是名为 cluster1 的集群。
    • 连接管理器启动时,将在 sqlhosts 文件中搜索 ifx 条目,并连接到该数据库服务器。
    • CONNECT TO @oltp 连接请求将定向到主服务器。
    • CONNECT TO @payroll 连接请求将定向到 HDR 辅助服务器。如果 HDR 辅助服务器不可用,CONNECT TO @payroll 连接请求将定向到主服务器。
    • CONNECT TO @report 连接请求将定向到 SD 辅助服务器。如果 SD 辅助服务器不可用,CONNECT TO @report 连接请求将定向到 HDR 辅助服务器。
    • 如果主服务器发生故障,ifx_sds 会成为新的主服务器。如果 ifx_sds 不可用,ifx_hdr 会成为新的主服务器。
    • 连接管理器再等待 10 秒,以等待有关连接单元的主服务器故障转移处理开始的事件。
    • 连接管理器在主服务器的 HA_FOC_ORDER 配置参数指定的列表中循环 1 次后,自动故障转移将终止。
    某些参数和属性不包含在此配置文件中,因此连接管理器具有以下缺省行为:
    • 未设置 EVENT_TIMEOUT 参数,因此连接管理器将等待主服务器事件 60 秒,然后再开始故障转移处理。
    • 未设置 SECONDARY_EVENT_TIMEOUT 参数,因此连接管理器将等待辅助服务器事件 60 秒,然后再与辅助服务器断开连接。
    • 未设置 SQLHOSTS 参数,因此连接管理器将依次检查 ifx 的本地 sqlhosts 文件和远程 sqlhosts 文件以查找 ifx_sdsifx_hdr 的实例。
    • 未设置 SLA 参数的 WORKERS 属性,因此将为每个 SLA 分配四个工作程序线程。
  4. 编辑主服务器、HDR 辅助服务器和 SD 辅助服务器上的 sqlhosts 文件:
    #dbservername    nettype       hostname      servicename      options
    ifx     onsoctcp host1    port1
    ifx_hdr onsoctcp host2    port2
    ifx_sds onsoctcp host3    port3
  5. 在连接管理器计算机上和每个客户端计算机上,编辑 sqlhosts 文件:
    #dbservername    nettype       hostname      servicename      options
    cluster_1 group    -        -       i=10
    ifx       onsoctcp host1    port1   g=cluster_1
    ifx_hdr   onsoctcp host2    port2   g=cluster_1
    ifx_sds   onsoctcp host3    port3   g=cluster_1
    oltp     onsoctcp    cmhost1 cmport1
    report    onsoctcp cmhost1  cmport2
    payroll   onsoctcp cmhost1  cmport3 
  6. 在连接管理器计算机上,通过运行 oncmsm 命令启动连接管理器:
    oncmsm -c cmconfig
  7. 检查日志文件以验证连接管理器是否正确启动。