Redis Sentinel والتوافر العالي
Redis Sentinel والتوافر العالي
يوفر Redis Sentinel توافرًا عاليًا لـ Redis من خلال الفشل التلقائي والمراقبة وإدارة التكوين. يضمن بقاء نشر Redis الخاص بك قيد التشغيل حتى عند فشل العقد الرئيسية.
ما هو Redis Sentinel؟
Redis Sentinel هو حل التوافر العالي المدمج في Redis الذي يراقب مثيلات Redis الخاصة بك، ويكتشف الأعطال، ويقوم تلقائيًا بترقية النسخ المتماثلة إلى رئيسية عند الحاجة.
كيف يعمل Sentinel
يستخدم Sentinel نظام قائم على النصاب حيث تراقب عمليات Sentinel متعددة مثيلات Redis وتصوت لتحديد ما إذا كان الخادم الرئيسي معطلاً وأي نسخة متماثلة يجب ترقيتها.
┌─────────────┐
│ العميل │
└──────┬──────┘
│ طلب عنوان الخادم الرئيسي
┌──────▼──────┐
│ Sentinel 1 │
└─────────────┘
│ مراقبة
┌──────▼──────┐ ┌─────────────┐
│ الرئيسي │────>│ نسخة 1 │
└─────────────┘ └─────────────┘
│
┌──────▼──────┐
│ نسخة 2 │
└─────────────┘
تكوين Redis Sentinel
أنشئ ملف تكوين sentinel.conf لإعداد سلوك المراقبة والفشل التلقائي:
# مراقبة خادم رئيسي باسم "mymaster" على 127.0.0.1:6379
# النصاب 2 يعني أن 2 Sentinels يجب أن يتفقوا على الفشل التلقائي
sentinel monitor mymaster 127.0.0.1 6379 2
# يعتبر الخادم الرئيسي معطلاً بعد 5000ms دون استجابة
sentinel down-after-milliseconds mymaster 5000
# مهلة عملية الفشل التلقائي
sentinel failover-timeout mymaster 10000
# عدد النسخ المتماثلة التي يمكن إعادة تكوينها في وقت واحد
sentinel parallel-syncs mymaster 1
# مصادقة اختيارية
sentinel auth-pass mymaster yourpassword
بدء Sentinel
قم بتشغيل Sentinel باستخدام أمر redis-sentinel أو redis-server في وضع sentinel:
redis-sentinel /path/to/sentinel.conf
# الطريقة 2: استخدام redis-server
redis-server /path/to/sentinel.conf --sentinel
أوامر Sentinel
راقب وأدر نشر Sentinel الخاص بك باستخدام هذه الأوامر:
redis-cli -p 26379
# الحصول على عنوان الخادم الرئيسي
SENTINEL get-master-addr-by-name mymaster
# عرض جميع الخوادم الرئيسية المراقبة
SENTINEL masters
# الحصول على النسخ المتماثلة للخادم الرئيسي
SENTINEL replicas mymaster
# الحصول على مثيلات Sentinel التي تراقب الخادم الرئيسي
SENTINEL sentinels mymaster
# فرض الفشل التلقائي
SENTINEL failover mymaster
# التحقق من أن الخادم الرئيسي معطل
SENTINEL ckquorum mymaster
# إعادة تعيين حالة Sentinel
SENTINEL reset mymaster
عملية الفشل التلقائي
عندما يكتشف Sentinel فشل الخادم الرئيسي، يتبع هذه العملية:
- الكشف: تتفق عدة Sentinels على أن الخادم الرئيسي معطل (يصل إلى النصاب)
- انتخاب القائد: تنتخب Sentinels قائدًا لأداء الفشل التلقائي
- اختيار النسخة المتماثلة: يختار القائد أفضل نسخة بناءً على إزاحة النسخ المتماثل والأولوية
- الترقية: يتم ترقية النسخة المتماثلة المحددة إلى رئيسية باستخدام SLAVEOF NO ONE
- إعادة التكوين: يتم إعادة تكوين النسخ المتماثلة الأخرى للنسخ من الخادم الرئيسي الجديد
- الإشعار: يتم إخطار العملاء بعنوان الخادم الرئيسي الجديد
ربط العملاء بـ Sentinel
يجب على العملاء الاتصال بـ Sentinel لاكتشاف الخادم الرئيسي الحالي، وليس تشفير عنوان الخادم الرئيسي:
$sentinels = [
'tcp://127.0.0.1:26379',
'tcp://127.0.0.1:26380',
'tcp://127.0.0.1:26381'
];
$client = new Predis\Client($sentinels, [
'replication' => 'sentinel',
'service' => 'mymaster'
]);
# يكتشف العميل الخادم الرئيسي تلقائيًا
$client->set('key', 'value');
const Redis = require('ioredis');
const redis = new Redis({
sentinels: [
{ host: '127.0.0.1', port: 26379 },
{ host: '127.0.0.1', port: 26380 },
{ host: '127.0.0.1', port: 26381 }
],
name: 'mymaster'
});
redis.set('key', 'value');
الفحوصات الصحية والمراقبة
يراقب Sentinel باستمرار مثيلات Redis ويبلغ عن حالتها:
redis-cli -p 26379 PING
# الإخراج: PONG
# الحصول على معلومات تفصيلية عن الخادم الرئيسي
SENTINEL master mymaster
# يعرض: ip، port، flags، num-slaves، quorum، إلخ.
# مراقبة أحداث Sentinel في الوقت الفعلي
redis-cli -p 26379 --csv psubscribe '*'
إشعارات Sentinel
قم بتكوين Sentinel لإرسال إشعارات عند حدوث أحداث مهمة:
# sentinel.conf
sentinel notification-script mymaster /path/to/notify.sh
# notify.sh
#!/bin/bash
EVENT=$1
MASTER=$2
echo "Sentinel event: $EVENT for $MASTER" | mail -s "Redis Alert" admin@example.com
أولوية النسخة المتماثلة
تحكم في النسخ المتماثلة المفضلة أثناء الفشل التلقائي باستخدام replica-priority:
# الأرقام الأقل = أولوية أعلى (0 = لا ترقى أبدًا)
replica-priority 100
# التحقق من الأولويات
SENTINEL replicas mymaster
أفضل الممارسات
- قم بتشغيل 3 مثيلات Sentinel على الأقل عبر خوادم/مناطق توافر مختلفة
- استخدم نفس قيمة النصاب عبر جميع تكوينات Sentinel
- قم بتعيين down-after-milliseconds بشكل مناسب (5000-30000ms نموذجي)
- راقب سجلات Sentinel لأحداث الفشل التلقائي والشذوذ
- اختبر إجراءات الفشل التلقائي بانتظام في بيئات التدريج
- لا تقم أبدًا بتشفير عناوين الخوادم الرئيسية في كود التطبيق
- استخدم المصادقة (sentinel auth-pass) في الإنتاج