آموزش راهاندازی Redis Replication Cluster برای پایداری و مقیاس پذیری

اگه تا حالا با Redis کار کرده باشی، حتماً می دونی که این دیتابیس دوست داشتنی چقدر می تونه سرعت و عملکرد سیستم ها رو متحول کنه. اما وقتی پای پروژه های بزرگ تر به میون میاد، فقط داشتن یه سرور Redis کافی نیست. اینجاست که Redis Replication Cluster وارد بازی میشه؛ همون چیزی که باعث میشه سرویس هات توی شلوغ ترین لحظه ها هم بدون حتی یک لقمه تأخیر کار کنن.
توی این مقاله می خوایم خیلی راحت، بدون پیچوندن و اصطلاحات سنگین یاد بگیریم چطور یک Redis Replication Cluster استاندارد و پایدار راه بندازیم. از معرفی ساختار Master–Replica گرفته تا تنظیمات حیاتی و تست نهایی، همه چی رو با هم پیش می بریم.

راه اندازی Redis Replication Cluster (دستی)
1- نصب Redis روی همه گره ها
روی تمام سرورها (Master و Replica ها)، Redis رو نصب کنید:
sudo apt update sudo apt install redis-server -y

2- پیکربندی Master
فایل کانفیگ رو باز کنید:
sudo nano /etc/redis/redis.conf
و موارد زیر را اصلاح کنید:
- تنظیم bind روی IP LAN
مثلاً:
bind 10.42.0.247
- خاموش کردن protected-mode (در شبکه داخلی)
protected-mode no
- تنظیم رمز عبور
- فعال کردن AOF برای جلوگیری از از دست رفتن داده
Redis رو ری استارت کنید:
sudo systemctl restart redis

3- پیکربندی Replica ها
روی هر Replica:
sudo nano /etc/redis/redis.conf
موارد زیر رو تغییر بدید:
- تنظیم Master برای اتصال
مثال:
replicaof 10.42.0.247 6379
- اگه Master پسورد داره:
requirepass your_password_here masterauth your_password_here
ری استارت:
sudo systemctl restart redis

4- تست Replication
روی Master و Replica ها:
باید چیزی مثل این ببینید:
روی Master: لیست Replica ها
روی Replica: وضعیت sync با Master

افزودن High Availability با Redis Sentinel
Replication به تنهایی failover انجام نمیده و ما برای failover اتوماتیک از Sentinel استفاده می کنیم. Sentinel حداقل سه نود نیاز داره:
1- ساخت فایل Sentinel
روی هر ماشین Sentinel:
و این رو وارد کنید:
port 26379 sentinel monitor mymaster 10.42.0.247 6379 2 sentinel auth-pass mymaster your_password_here sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 1
2- اجرای Sentinel
روی هر نود Sentinel:
redis-sentinel /etc/redis/sentinel.conf

3- اتصال برنامه به Sentinel
به جای اتصال مستقیم به Master، تو برنامه این رو قرار بدید:
sentinel1:26379,sentinel2:26379,sentinel3:26379
برنامه همیشه نود Master رو خودش پیدا میکنه.

ساخت Redis Cluster (Sharding + Replication)
این مرحله برای پروژه هاییه که داده های زیادی دارن و میخوان بار بین چند نود تقسیم بشه و به Replication + Sharding همزمان نیاز دارن:
1- ساخت پوشه برای نودها
مثلاً برای 6 نود (3 Master و 3 Replica):
mkdir -p /redis/7000 /redis/7001 /redis/7002 /redis/7003 /redis/7004 /redis/7005
2- ساخت redis.conf برای هر نود
مثال فایل کانفیگ نود 7000:
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes bind 10.42.0.247

همین فایل رو با پورت های دیگه تو پوشه های دیگه ایجاد کنید.
3- اجرای نود های Redis
redis-server /redis/7000/redis.conf redis-server /redis/7001/redis.conf redis-server /redis/7002/redis.conf redis-server /redis/7003/redis.conf redis-server /redis/7004/redis.conf redis-server /redis/7005/redis.conf

4- ایجاد Cluster
تمام IP ها و پورت ها رو با هم بسازید:
redis-cli --cluster create \ 10.42.0.247:7000 10.42.0.247:7001 10.42.0.247:7002 \ 10.42.0.247:7003 10.42.0.247:7004 10.42.0.247:7005 \ --cluster-replicas 1

این یعنی 3 نود Master و 3 Replica. کلستر بعد از ساخت، به صورت خودکار sharding رو انجام میده.
مزایای Redis
سرعت بالا: همه چیز تو حافظه، جواب ها در کسری از ثانیه.
ساختارهای داده متنوع: String، List، Hash، Set و Streams.
پایداری و دسترس پذیری: Master–Replica + Sentinel بدون وقفه کار می کنه.
مقیاس پذیری آسان: Cluster و Sharding برای پروژه های بزرگ.
سازگاری با زبان ها: Python، Java، Node.js، PHP و خیلیای دیگه.
چالش های Redis
رم محدود: همه دادهها تو حافظه، نیاز به RAM کافی.
مدیریت پیچیده: Cluster و Failover تو پروژههای بزرگ نیاز به دانش داره.
پایداری حساس: AOF/RDB باید درست کانفیگ بشه، وگرنه داده ها ممکنه از بین برن.
بار نوشتن سنگین: Write-heavy Apps باید تنظیمات replication درست باشه.
امنیت: نیاز به رمز عبور و firewall؛ Redis به صورت پیش فرض امن نیست.
سخن آخر
راه اندازی یه Redis Replication Cluster شاید در نگاه اول کمی پیچیده به نظر برسه اما وقتی قدم به قدم جلو برید، می بینید چقدر میتونه عملکرد و پایداری پروژه تون رو متحول کنه. از یک Master–Replica ساده گرفته تا Sentinel و حتی Sharding واقعی هر کدوم یک لول جدید از اطمینان و سرعت رو براتون به همراه میاره.
پس اگه می خواید پروژه تون همیشه در اوج سرعت بمونه و حتی در لحظات بحرانی هم خم به ابروش نیاد الان بهترین زمانه که Redis رو جدی تر بگیرید و این معماری ها رو وارد کارتون کنید.
Replica ها می توانند نقش Master را به طور خودکار یا دستی übernehmen کرده و سرویس را ادامه دهند.
خیر، با چند تنظیم ساده در فایل کانفیگ و اجرای دستورات پایه ای، می توان آن را فعال کرد.
بله، یکی از رایج ترین معماری ها برای مقیاس پذیری و پایداری Redis در محیط های واقعی است.


