GoogleCloudPlatform / cloud-sql-jdbc-socket-factory

A collection of Java libraries for connecting securely to Cloud SQL
Apache License 2.0
234 stars 119 forks source link

Automatically configure and fail-over connections using DNS #2043

Open hessjcg opened 4 months ago

hessjcg commented 4 months ago

Feature Description

The java connector may be configured to connect to a Cloud SQL instance using a DNS name.

When the JDBC connection properties does not contain the cloudSqlInstance property, the connector will attempt to use the hostname from the JDBC URL to resolve name using DNS. The connector will query the local DNS for a TXT record. The TXT should contain an instance name matching that DNS name. The connector will use the instance name from the TXT record to connect to the Cloud SQL instance.

The connector will periodically query that DNS. If the instance name in the DNS record changes, the connector will terminate all open connections to the old instance. Then, it will reconfigure itself to open connections to the new instance.

This enables several DNS-related features by allowing configuration through DNS.

Users can configure their database clients using the domain name instead of the instance name. Users can fail-over database clients when they change the DNS entry for the database instance.

This is the Java implementation of https://github.com/GoogleCloudPlatform/cloud-sql-go-connector/issues/842

derek-gfs commented 1 month ago

Does this prevent split brain?

jackwotherspoon commented 1 month ago

Does this prevent split brain?

@derek-gfs Thanks for the question! 😄

@hessjcg who is driving DR support here is OOO until next week, but will respond here when he is back.