以下示例显示了如何针对高可用性集群、复制集、网格和服务器集来配置各种服务级别协议 (SLA)。
在以下示例中,可以使用服务器别名或通用服务器类型。例如,RSS 指定连接管理器对集群中的每个 RS 辅助服务器进行评估,以确定客户机应用程序请求的最佳候选项。您还可以指定数据库服务器的网络别名,例如 sds1 或 rss1。
以下配置文件示例显示了各种选项:
NAME cm1 LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm1.log CLUSTER east { GBASEDBTSERVER ids_e1,ids_e2 SLA secondaryNodes DBSERVERS=SDS,HDR,PRI FOC ORDER=ENABLED \ TIMEOUT=5 \ RETRY=1 CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh }
NAME cm2 LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm2.log CLUSTER west { GBASEDBTSERVER ids_w1,ids_w2 SLA oltp DBSERVERS=primary SLA report DBSERVERS=HDR,SDS FOC ORDER=ENABLED \ TIMEOUT=5 \ RETRY=2 CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh }
此示例针对高可用性集群配置了连接管理器,并定义了两个 SLA。
要启用服务器间的负载均衡,请用圆括号将服务器类型列表括起。
NAME cm3 LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm3.log CLUSTER south { GBASEDBTSERVER ids_s1,ids_s2 SLA secondary DBSERVERS=(SDS,HDR) FOC ORDER=ENABLED \ TIMEOUT=5 \ RETRY=1 CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh }
连接管理器 cm3 将客户机 CONNECT TO @secondary 连接请求定向到 CPU 利用率最低的 SD 或 HDR 辅助服务器。
NAME cm4 LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm4.log CLUSTER north { GBASEDBTSERVER ids_n1,ids_n2 SLA sla1 DBSERVERS=alpha \ MODE=REDIRECT SLA sla2 DBSERVERS=beta \ MODE=PROXY SLA sla3 DBSERVERS=SDS \ MODE=REDIRECT FOC ORDER=ENABLED \ TIMEOUT=5 \ RETRY=1 CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh }
NAME cm5 LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm5.log CM_TIMEOUT 300 EVENT_TIMEOUT 45 SECONDARY_EVENT_TIMEOUT 50 CLUSTER southwest { GBASEDBTSERVER ids_sw1,ids_sw2 SLA oltp DBSERVERS=primary MODE=PROXY SLA report DBSERVERS=SDS,RSS,HDR SLA primary DBSERVERS=primary SLA secondary DBSERVERS=(SDS,RSS,HDR) FOC ORDER=ENABLED \ RETRY=1 CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh }
如果数据库服务器在 300 秒内未接收到来自连接管理器的任何事件,该数据库服务器将假定连接管理器未运行,而下一个可用的连接管理器将成为故障转移仲裁器。
如果连接管理器在 45 秒内未接收到来自主服务器的任何事件,那么连接管理器将开始故障转移处理。如果为某个连接单元定义了 FOC 参数的 TIMEOUT 属性,那么该参数的值会与 EVENT_TIMEOUT 参数的值相加,所得结果作为该连接单元的故障转移处理开始之前要等待的总时间。
如果连接管理器在 50 秒内未接收到来自辅助服务器的任何事件,那么连接管理器将与该辅助服务器断开连接。
NAME cm6 MACRO NY=(ny1,ny2,ny3) MACRO CA=(ca1,ca2,ca3) LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm6.log REPLSET erset { GBASEDBTSERVER g_er1,g_er2 SLA repl1_any DBSERVERS=ANY SLA repl1_ca DBSERVERS=${CA} SLA repl1_ny DBSERVERS=${NY} }
NAME cm7 MACRO SF=(sf1,sf2,sf3) MACRO LA=(la1,la2,la3) LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm7.log GRID grid1 { GBASEDBTSERVER node1,node2,node3 SLA grid1_any DBSERVERS=ANY POLICY=LATENCY SLA grid1_avail DBSERVERS=${SF},${LA} }
NAME cm8 LOG 1 LOGFILE ${GBASEDBTDIR}/tmp/cm8.log SERVERSET ss { GBASEDBTSERVER ids1,ids2,ids3 SLA ssavail DBSERVERS=ids1,ids2,ids3 \ HOST=apollo \ SERVICE=9600 \ NETTYPE=onsoctcp SLA ssany DBSERVERS=(ids1,ids2,ids3) \ HOST=apollo \ SERVICE=9610 \ NETTYPE=onsoctcp }
#dbservername nettype hostname servicename options ids1 onsoctcp apollo 9600 ids2 onsoctcp apollo 9600 ids3 onsoctcp apollo 9600
#dbservername nettype hostname servicename options ids1 onsoctcp apollo 9610 ids2 onsoctcp apollo 9610 ids3 onsoctcp apollo 9610