نظرة عامة #
nftlb يعتمد هذا النظام على حزمة شبكات لينكس netfilter/nftables. تُوفر هذه الحزمة الجديدة مفاهيم وقدرات جديدة نحتاجها لتتناسب مع تصميم موازنة الحمل الحالي.
تهدف هذه المقالة إلى تقديم فهم عام لكيفية تصميم مسار بيانات موازن تحميل nftables ومسار التحكم.
خطافات مسار البيانات #
هذه هي خطافات Netfilter التي يستخدمها nftlb، مستفيدًا من السلاسل القابلة للتكوين. يجب تضمين مفاهيم جديدة، مثل تخفيف عبء تتبع الاتصال، لتسريع الاتصالات المُعاد توجيهها إلى الخوادم الخلفية.
------------ | DNSBL | ------------ | دخول قائمة الانتظار | التوجيه المسبق التوجيه اللاحق ------------ ------------- ------------- ------- -------------- ------- | مرشح | مرشح | مرشح | | مرشح | nat | | مرشح | | nat | | 0 | 50-99 | 100 | | -150 | 0 | | 0 | | 100 | --> | | | سياسات القسم |-( Conntrack )-> | حدود القسم | |-( Routing )-> | | --> | | | التجميع | جداول التدفق | DSR | VS{} | المساعدون | dNAT | VS{} | تفريغ التدفق | | sNAT | | | | stless dNAT | | العلامات | | -------------- ------- ------------- ------------- ------------- ------------ -------
دخول #
(0) مرشح:مخصص لإدارة التجميع. لم يُضمَّن بعد في nftlb.
مرشح (50-99): مخصص لتسريع جداول التدفق. لم يُدرج بعد في nftlb.
(100) مرشح:محجوز، بالترتيب، لـ: سياسات الأمان (القوائم السوداء والقوائم البيضاء)، والإرجاع المباشر للخادم وطوبولوجيات dNAT عديمة الجنسية.
التوجيه المسبق #
مرشح (-150):محجوز لحدود الأمان لكل خدمة افتراضية أو لكل واجهة خلفية مثل: الحد الأقصى لعدد الاتصالات التي تم إنشاؤها، وحد TCP RST في الثانية، وحد TCP SYN في الثانية، وإسقاط اتصالات TCP غير الصارمة، والانتظار في خدمة DNSBL، والخدمة الافتراضية وعلامات الواجهة الخلفية، واستخدام المساعدين، وتسجيل اتصالات الإدخال لكل خدمة افتراضية.
(0) نات:محجوزة لتشويه وجهة NAT.
إلى الأمام #
(0) مرشح: مخصص لتفريغ التدفق. لم يُدرج بعد في nftlb.
التوجيه اللاحق #
(100) نات:محجوزة لتشويه وجهة NAT.
مسار التحكم #
تم تصميم مسار التحكم nftlb كبرنامج شيطاني يوفر خادم http بسيطًا مع واجهة برمجة التطبيقات، أو ثنائي مستقل يقبل ملف تكوين بتنسيق JSON.
-------------- الترجمة ------------- -------- JSON API | | objs to nft | | netlink | | ------------> | http server | --------------> | libnftables | --------> | kernel | | | | | | | ------------- | ------------ -------- | netlink | ---------------------------------------