اگر برای شما هم این سوال پیش آمده که redis sentinel چیست و چه کاربردی دارد، در این مقاله به صورت کامل با ردیس سنتینل، معماری آن، نحوه مدیریت High Availability و همچنین نحوه اتصال به آن در پایتون آشنا خواهید شد.
Redis Sentinel یک سیستم مانیتورینگ و مدیریت برای Redis است که وظیفه دارد در صورت از کار افتادن سرور اصلی (Master)، به صورت خودکار Failover انجام دهد و یک سرور Slave را به عنوان Master جدید انتخاب کند.
به بیان ساده، پاسخ سوال redis sentinel چیست این است: سیستمی برای تضمین دسترسپذیری بالا (High Availability) در Redis.
در حالت عادی اگر تنها یک Redis Server داشته باشیم و آن از کار بیفتد، کل سیستم کش، سشن کاربران و صفها مختل میشود.
ردیس سنتینل به صورت مداوم وضعیت Master و Slaveها را بررسی میکند.
در صورت بروز مشکل، Sentinel میتواند هشدار ارسال کند یا اسکریپت اجرا کند.
مهمترین قابلیت Redis Sentinel انجام Failover خودکار است. در صورت Down شدن Master، یک Slave به عنوان Master جدید انتخاب میشود.
کلاینتها میتوانند از Sentinel بپرسند Master فعلی کدام است و همیشه به سرور صحیح متصل شوند.
ساختار پیشنهادی معمولاً شامل موارد زیر است:
وجود سه Sentinel باعث جلوگیری از Split Brain و تصمیمگیری دقیقتر میشود.
| ویژگی | Redis Sentinel | Redis Cluster |
|---|---|---|
| High Availability | دارد | دارد |
| Sharding | ندارد | دارد |
| پیچیدگی | کمتر | بیشتر |
در این بخش بررسی کردیم که redis sentinel چیست و چگونه باعث افزایش پایداری و دسترسپذیری Redis میشود.
در این بخش یاد میگیریم چگونه با استفاده از پایتون به Redis Sentinel متصل شویم و همیشه به Master فعال دسترسی داشته باشیم.
pip install redis
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 monitor mymaster 127.0.0.1 6379 2
کلمه mymaster همان service_name است که در کد پایتون استفاده میشود.
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 توصیه میشود.
نظرات (0)
شما باید قبل از ارسال نظر در سایت وارد شوید.
هیچ نظری ثبت نگردیده است.