mirror of https://github.com/jumpserver/jumpserver
perf: 支持部署在开启认证的Redis Sentinel
parent
ead824a03c
commit
c295f44d9c
|
@ -290,6 +290,8 @@ REDIS_PROTOCOL = 'rediss' if REDIS_USE_SSL else 'redis'
|
|||
# Cache use sentinel
|
||||
REDIS_SENTINELS_HOST = CONFIG.REDIS_SENTINELS_HOST
|
||||
REDIS_SENTINEL_SERVICE_NAME, REDIS_SENTINELS = parse_sentinels_host(REDIS_SENTINELS_HOST)
|
||||
REDIS_SENTINEL_PASSWORD = CONFIG.REDIS_SENTINEL_PASSWORD
|
||||
REDIS_SENTINEL_SOCKET_TIMEOUT = CONFIG.REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
|
||||
# Cache config
|
||||
REDIS_OPTIONS = {
|
||||
|
@ -310,7 +312,11 @@ if REDIS_SENTINEL_SERVICE_NAME and REDIS_SENTINELS:
|
|||
}
|
||||
REDIS_OPTIONS.update({
|
||||
'CLIENT_CLASS': 'django_redis.client.SentinelClient',
|
||||
'SENTINELS': REDIS_SENTINELS, 'PASSWORD': CONFIG.REDIS_PASSWORD
|
||||
'SENTINELS': REDIS_SENTINELS, 'PASSWORD': CONFIG.REDIS_PASSWORD,
|
||||
'SENTINEL_KWARGS': {
|
||||
'password': REDIS_SENTINEL_PASSWORD,
|
||||
'socket_timeout': REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
}
|
||||
})
|
||||
DJANGO_REDIS_CONNECTION_FACTORY = 'django_redis.pool.SentinelConnectionFactory'
|
||||
else:
|
||||
|
|
|
@ -4,9 +4,9 @@ import os
|
|||
import ssl
|
||||
|
||||
from .base import (
|
||||
REDIS_SSL_CA, REDIS_SSL_CERT, REDIS_SSL_KEY,
|
||||
REDIS_SSL_REQUIRED, REDIS_USE_SSL,
|
||||
REDIS_SENTINEL_SERVICE_NAME, REDIS_SENTINELS,
|
||||
REDIS_SSL_CA, REDIS_SSL_CERT, REDIS_SSL_KEY, REDIS_SSL_REQUIRED, REDIS_USE_SSL,
|
||||
REDIS_SENTINEL_SERVICE_NAME, REDIS_SENTINELS, REDIS_SENTINEL_PASSWORD,
|
||||
REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
)
|
||||
from ..const import CONFIG, PROJECT_DIR
|
||||
|
||||
|
@ -100,6 +100,10 @@ REDIS_HOST = {
|
|||
if REDIS_SENTINEL_SERVICE_NAME and REDIS_SENTINELS:
|
||||
REDIS_HOST['sentinels'] = REDIS_SENTINELS
|
||||
REDIS_HOST['master_name'] = REDIS_SENTINEL_SERVICE_NAME
|
||||
REDIS_HOST['sentinel_kwargs'] = {
|
||||
'password': REDIS_SENTINEL_PASSWORD,
|
||||
'socket_timeout': REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
}
|
||||
else:
|
||||
REDIS_HOST['address'] = (CONFIG.REDIS_HOST, CONFIG.REDIS_PORT)
|
||||
|
||||
|
@ -124,8 +128,14 @@ if REDIS_SENTINEL_SERVICE_NAME and REDIS_SENTINELS:
|
|||
'protocol': 'sentinel', 'password': CONFIG.REDIS_PASSWORD,
|
||||
'host': item[0], 'port': item[1], 'db': CONFIG.REDIS_DB_CELERY
|
||||
} for item in REDIS_SENTINELS])
|
||||
CELERY_BROKER_TRANSPORT_OPTIONS = {"master_name": REDIS_SENTINEL_SERVICE_NAME}
|
||||
CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS = {"master_name": REDIS_SENTINEL_SERVICE_NAME}
|
||||
SENTINEL_OPTIONS = {
|
||||
'master_name': REDIS_SENTINEL_SERVICE_NAME,
|
||||
'sentinel_kwargs': {
|
||||
'password': REDIS_SENTINEL_PASSWORD,
|
||||
'socket_timeout': REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
}
|
||||
}
|
||||
CELERY_BROKER_TRANSPORT_OPTIONS = CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS = SENTINEL_OPTIONS
|
||||
else:
|
||||
CELERY_BROKER_URL = CELERY_BROKER_URL_FORMAT % {
|
||||
'protocol': 'rediss' if REDIS_USE_SSL else 'redis',
|
||||
|
|
|
@ -83,7 +83,7 @@ Pillow==9.1.1
|
|||
pytz==2022.1
|
||||
# Runtime
|
||||
django-proxy==1.2.1
|
||||
channels-redis==3.4.0
|
||||
channels-redis==4.0.0
|
||||
channels==3.0.4
|
||||
daphne==3.0.2
|
||||
python-daemon==2.3.0
|
||||
|
|
|
@ -33,15 +33,21 @@ if settings.REDIS_USE_SSL:
|
|||
|
||||
REDIS_SENTINEL_SERVICE_NAME = settings.REDIS_SENTINEL_SERVICE_NAME
|
||||
REDIS_SENTINELS = settings.REDIS_SENTINELS
|
||||
REDIS_SENTINEL_PASSWORD = settings.REDIS_SENTINEL_PASSWORD
|
||||
REDIS_SENTINEL_SOCKET_TIMEOUT = settings.REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
if REDIS_SENTINEL_SERVICE_NAME and REDIS_SENTINELS:
|
||||
connection_params['sentinels'] = REDIS_SENTINELS
|
||||
sentinel_client = Sentinel(**connection_params)
|
||||
sentinel_client = Sentinel(
|
||||
**connection_params, sentinel_kwargs={
|
||||
'password': REDIS_SENTINEL_PASSWORD,
|
||||
'socket_timeout': REDIS_SENTINEL_SOCKET_TIMEOUT
|
||||
}
|
||||
)
|
||||
redis_client = sentinel_client.master_for(REDIS_SENTINEL_SERVICE_NAME)
|
||||
else:
|
||||
connection_params['host'] = settings.REDIS_HOST
|
||||
connection_params['port'] = settings.REDIS_PORT
|
||||
redis_client = Redis(**connection_params)
|
||||
print("Connection params: ", connection_params)
|
||||
|
||||
scheduler = "django_celery_beat.schedulers:DatabaseScheduler"
|
||||
processes = []
|
||||
|
|
Loading…
Reference in New Issue