feat(core): Set up leader selection for multiple main instances (#7527)

https://linear.app/n8n/issue/PAY-933/set-up-leader-selection-for-multiple-main-instances

- [x] Set up new envs
- [x] Add config and license checks
- [x] Implement `MultiMainInstancePublisher`
- [x] Expand `RedisServicePubSubPublisher` to support
`MultiMainInstancePublisher`
- [x] Init `MultiMainInstancePublisher` on startup and destroy on
shutdown
- [x] Add to sandbox plans
- [x] Test manually

Note: This is only for setup - coordinating in reaction to leadership
changes will come in later PRs.
This commit is contained in:
Iván Ovejero
2023-10-30 16:22:32 +01:00
committed by GitHub
parent 3b5e181e66
commit 442c73e63b
15 changed files with 247 additions and 54 deletions

View File

@@ -1323,4 +1323,25 @@ export const schema = {
env: 'N8N_WORKFLOW_HISTORY_PRUNE_TIME',
},
},
leaderSelection: {
enabled: {
doc: 'Whether to enable leader selection for multiple main instances (license required)',
format: Boolean,
default: false,
env: 'N8N_LEADER_SELECTION_ENABLED',
},
ttl: {
doc: 'Time to live in Redis for leader selection key, in seconds',
format: Number,
default: 10,
env: 'N8N_LEADER_SELECTION_KEY_TTL',
},
interval: {
doc: 'Interval in Redis for leader selection check, in seconds',
format: Number,
default: 3,
env: 'N8N_LEADER_SELECTION_CHECK_INTERVAL',
},
},
};