2017-07-08 14 views
0

スタンドアロンクラスタモードでKeycloakサーバを設定する際に、設定に問題が発生しています。 {REMOTE_IP}でpostgresデータベースを使用するようにデータソースを設定しているにもかかわらず、localhost:5432に接続できないと不平を言うサーバを起動できません。WildFly Postgres DataSourceのリモート接続URLが無視される

私はずっと調べてきましたが、connection-urlがリモートホストに設定されていると、DataSourceがlocalhostに接続しようとする理由がわかりません。

設定に間違いがありますか? PGの代わりに{REMOTE_IP}


マイセットアップをlocalhostに接続しようとしている理由1つのPostgresデータベースサーバと2台のKeycloakサーバ

である私はどのように把握することができます私は、リレーショナルデータベースを使用するためのインストール手順に従い、持っていますPostgres用のJDBCドライバv9.4.1212を追加しました。次のように

私のDataSource設定は次のとおりです。

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"> 
    <connection-url>jdbc:postgresql://{REMOTE_IP}:5432/keycloak</connection-url> 
    <driver>postgresql</driver> 
    <pool> 
     <max-pool-size>20</max-pool-size> 
    </pool> 
    <security> 
     <user-name>keycloak</user-name> 
     <password>{PASSWORD}</password> 
    </security> 
</datasource> 

ログからのエラーメッセージが読み:

... 
Caused by: org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262) 
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:52) 
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:216) 
    at org.postgresql.Driver.makeConnection(Driver.java:404) 
    at org.postgresql.Driver.connect(Driver.java:272) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:86) 
    at org.postgresql.ds.PGPoolingDataSource.getConnection(PGPoolingDataSource.java:309) 
    at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:312) 
    ... 43 more 
Caused by: java.net.ConnectException: Connection refused (Connection refused) 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at org.postgresql.core.PGStream.<init>(PGStream.java:61) 
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144) 
    ... 52 more 

私はpsqlの

# psql -h {REMOTE_IP} keycloak keycloak 
psql (9.5.7) 
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, 
bits: 256, compression: off) 
Type "help" for help. 

keycloak=> 
を使用してのpostgresに接続できることを確認しました

答えて

2

私はこれを私の場合に分かりました。 postgresのJDBCドライバはPGPoolingDataSourceを使用するように構成され、datasource-classが定義されています。

<driver name="postgresql" module="org.postgresql"> 
    <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> 
    <datasource-class>org.postgresql.ds.PGPoolingDataSource</datasource-class> 
</driver> 

datasource-classが定義されている場合、接続URLはconnection-property代わりのconnection-urlを通過しなければなりません。私は私の設定を更新し、サーバは正常に起動しました。

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"> 
    <connection-url>jdbc:postgresql://{REMOTE_IP}:5432/keycloak</connection-url> 
    <connection-property name="url">jdbc:postgresql://{REMOTE_IP}:5432/keycloak</connection-property> 
    <driver>postgresql</driver> 
    <pool> 
     <max-pool-size>20</max-pool-size> 
    </pool> 
    <driver-class>org.postgresql.Driver</driver-class> 
    <security> 
     <user-name>keycloak</user-name> 
     <password>{PASSWORD}</password> 
    </security> 
</datasource> 

この問題はwildfly問題追跡に記載されて https://issues.jboss.org/browse/WFLY-6157

関連する問題