2015-08-31 5 views
1

Я использую WSO2 Identity Server 5.0 с пакетом обновления WSO2-IS-5.0.0-SP01, установленный на двух серверах, чтобы сформировать кластер, настроенный по всему маршруту https://docs.wso2.com/display/CLUSTER420/Clustering+Identity+Server, но я столкнулся со следующей ошибкой при запуске узлов:Ошибка кластера сервера удостоверений WSO2

{org.wso2.carbon.identity.user.store.remote.internal.CarbonRemoteUserStoreDSComponent} - Carbon Remote User Store activated successfully. 
[2015-08-31 16:34:52,777] INFO {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService} - Configured Registry in 195ms 
[2015-08-31 16:34:52,970] INFO {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService} - Configured Registry in 1ms 
[2015-08-31 16:34:53,107] ERROR {org.wso2.carbon.registry.core.dataaccess.TransactionManager} - Failed to commit transaction. 
java.sql.SQLException: Total number of available connections are less than the total number of committed connections 
     at org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCDatabaseTransaction$ManagedRegistryConnection.commit(JDBCDatabaseTransaction.java:1227) 

Мой конфигурационный файл /opt/WSO2/wso2is-5.0.0/repository/conf/registry.xml:

<currentDBConfig>sharedregistry</currentDBConfig> 
    <readOnly>false</readOnly> 
    <enableCache>true</enableCache> 
    <registryRoot>/</registryRoot> 

<dbConfig name="sharedregistry"> 
     <dataSource>jdbc/WSO2RegistryDB</dataSource> 
</dbConfig> 

<remoteInstance url="https://localhost:9443/registry"> 
     <id>instanceid</id> 
     <dbConfig>sharedregistry</dbConfig> 
     <readOnly>false</readOnly> 
     <enableCache>true</enableCache> 
     <registryRoot>/</registryRoot> 
    </remoteInstance> 


    <mount path="/_system/config" overwrite="true"> 
     <instanceId>instanceid</instanceId> 
     <targetPath>/_system/nodes</targetPath> 
    </mount> 
    <mount path="/_system/governance" overwrite="true"> 
     <instanceId>instanceid</instanceId> 
     <targetPath>/_system/governance</targetPath> 
    </mount> 

Мой файл/Opt/WSO2/wso2is- 5.0.0/репозиторий/conf/datasources/master-datasources.xml:

<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration"> 
    <providers> 
     <provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider> 
    </providers> 
    <datasources> 
     <datasource> 
      <name>REGISTRY_LOCAL1</name> 
      <description>The datasource used for registry-local</description> 
      <jndiConfig> 
       <name>jdbc/WSO2CarbonDB</name> 
      </jndiConfig> 
      <definition type="RDBMS"> 
       <configuration> 
        <url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_LOCAL1?autoReconnect=true</url> 
        <username>regadmin</username> 
        <password>regadmin</password> 
        <driverClassName>com.mysql.jdbc.Driver</driverClassName> 
        <maxActive>50</maxActive> 
        <maxWait>60000</maxWait> 
        <testOnBorrow>true</testOnBorrow> 
        <validationQuery>SELECT 1</validationQuery> 
        <validationInterval>30000</validationInterval> 
       </configuration> 
      </definition> 
     </datasource> 
     <datasource> 
      <name>REGISTRY_DB</name> 
      <description>The datasource used for registry-config/governance</description> 
      <jndiConfig> 
       <name>jdbc/WSO2RegistryDB</name> 
      </jndiConfig> 
      <definition type="RDBMS"> 
       <configuration> 
        <url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_DB?autoReconnect=true</url> 
        <username>regadmin</username> 
        <password>regadmin</password> 
        <driverClassName>com.mysql.jdbc.Driver</driverClassName> 
        <maxActive>50</maxActive> 
        <maxWait>60000</maxWait> 
        <testOnBorrow>true</testOnBorrow> 
        <validationQuery>SELECT 1</validationQuery> 
        <validationInterval>30000</validationInterval> 
       </configuration> 
      </definition> 
     </datasource> 
     <datasource> 
      <name>WSO2_USER_DB</name> 
      <description>The datasource used for registry and user manager</description> 
      <jndiConfig> 
       <name>jdbc/WSO2UMDB</name> 
      </jndiConfig> 
      <definition type="RDBMS"> 
       <configuration> 
        <url>jdbc:mysql://carbondb.mysql-wso2.com:3306/WSO2_USER_DB</url> 
        <username>regadmin</username> 
        <password>regadmin</password> 
        <driverClassName>com.mysql.jdbc.Driver</driverClassName> 
        <maxActive>50</maxActive> 
        <maxWait>60000</maxWait> 
        <testOnBorrow>true</testOnBorrow> 
        <validationQuery>SELECT 1</validationQuery> 
        <validationInterval>30000</validationInterval> 
       </configuration> 
      </definition> 
     </datasource> 
    </datasources> 
</datasources-configuration> 

DB создать в MySQL:

