Redis Sentinel چیست ؟

Redis Sentinel چیست؟ آموزش کامل + نحوه اتصال در پایتون

اگر برای شما هم این سوال پیش آمده که redis sentinel چیست و چه کاربردی دارد، در این مقاله به صورت کامل با ردیس سنتینل، معماری آن، نحوه مدیریت High Availability و همچنین نحوه اتصال به آن در پایتون آشنا خواهید شد.

Redis Sentinel چیست؟

Redis Sentinel یک سیستم مانیتورینگ و مدیریت برای Redis است که وظیفه دارد در صورت از کار افتادن سرور اصلی (Master)، به صورت خودکار Failover انجام دهد و یک سرور Slave را به عنوان Master جدید انتخاب کند.

به بیان ساده، پاسخ سوال redis sentinel چیست این است: سیستمی برای تضمین دسترس‌پذیری بالا (High Availability) در Redis.

چرا به Redis Sentinel نیاز داریم؟

در حالت عادی اگر تنها یک Redis Server داشته باشیم و آن از کار بیفتد، کل سیستم کش، سشن کاربران و صف‌ها مختل می‌شود.

  • تشخیص خرابی Master
  • انجام Failover خودکار
  • تبدیل Slave به Master جدید
  • هدایت کلاینت‌ها به سرور جدید

وظایف Redis Sentinel

مانیتورینگ (Monitoring)

ردیس سنتینل به صورت مداوم وضعیت Master و Slaveها را بررسی می‌کند.

اعلان خطا (Notification)

در صورت بروز مشکل، Sentinel می‌تواند هشدار ارسال کند یا اسکریپت اجرا کند.

Failover خودکار

مهم‌ترین قابلیت Redis Sentinel انجام Failover خودکار است. در صورت Down شدن Master، یک Slave به عنوان Master جدید انتخاب می‌شود.

Service Discovery

کلاینت‌ها می‌توانند از Sentinel بپرسند Master فعلی کدام است و همیشه به سرور صحیح متصل شوند.

معماری Redis Sentinel

ساختار پیشنهادی معمولاً شامل موارد زیر است:

  • 1 Master
  • 2 Slave
  • 3 Sentinel

وجود سه Sentinel باعث جلوگیری از Split Brain و تصمیم‌گیری دقیق‌تر می‌شود.

تفاوت Redis Sentinel و Redis Cluster

ویژگی Redis Sentinel Redis Cluster
High Availability دارد دارد
Sharding ندارد دارد
پیچیدگی کمتر بیشتر

جمع‌بندی بخش مفهومی

در این بخش بررسی کردیم که redis sentinel چیست و چگونه باعث افزایش پایداری و دسترس‌پذیری Redis می‌شود.

نحوه اتصال به Redis Sentinel در پایتون

در این بخش یاد می‌گیریم چگونه با استفاده از پایتون به Redis Sentinel متصل شویم و همیشه به Master فعال دسترسی داشته باشیم.

پیش‌نیازها

  • نصب بودن Redis Sentinel
  • داشتن حداقل یک Master و یک Slave
  • نصب پکیج redis در پایتون

نصب کتابخانه redis

pip install redis

اتصال به Redis Sentinel در پایتون

مثال کامل کد


from redis.sentinel import Sentinel

# لیست Sentinel ها
sentinel = Sentinel([
    ('127.0.0.1', 26379),
    ('127.0.0.1', 26380),
    ('127.0.0.1', 26381),
], socket_timeout=0.5)

# دریافت اتصال به Master
master = sentinel.master_for(
    service_name='mymaster',
    socket_timeout=0.5
)

# دریافت اتصال به Slave (اختیاری)
slave = sentinel.slave_for(
    service_name='mymaster',
    socket_timeout=0.5
)

# تست اتصال
master.set('name', 'redis sentinel')
value = master.get('name')

print(value.decode())

توضیح کد

  • Sentinel([...]) → معرفی لیست Sentinelها
  • service_name → نام تعریف شده در sentinel.conf
  • master_for() → اتصال به Master فعال
  • slave_for() → اتصال به یکی از Slaveها

نمونه تنظیم در sentinel.conf


sentinel monitor mymaster 127.0.0.1 6379 2

کلمه mymaster همان service_name است که در کد پایتون استفاده می‌شود.

استفاده در Django


from redis.sentinel import Sentinel

SENTINELS = [('127.0.0.1', 26379)]

sentinel = Sentinel(SENTINELS)

REDIS_CLIENT = sentinel.master_for('mymaster', socket_timeout=0.5)

جمع‌بندی نهایی

در این مقاله بررسی کردیم redis sentinel چیست و چگونه می‌توان به آن در پایتون متصل شد. استفاده از Redis Sentinel در پروژه‌های Production برای جلوگیری از Downtime و افزایش High Availability توصیه می‌شود.