两个SQL服务器之间的EAP 6的数据源容错配置负载均衡?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个SQL服务器之间的EAP 6的数据源容错配置负载均衡?相关的知识,希望对你有一定的参考价值。

环境:Jboss的EAP 6.4我在我的独立,ha.xml以下数据源配置

<datasource jndi-name="java:jboss/datasources/localPrimaryDS" pool-name="IntegrationDS1" enabled="true" use-java-context="true" statistics-enabled="true">
    <connection-url>jdbc:sqlserver://primarySqlServer;databaseName=HalfFat|jdbc:sqlserver://secondarySqlServer;databaseName=HalfFat</connection-url>
    <driver>mssql</driver>
    <url-delimiter>|</url-delimiter>
    <pool>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <prefill>true</prefill>
        <use-strict-min>true</use-strict-min>
        <flush-strategy>IdleConnections</flush-strategy>
    </pool>
    <security>
        <user-name>user</user-name>
        <password>psswd</password>
    </security> 
    <validation>                    
        <validate-on-match>true</validate-on-match>
        <background-validation>false</background-validation>
        <background-validation-millis>60000</background-validation-millis>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"></exception-sorter>
    </validation>
</datasource>

观察:当两个SQL服务器存在时,应用程序获得专用从主SQL Server实例的JDBC连接。当我暂停/禁止主SQL Server中,在应用程序级别我观察到断开的连接被破坏/新的连接被从次级SQL Server实例获得。所有预期。然而,我发现两个连接的组合,如果我恢复/重新启用主SQL Server实例。

问:这是有点不期望的行为,我希望在它没有该应用程序使用的连接,从辅助数据库保持。有什么我可以在数据源配置禁用此“负载平衡”的行为?

谢谢

答案

原来,<use-strict-min>true</use-strict-min>is是什么原因造成的问题。据redhat,使用时严格分钟设置为true,空闲连接扫描不会标记为关闭已经达成任何进一步的连接,一旦分池大小(在使用+可用连接)。因此,我认为,还有从没有标记为关闭和取消暂停SQL服务器将使那些再次连接不清洁可用的主数据库的一些连接。

以上是关于两个SQL服务器之间的EAP 6的数据源容错配置负载均衡?的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统CAP理论

在 Eclipse Luna 中配置 jboss-eap-6.4 服务器时分配正确的主目录时出错

动态配置 JBOSS ( eap 6.2 ) 数据源

Jboss eap 6.4 https 配置监听端口 8443 失败

为 Jboss EAP 6.3 安装 JDBC

石英 2.2.1+jboss EAP 6.4 ClassNotFoundException oracle.sql.BLOB