mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-08 18:59:47 +00:00
feat: 支持部署在Redis哨兵集群上
This commit is contained in:
committed by
Jiangjie.Bai
parent
50be7c6fc8
commit
ead824a03c
@@ -6,7 +6,8 @@ import signal
|
||||
import subprocess
|
||||
|
||||
import redis_lock
|
||||
from redis import Redis
|
||||
|
||||
from redis import Redis, Sentinel
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
APPS_DIR = os.path.join(BASE_DIR, 'apps')
|
||||
@@ -19,18 +20,29 @@ os.environ.setdefault('PYTHONOPTIMIZE', '1')
|
||||
if os.getuid() == 0:
|
||||
os.environ.setdefault('C_FORCE_ROOT', '1')
|
||||
|
||||
params = {
|
||||
'host': settings.REDIS_HOST,
|
||||
'port': settings.REDIS_PORT,
|
||||
connection_params = {
|
||||
'password': settings.REDIS_PASSWORD,
|
||||
'ssl': settings.REDIS_USE_SSL,
|
||||
'ssl_cert_reqs': settings.REDIS_SSL_REQUIRED,
|
||||
'ssl_keyfile': settings.REDIS_SSL_KEY,
|
||||
'ssl_certfile': settings.REDIS_SSL_CERT,
|
||||
'ssl_ca_certs': settings.REDIS_SSL_CA
|
||||
}
|
||||
print("Pamras: ", params)
|
||||
redis = Redis(**params)
|
||||
|
||||
if settings.REDIS_USE_SSL:
|
||||
connection_params['ssl'] = settings.REDIS_USE_SSL
|
||||
connection_params['ssl_cert_reqs'] = settings.REDIS_SSL_REQUIRED
|
||||
connection_params['ssl_keyfile'] = settings.REDIS_SSL_KEY
|
||||
connection_params['ssl_certfile'] = settings.REDIS_SSL_CERT
|
||||
connection_params['ssl_ca_certs'] = settings.REDIS_SSL_CA
|
||||
|
||||
REDIS_SENTINEL_SERVICE_NAME = settings.REDIS_SENTINEL_SERVICE_NAME
|
||||
REDIS_SENTINELS = settings.REDIS_SENTINELS
|
||||
if REDIS_SENTINEL_SERVICE_NAME and REDIS_SENTINELS:
|
||||
connection_params['sentinels'] = REDIS_SENTINELS
|
||||
sentinel_client = Sentinel(**connection_params)
|
||||
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 = []
|
||||
cmd = [
|
||||
@@ -52,7 +64,7 @@ def main():
|
||||
# 父进程结束通知子进程结束
|
||||
signal.signal(signal.SIGTERM, stop_beat_process)
|
||||
|
||||
with redis_lock.Lock(redis, name="beat-distribute-start-lock", expire=60, auto_renewal=True):
|
||||
with redis_lock.Lock(redis_client, name="beat-distribute-start-lock", expire=60, auto_renewal=True):
|
||||
print("Get beat lock start to run it")
|
||||
process = subprocess.Popen(cmd, cwd=APPS_DIR)
|
||||
processes.append(process)
|
||||
|
Reference in New Issue
Block a user