One is deemed the "primary". This means that read and write traffic will go to `internal_storage_0`, and writes
for detailed documentation.
will get replicated to `internal_storage_1`:
```toml
socket_path="/path/to/Praefect.socket"
# failover_enabled will enable automatic failover
failover_enabled=false
[logging]
format="json"
level="info"
[[virtual_storage]]
name="default"
[[virtual_storage.node]]
name="internal_storage_0"
address="tcp://localhost:9999"
primary=true
token="supersecret"
[[virtual_storage.node]]
To get started quickly:
name="internal_storage_1"
address="tcp://localhost:9998"
token="supersecret"
```
#### Manual failover
1. SSH into the **GitLab** node and login as root:
In order to failover from using one internal Gitaly node to using another, a manual failover step can be used. Unless `failover_enabled` is set to `true`
```shell
in the `config.toml`, the only way to fail over from one primary to using another node as the primary is to do a manual failover.
sudo-i
```
1.Move `primary = true` from the current `[[virtual_storage.node]]` to another node in `/etc/gitlab/gitlab.rb`:
1.Enable the Grafana login form by editing `/etc/gitlab/gitlab.rb`.
```ruby
```ruby
praefect['virtual_storages']={
grafana['disable_login_form']=false
'praefect'=>{
'gitaly-1'=>{
'address'=>'tcp://GITALY_HOST:8075',
'token'=>'PRAEFECT_INTERNAL_TOKEN',
# no longer the primary
},
'gitaly-2'=>{
'address'=>'tcp://GITALY_HOST:8075',
'token'=>'PRAEFECT_INTERNAL_TOKEN',
# this is the new primary
'primary'=>true
},
'gitaly-3'=>{
'address'=>'tcp://GITALY_HOST:8075',
'token'=>'PRAEFECT_INTERNAL_TOKEN',
}
}
}
```
```
1. Save the file and [reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure).
1. Save the changes to `/etc/gitlab/gitlab.rb` and [reconfigure