mysql> show databases; 
+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| REGISTRY_DB  | 
| REGISTRY_LOCAL1 | 
| WSO2_USER_DB  | 
| mysql    | 
| performance_schema | 
| regdb    | 
| sharedreg_db  | 
+--------------------+ 
8 rows in set (0.00 sec) 

mysql> 

Спасибо заранее,

ответ

1

Не изменяйте currentDBConfig. Оставьте это как есть. В дополнение к существующему currentDBConfig необходимо добавить конфигурацию установки реестра, упомянутую в приведенной выше документации.

<currentDBConfig>wso2registry</currentDBConfig> 
<readOnly>false</readOnly> 
<enableCache>true</enableCache> 
<registryRoot>/</registryRoot> 

<dbConfig name="wso2registry"> 
    <dataSource>jdbc/WSO2CarbonDB</dataSource> 
</dbConfig> 

<dbConfig name="sharedregistry"> 
    <dataSource>jdbc/WSO2RegistryDB</dataSource> 
</dbConfig> 

<remoteInstance url="https://localhost:9443/registry"> 
    <id>instanceid</id> 
    <dbConfig>sharedregistry</dbConfig> 
    <readOnly>false</readOnly> 
    <enableCache>true</enableCache> 
    <registryRoot>/</registryRoot> 
</remoteInstance> 

<mount path="/_system/config" overwrite="true"> 
    <instanceId>instanceid</instanceId> 
    <targetPath>/_system/nodes</targetPath> 
</mount> 
<mount path="/_system/governance" overwrite="true"> 
    <instanceId>instanceid</instanceId> 
    <targetPath>/_system/governance</targetPath> 
</mount> 

Приведенный ниже документ должен быть исправлен. Вы можете найти правильный документ здесь [1] для WSO2 API Manager. Выполните указанные выше изменения и перезапустите сервер. Он должен исправить вашу проблему.

Кроме того, вы можете использовать встроенную базу данных H2 для локального реестра, поскольку мы не собираемся совместно использовать локальный реестр с другими узлами в кластере. Таким образом, ваш master-datasources.xml можно изменить, как показано ниже.

<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration"> 
    <providers> 
     <provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider> 
    </providers> 
    <datasources> 
     <datasource> 
      <name>WSO2_CARBON_DB</name> 
      <description>The datasource used for registry and user manager</description> 
      <jndiConfig> 
       <name>jdbc/WSO2CarbonDB</name> 
      </jndiConfig> 
      <definition type="RDBMS"> 
       <configuration> 
        <url>jdbc:h2:repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000</url> 
        <username>wso2carbon</username> 
        <password>wso2carbon</password> 
        <driverClassName>org.h2.Driver</driverClassName> 
        <maxActive>50</maxActive> 
        <maxWait>60000</maxWait> 
        <testOnBorrow>true</testOnBorrow> 
        <validationQuery>SELECT 1</validationQuery> 
        <validationInterval>30000</validationInterval> 
       </configuration> 
      </definition> 
     </datasource> 
     <datasource> 
      <name>REGISTRY_DB</name> 
      <description>The datasource used for registry-config/governance</description> 
      <jndiConfig> 
       <name>jdbc/WSO2RegistryDB</name> 
      </jndiConfig> 
      <definition type="RDBMS"> 
       <configuration> 
        <url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_DB?autoReconnect=true</url> 
        <username>regadmin</username> 
        <password>regadmin</password> 
        <driverClassName>com.mysql.jdbc.Driver</driverClassName> 
        <maxActive>50</maxActive> 
        <maxWait>60000</maxWait> 
        <testOnBorrow>true</testOnBorrow> 
        <validationQuery>SELECT 1</validationQuery> 
        <validationInterval>30000</validationInterval> 
       </configuration> 
      </definition> 
     </datasource> 
     <datasource> 
      <name>WSO2_USER_DB</name> 
      <description>The datasource used for registry and user manager</description> 
      <jndiConfig> 
       <name>jdbc/WSO2UMDB</name> 
      </jndiConfig> 
      <definition type="RDBMS"> 
       <configuration> 
        <url>jdbc:mysql://carbondb.mysql-wso2.com:3306/WSO2_USER_DB</url> 
        <username>regadmin</username> 
        <password>regadmin</password> 
        <driverClassName>com.mysql.jdbc.Driver</driverClassName> 
        <maxActive>50</maxActive> 
        <maxWait>60000</maxWait> 
        <testOnBorrow>true</testOnBorrow> 
        <validationQuery>SELECT 1</validationQuery> 
        <validationInterval>30000</validationInterval> 
       </configuration> 
      </definition> 
     </datasource> 
    </datasources> 
</datasources-configuration> 

Если вы хотите сделать это изменение, сделайте это и убедитесь, что вы удалите wso2is-5.0.0/repository/database каталог и перезапустить сервер с параметром -Dsetup (sh wso2server.sh -Dsetup).

[1] https://docs.wso2.com/display/CLUSTER420/Clustering+API+Manager

Смежные вопросы