Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

وضع الكتلة

يدعم PRX-WAF نشرات كتلة متعددة العقد للتوسع الأفقي والتوافر العالي. يستخدم وضع الكتلة اتصالاً بين العقد مستنداً إلى QUIC وانتخاب قائد مستوحى من Raft ومزامنة تلقائية للقواعد والإعداد وأحداث الأمن عبر جميع العقد.

INFO

وضع الكتلة اختياري بالكامل. افتراضياً، يعمل PRX-WAF في وضع مستقل بدون أي حمل للكتلة. فعِّله بإضافة قسم [cluster] إلى إعدادك.

البنية المعمارية

تتكون كتلة PRX-WAF من عقدة رئيسية واحدة وعقدة عاملة واحدة أو أكثر:

mermaid
graph TB
    subgraph Cluster["PRX-WAF Cluster"]
        MAIN["Main Node (node-a)<br/>Leader Election + Config Source"]
        WORKER1["Worker Node (node-b)<br/>Traffic Processing"]
        WORKER2["Worker Node (node-c)<br/>Traffic Processing"]
    end

    DB["PostgreSQL<br/>(Shared or Replicated)"]

    MAIN <-->|QUIC + mTLS| WORKER1
    MAIN <-->|QUIC + mTLS| WORKER2
    MAIN --> DB
    WORKER1 --> DB
    WORKER2 --> DB

أدوار العقد

الدورالوصف
mainيحتوي على الإعداد الموثوق ومجموعة القواعد. يدفع التحديثات إلى العمال. يشارك في انتخاب القائد.
workerيُعالج الحركة ويطبِّق خط أنابيب WAF. يستقبل تحديثات الإعداد والقواعد من العقدة الرئيسية. يدفع أحداث الأمن إلى الرئيسية.
autoيشارك في انتخاب القائد المستوحى من Raft. يمكن لأي عقدة أن تصبح الرئيسية.

ما يُزامَن

البياناتالاتجاهالفترة
القواعدالرئيسية إلى العمالكل 10 ثوانٍ (قابل للتهيئة)
الإعدادالرئيسية إلى العمالكل 30 ثانية (قابل للتهيئة)
أحداث الأمنالعمال إلى الرئيسيةكل 5 ثوانٍ أو 100 حدث (أيهما أسرع)
الإحصاءاتالعمال إلى الرئيسيةكل 10 ثوانٍ

الاتصال بين العقد

تستخدم جميع اتصالات الكتلة QUIC (عبر Quinn) عبر UDP مع TLS المتبادل (mTLS):

  • المنفذ: 16851 (الافتراضي)
  • التشفير: mTLS مع شهادات مُنشأة تلقائياً أو مُهيَّأة مسبقاً
  • البروتوكول: بروتوكول ثنائي مخصص عبر تدفقات QUIC
  • الاتصال: دائم مع إعادة الاتصال التلقائي

انتخاب القائد

عند إعداد role = "auto"، تستخدم العقد بروتوكول انتخاب مستوحى من Raft:

المعاملالافتراضيالوصف
timeout_min_ms150الحد الأدنى لمهلة الانتخاب (نطاق عشوائي)
timeout_max_ms300الحد الأقصى لمهلة الانتخاب (نطاق عشوائي)
heartbeat_interval_ms50فترة نبضة القلب من الرئيسية إلى العمال
phi_suspect8.0عتبة الشك لكاشف فشل phi accrual
phi_dead12.0عتبة الموت لكاشف فشل phi accrual

عندما تصبح العقدة الرئيسية غير متاحة، ينتظر العمال مهلة عشوائية ضمن النطاق المُهيَّأ قبل بدء الانتخاب. أول عقدة تحصل على أغلبية الأصوات تصبح الرئيسية الجديدة.

مراقبة الصحة

يعمل فاحص صحة الكتلة على كل عقدة ويراقب الاتصال بالنظراء:

toml
[cluster.health]
check_interval_secs   = 5    # Health check frequency
max_missed_heartbeats = 3    # Mark peer as unhealthy after N misses

تُستبعَد العقد غير الصحية من الكتلة حتى تتعافى وتُعيد المزامنة.

إدارة الشهادات

تُصادق عقد الكتلة على بعضها باستخدام شهادات mTLS:

  • وضع الإنشاء التلقائي: تُنشئ العقدة الرئيسية شهادة CA وتوقِّع شهادات العقد تلقائياً عند أول تشغيل. تستقبل العقد العاملة شهاداتها خلال عملية الانضمام.
  • الوضع المُهيَّأ مسبقاً: تُنشأ الشهادات بدون اتصال وتُوزَّع على كل عقدة قبل التشغيل.
toml
[cluster.crypto]
ca_cert        = "/certs/cluster-ca.pem"
node_cert      = "/certs/node-a.pem"
node_key       = "/certs/node-a.key"
auto_generate  = true
ca_validity_days    = 3650   # 10 years
node_validity_days  = 365    # 1 year
renewal_before_days = 7      # Auto-renew 7 days before expiry

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

Released under the Apache-2.0 License.