aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib
diff options
context:
space:
mode:
authorkontrollanten <6680299+kontrollanten@users.noreply.github.com>2023-05-10 09:52:50 +0200
committerGitHub <noreply@github.com>2023-05-10 09:52:50 +0200
commit674f8ddd415ff4faf100ff35cf2511f84f60fea9 (patch)
treeab4f8b6b42172f5cdafc87c50b6202ea547429ae /server/lib
parent5170f492b95dc81b75230312411c5fdb0019eed2 (diff)
downloadPeerTube-674f8ddd415ff4faf100ff35cf2511f84f60fea9.tar.gz
PeerTube-674f8ddd415ff4faf100ff35cf2511f84f60fea9.tar.zst
PeerTube-674f8ddd415ff4faf100ff35cf2511f84f60fea9.zip
feat(server): add redis sentinel support (#5593)
* feat(server): add redis sentinel support closes #5141 * Styling --------- Co-authored-by: Chocobozzz <me@florianbigard.com>
Diffstat (limited to 'server/lib')
-rw-r--r--server/lib/redis.ts24
1 files changed, 20 insertions, 4 deletions
diff --git a/server/lib/redis.ts b/server/lib/redis.ts
index 3706d2228..8430b2227 100644
--- a/server/lib/redis.ts
+++ b/server/lib/redis.ts
@@ -32,7 +32,8 @@ class Redis {
32 if (this.initialized === true) return 32 if (this.initialized === true) return
33 this.initialized = true 33 this.initialized = true
34 34
35 logger.info('Connecting to redis...') 35 const redisMode = CONFIG.REDIS.SENTINEL.ENABLED ? 'sentinel' : 'standalone'
36 logger.info('Connecting to redis ' + redisMode + '...')
36 37
37 this.client = new IoRedis(Redis.getRedisClientOptions('', { enableAutoPipelining: true })) 38 this.client = new IoRedis(Redis.getRedisClientOptions('', { enableAutoPipelining: true }))
38 this.client.on('error', err => logger.error('Redis failed to connect', { err })) 39 this.client.on('error', err => logger.error('Redis failed to connect', { err }))
@@ -56,10 +57,25 @@ class Redis {
56 this.prefix = 'redis-' + WEBSERVER.HOST + '-' 57 this.prefix = 'redis-' + WEBSERVER.HOST + '-'
57 } 58 }
58 59
59 static getRedisClientOptions (connectionName?: string, options: RedisOptions = {}): RedisOptions { 60 static getRedisClientOptions (name?: string, options: RedisOptions = {}): RedisOptions {
61 const connectionName = [ 'PeerTube', name ].join('')
62 const connectTimeout = 20000 // Could be slow since node use sync call to compile PeerTube
63
64 if (CONFIG.REDIS.SENTINEL.ENABLED) {
65 return {
66 connectionName,
67 connectTimeout,
68 enableTLSForSentinelMode: CONFIG.REDIS.SENTINEL.ENABLE_TLS,
69 sentinelPassword: CONFIG.REDIS.AUTH,
70 sentinels: CONFIG.REDIS.SENTINEL.SENTINELS,
71 name: CONFIG.REDIS.SENTINEL.MASTER_NAME,
72 ...options
73 }
74 }
75
60 return { 76 return {
61 connectionName: [ 'PeerTube', connectionName ].join(''), 77 connectionName,
62 connectTimeout: 20000, // Could be slow since node use sync call to compile PeerTube 78 connectTimeout,
63 password: CONFIG.REDIS.AUTH, 79 password: CONFIG.REDIS.AUTH,
64 db: CONFIG.REDIS.DB, 80 db: CONFIG.REDIS.DB,
65 host: CONFIG.REDIS.HOSTNAME, 81 host: CONFIG.REDIS.HOSTNAME,