Englishworlber.sa
علم المملكة العربية السعوديةشركة سعودية · الرياض

PostgreSQL

تصميم التوافر العالي لـ PostgreSQL باستخدام Patroni و etcd ونقطة نهاية مستقرة

كيف تعمل Patroni و etcd ونقطة نهاية العميل المستقرة معًا — وأين تفشل تصاميم التوافر العالي بشكل شائع.

١٦ سبتمبر ٢٠٢٦ · 1 دقيقة قراءة

فصل الإجماع عن تكرار قاعدة البيانات

ينقل تكرار PostgreSQL البث (streaming replication) تغييرات قاعدة البيانات. إنه لا يقرر أي عقدة مسموح لها بقبول عمليات الكتابة. يدير Patroni أدوار PostgreSQL والتبديل عند العطل (failover)، بينما يخزّن etcd حالة الإجماع الموزّع. حافظ على وضوح هذا الحدّ: العقدة النسخية السليمة ليست تلقائيًا قائدًا آمنًا، وتوفر عنقود etcd لا يثبت أن تكرار قاعدة البيانات محدّث.

استخدام ثلاثة أعضاء مقيّمين

يتحمّل عنقود etcd المكوّن من ثلاثة أعضاء فشل عضو واحد مع الحفاظ على الأغلبية (quorum). ضع الأعضاء في نطاقات فشل مستقلة قدر الإمكان، وراقب تغييرات القائد، وزمن استجابة الأقران، وزمن استجابة القرص، والمساحة الحرة. لا تعامل etcd أبدًا كإعداد قابل للتخلص منه؛ قم بنسخه احتياطيًا وأمنّ كلًا من اتصال العميل واتصال الأقران. يجب أن يؤدي فقدان الأغلبية إلى إيقاف تغييرات القيادة الآلية بدلاً من إنشاء قائدين قابلين للكتابة.

منح التطبيقات مسارًا واحدًا مستقرًا

لا ينبغي أن تحتوي التطبيقات على قائمة يدوية الصيانة لعقد قاعدة البيانات. يمكن لـ VIP العائم (floating VIP) اتباع قائد Patroni ويوفّر نقطة نهاية بسيطة للقراءة والكتابة. يمكن لـ HAProxy إضافة منفذ منفصل للقراءة والكتابة ومنفذ للقراءة فقط عن طريق فحص نقاط نهاية REST الخاصة بـ Patroni. استخدم VIP وحده للمسار الأكثر موثوقية وبساطة؛ أضف HAProxy فقط عندما يبرّر توسيع نطاق القراءة أو سياسة نقطة النهاية مكوّنًا إضافيًا.

تخطيط سلوك التبديل عند العطل، وليس فقط آليته

اختر عمدًا أقصى تأخير للتكرار للترقية، وسياسة التكرار المتزامن، ومواعيد انتهاء صلاحية الفشل، وسلوك العزل (fencing). قد تحوّل مواعيد انتهاء صلاحية قصيرة توقف الشبكة إلى تبديل غير ضروري عند العطل. يمكن للتكرار المتزامن الصارم حماية البيانات لكنه قد يوقف عمليات الكتابة عندما لا يتوفر عقدة نسخ متزامنة. يتبع الاختيار الصحيح هدف استرداد الأعمال.

اختبار المسارات الصعبة

اختبر إيقاف تشغيل القائد، وانقسام الشبكة، وفقدان عضو etcd، وتأخر العقدة النسخية، والأقراص الممتلئة، وشهادات انتهاء الصلاحية، وعودة القائد السابق. تأكد من سلوك إعادة اتصال العميل وقيس عدم توافر الكتابة. بعد كل اختبار، تحقّق من وجود رئيس واحد فقط، وأن العقد النسخية تعمل بالبث على نفس الخط الزمني، وأن نقطة النهاية المستقرة تشير إلى القائد المقصود.

الخطوة التالية

تحدث مع مهندسي Worlber

أرسل لنا بيئتك وهدفك. سنوضح لك ما يصلح، وما لا يصلح، والخطوة الآمنة التالية.

contactus@worlber.com

تصميم التوافر العالي لـ PostgreSQL باستخدام Patroni و etcd ونقطة نهاية مستقرة | Worlber Insights