Files
teleport/docs/pages/database-access/guides/ha.mdx
T

95 lines
2.4 KiB
Plaintext

---
title: Database Access High Availability (HA)
description: How to configure Teleport Database Access in a Highly Available (HA) configuration.
---
# Database Access High Availability (HA)
You can deploy Database Access in a Highly Available (HA) configuration in a
couple of common ways: combined replicas and separate replicas. Both of those
revolve around pointing multiple Database Services to the same database
instance.
## Combined replicas
The most common approach is to assign the same `name` to each Database Service
proxying the database.
If you have two Database Services proxying the same database, configuration for
both agents would be identical:
```yaml
# Same config for both agents.
db_service:
enabled: "yes"
databases:
- name: "postgres"
protocol: "postgres"
uri: "postgres.example.com:5432"
```
With this configuration, you will see only a single entry for the database in
`tsh db ls`:
```code
$ tsh db ls
# Name
# --------
# postgres
$ tsh db connect postgres
```
When connecting, Teleport will randomly pick the Database Service instance to
connect through to provide some load balancing. If the selected instance is down
(e.g. in case of AZ outage), Teleport will try to connect via other instances.
## Separate replicas
With separate replicas, each Database Service instance proxying the database
assigns it a different name. This allows you to explicitly pick the agent
you want to connect to the database over:
```yaml
# Database service instance #1.
db_service:
enabled: "yes"
databases:
# Note the name is different than instance #2 but the URI is the same.
- name: "postgres-us-east-1a"
protocol: "postgres"
uri: "postgres.example.com:5432"
```
```yaml
# Database service instance #2.
db_service:
enabled: "yes"
databases:
# Note the name is different than instance #1 but the URI is the same.
- name: "postgres-us-east-1b"
protocol: "postgres"
uri: "postgres.example.com:5432"
```
With this configuration, both services will appear as two separate entries in
`tsh db ls` output and you will have to pick one explicitly when connecting:
```code
$ tsh db ls
# Name
# -------------------
# postgres-us-east-1a
# postgres-us-east-1b
$ tsh db connect postgres-us-east-1a
```
This approach is useful when you want to have control over which replica
you're using to connect.
## Next steps
- Get started by [connecting](../guides.mdx) your database.
- Review Database Access [architecture](../architecture.mdx).