Skip to content

Commit 52e2aa2

Browse files
committed
support postgres as backend database
1 parent 5d545f1 commit 52e2aa2

File tree

4 files changed

+53
-35
lines changed

4 files changed

+53
-35
lines changed

roles/infinispan/README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ The following are required when `jdg_jgroups_jdbcping` is enabled:
4545

4646
| Variable | Description | Default |
4747
|:---------|:------------|:--------|
48-
|`mariadb_jdbc_url`| URL for connecting to database | `jdbc:mariadb://localhost:3306/keycloak` |
49-
|`mariadb_db_user`| Username for connecting to database | `keycloak-user` |
50-
|`mariadb_db_pass`| Password for connecting to database | `keycloak-pass` |
48+
|`jdg_jdbc_engine`| backend database engine (values: `['mariadb','postgres']`) | `mariadb` |
49+
|`jdg_jdbc_url`| URL for jdbc connection | `jdbc:mariadb://localhost:3306/keycloak` |
50+
|`jdg_jdbc_user`| username for jdbc connection | `keycloak-user` |
51+
|`jdg_jdbc_pass`|password for jdbc connection | `keycloak-pass` |
5152

52-
When setting up cross-DC relaying, remember to also setup mariadb in active-active mode (ie. with galera cluster), and switch the JDBC to url to the `sequential` scheme.
53+
When setting up cross-DC relaying, also setup mariadb in active-active mode (ie. with galera cluster), and switch the JDBC to url to the `sequential` scheme; similar configuration for other database engines.
5354

5455

5556
Dependencies

roles/infinispan/defaults/main.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,10 @@ jdg_jgroups_relay_site: ''
3838
infinispan_keycloak_caches: False
3939

4040
# flag to enable datasource for keycloak integration
41-
jdg_keycloak_persistence: False
41+
jdg_keycloak_persistence: False
42+
43+
# datasource configuration
44+
jdg_jdbc_engine: mariadb
45+
jdg_jdbc_url: jdbc:mariadb://localhost:3306/keycloak
46+
jdg_jdbc_user: keycloak-user
47+
jdg_jdbc_pass: keycloak-pass

roles/infinispan/templates/infinispan.xml.j2

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,11 @@
1111
<!-- TCP local cluster with JDBCPING discovery -->
1212
<stack name="datagrid" extends="tcp">
1313
<JDBC_PING stack.combine="REPLACE" stack.position="MPING"
14-
connection_url="{{ jdg_jgroups_jdbc.mariadb.connection_url }}"
15-
connection_username="{{ jdg_jgroups_jdbc.mariadb.db_user }}"
16-
connection_password="{{ jdg_jgroups_jdbc.mariadb.db_password }}"
17-
connection_driver="{{ jdg_jgroups_jdbc.mariadb.driver_class }}"
18-
initialize_sql="CREATE TABLE IF NOT EXISTS JGROUPSPING (
19-
own_addr varchar(200) NOT NULL,
20-
cluster_name varchar(200) NOT NULL,
21-
updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
22-
ping_data varbinary(5000) DEFAULT NULL,
23-
PRIMARY KEY (own_addr, cluster_name))
24-
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin"
14+
connection_url="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].connection_url }}"
15+
connection_username="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].db_user }}"
16+
connection_password="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].db_password }}"
17+
connection_driver="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].driver_class }}"
18+
initialize_sql="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].initialize_sql }}"
2519
insert_single_sql="INSERT INTO JGROUPSPING (own_addr, cluster_name, ping_data) values (?, ?, ?)"
2620
delete_single_sql="DELETE FROM JGROUPSPING WHERE own_addr=? AND cluster_name=?"
2721
select_all_pingdata_sql="SELECT ping_data FROM JGROUPSPING WHERE cluster_name=?" />
@@ -34,17 +28,11 @@
3428
<!-- TCP RELAY with JDBCPING discovery -->
3529
<stack name="datagridrelay" extends="tcp">
3630
<JDBC_PING stack.combine="REPLACE" stack.position="MPING"
37-
connection_url="{{ jdg_jgroups_jdbc.mariadb.connection_url }}"
38-
connection_username="{{ jdg_jgroups_jdbc.mariadb.db_user }}"
39-
connection_password="{{ jdg_jgroups_jdbc.mariadb.db_password }}"
40-
connection_driver="{{ jdg_jgroups_jdbc.mariadb.driver_class }}"
41-
initialize_sql="CREATE TABLE IF NOT EXISTS JGROUPSPING (
42-
own_addr varchar(200) NOT NULL,
43-
cluster_name varchar(200) NOT NULL,
44-
updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
45-
ping_data varbinary(5000) DEFAULT NULL,
46-
PRIMARY KEY (own_addr, cluster_name))
47-
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin"
31+
connection_url="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].connection_url }}"
32+
connection_username="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].db_user }}"
33+
connection_password="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].db_password }}"
34+
connection_driver="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].driver_class }}"
35+
initialize_sql="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].initialize_sql }}"
4836
insert_single_sql="INSERT INTO JGROUPSPING (own_addr, cluster_name, ping_data) values (?, ?, ?)"
4937
delete_single_sql="DELETE FROM JGROUPSPING WHERE own_addr=? AND cluster_name=?"
5038
select_all_pingdata_sql="SELECT ping_data FROM JGROUPSPING WHERE cluster_name=?" />
@@ -171,10 +159,10 @@
171159
{% if jdg_keycloak_persistence %}
172160
<data-sources>
173161
<data-source name="KeycloakDS" jndi-name="jdbc/datasource" statistics="true">
174-
<connection-factory driver="{{ jdg_jgroups_jdbc.mariadb.driver_class }}"
175-
username="{{ jdg_jgroups_jdbc.mariadb.db_user }}"
176-
password="{{ jdg_jgroups_jdbc.mariadb.db_password }}"
177-
url="{{ jdg_jgroups_jdbc.mariadb.connection_url }}?useUnicode=true&amp;characterEncoding=UTF-8"
162+
<connection-factory driver="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].driver_class }}"
163+
username="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].db_user }}"
164+
password="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].db_password }}"
165+
url="{{ jdg_jgroups_jdbc[jdg_jdbc_engine].connection_url }}"
178166
new-connection-sql="SELECT 1" transaction-isolation="READ_COMMITTED">
179167
</connection-factory>
180168
<connection-pool initial-size="1" max-size="10" min-size="3" background-validation="1000" idle-removal="1" blocking-timeout="1000" leak-detection="10000"/>

roles/infinispan/vars/main.yml

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,36 @@ jdg:
3131

3232
jdg_jgroups_jdbc:
3333
mariadb:
34-
enabled: "{{ jdg_jgroups_jdbcping }}"
34+
enabled: "{{ jdg_jgroups_jdbcping and jdg_jdbc_engine == 'mariadb' }}"
3535
driver_class: org.mariadb.jdbc.Driver
3636
driver_jar_filename: "mariadb-java-client-2.7.4.jar"
3737
driver_jar_url: "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar"
38-
connection_url: "{{ mariadb_jdbc_url | default('jdbc:mariadb://localhost:3306/keycloak') }}"
39-
db_user: "{{ mariadb_db_user | default('keycloak-user') }}"
40-
db_password: "{{ mariadb_db_pass | default('keycloak-pass') }}"
38+
connection_url: "{{ jdg_jdbc_url | default('jdbc:mariadb://localhost:3306/keycloak') }}"
39+
db_user: "{{ jdg_jdbc_user }}"
40+
db_password: "{{ jdg_jdbc_pass }}"
41+
initialize_db: >
42+
CREATE TABLE IF NOT EXISTS JGROUPSPING (
43+
own_addr varchar(200) NOT NULL,
44+
cluster_name varchar(200) NOT NULL,
45+
updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
46+
ping_data varbinary(5000) DEFAULT NULL,
47+
PRIMARY KEY (own_addr, cluster_name))
48+
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
49+
postgres:
50+
enabled: "{{ jdg_jgroups_jdbcping and jdg_jdbc_engine == 'postgres' }}"
51+
driver_class: org.postgresql.Driver
52+
driver_jar_filename: "postgresql-9.4.1212.jar"
53+
driver_jar_url: "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/9.4.1212/postgresql-9.4.1212.jar"
54+
connection_url: "{{ jdg_jdbc_url | default('jdbc:postgresql://localhost:5432/keycloak') }}"
55+
db_user: "{{ jdg_jdbc_user }}"
56+
db_password: "{{ jdg_jdbc_pass }}"
57+
initialize_db: >
58+
CREATE TABLE IF NOT EXISTS JGROUPSPING (
59+
own_addr varchar(200) NOT NULL,
60+
cluster_name varchar(200) NOT NULL,
61+
updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
62+
ping_data BYTEA,
63+
constraint PK_JGROUPSPING PRIMARY KEY (own_addr, cluster_name))
4164
4265
jdg_keycloak_cache:
4366
enabled: "{{ infinispan_keycloak_caches }}"

0 commit comments

Comments
 (0)