getbetween - موازن الحمل الحديث والأحد والأقصى الحدوث و proxy العكسي لعصر cloud.
الحالة الحالية : وضع الصيانة ، قبول PRS . حاليا قيد الاستخدام في العديد من بيئات الإنتاج التي تم تحميلها بدرجة عالية.
سمات
موازنة التحميل السريع L4
- TCP - مع دعم بروتوكول الوكيل الاختياري
- TLS - TLS إنهاء + ACME & TLS Proxy
- UDP - مع جلسات افتراضية اختيارية ووضع شفاف
تكوين واضح ومرن مع Toml أو JSON
- الملف - قراءة التكوين من الملف
- عنوان URL - URL Query بواسطة HTTP واحصل على التكوين من هيئة الاستجابة
- القنصل - API القنصل - Concery Consul -value Storage API للتكوين
إدارة API الإدارة
- معلومات النظام - معلومات الخادم العام
- التكوين - تفريغ التكوين الحالي
- الخوادم - قائمة ، إنشاء وحذف
- الإحصائيات والمقاييس - للخوادم والخلفية بما في ذلك Rx/TX ، الحالة ، الاتصالات النشطة & إلخ.
اكتشاف
- ثابت - قائمة الخلفية المتشددين في ملف التكوين
- Docker - استعلام الخلفية من Docker / Swarm API التي تمت تصفيتها بواسطة Label
- Exec - قم بتنفيذ برنامج تعسفي واحصل على عودة من stdout
- json - Query التعسفي HTTP URL واختيار الخلفية من استجابة JSON (من أي هيكل)
- نص عادي - الاستعلام التعسفي HTTP والحالة الخلفية من نص الاستجابة مع regexp مخصصة
- SRV - استعلام خادم DNS والحصول على عودة من سجلات SRV
- القنصل - API Consul - الاستعلام API للخلفية
- LXD - الاستعلام الخلفي من LXD
صحة
- Ping - Simple TCP Ping HealthCheck
- exec - تنفيذ برنامج تعسفي تمرير مضيف ومنفذ كخيارات ، وقراءة حالة HealthCheck من stdout
- مسبار - أرسل بايت محددة إلى الواجهة الخلفية (UDP ، TCP أو TLS) وتوقع إجابة صحيحة (بايت أو regexp)
استراتيجيات الموازنة (مع دعم SNI)
- الوزن - حدد الواجهة الخلفية من الأوزان النسبية القائمة على البلياردو
- Roundrobin - الواجهة الخلفية المنتخبة البسيطة من البركة بترتيب دائري
- Iphash - توجيه عميل إلى نفس الواجهة الخلفية استنادًا إلى تجزئة IP للعميل
- Iphash1 - مثل Iphash ولكن إزالة الواجهة الخلفية متسقة (لا يزال العملاء يتصلون بنفس الواجهة الخلفية ، حتى لو كان هناك بعض الآثار الخلفية الأخرى)
- أقل
- أقل bandwidth - الخلفية بأقل عرض النطاق الترددي
يدمج بسلاسة مع Docker ومع أي نظام مخصص (بفضل اكتشاف Exec و HealthChecks)
توزيع ثنائي واحد
بنيان
الاستخدام
- تثبيت مع Snap: https://snapcraft.io/gobetween
- خيارات التثبيت الأخرى
- قراءة مرجع التكوين
- تنفيذ
gobetween --help
للحصول على مساعدة كاملة على جميع الأوامر والخيارات المتاحة.
القرصنة
- تثبيت GO 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
تصحيح واختبار
قم بتشغيل العديد من خوادم الويب للاختبارات في أطراف مختلفة:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
بدلاً من وحدة HTTP الداخلية الخاصة بـ Python ، يمكنك أيضًا استخدام خادم ويب ثنائي (GO) مثل: https://github.com/udhos/gowebhello
يحظى Gowebhello بدعم SSL Sertificates أيضًا (وضع HTTPS ) ، في حال كنت ترغب في القيام بعروض تجريبية سريعة لقدرات TLS+SNI من GetBetween.
ضع localhost:8000
و localhost:8001
إلى static_list
من الاكتشاف الثابت في ملف التكوين ، ثم جربه:
تمكين قضايا البروفيلر وتصحيح الأخطاء التي تواجهها
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
أداء
إنه سريع! انظر اختبار الأداء
الاسم
إنها مسرحية على الكلمات: getbetween ("اذهب بين").
أيضًا ، إنه مكتوب في GO ، وهو وكيل لذا فهو شيء يبقى بين طرفين؟
رخصة
معهد ماساتشوستس للتكنولوجيا. انظر ملف الترخيص لمزيد من التفاصيل.
المؤلفون والمباريات
- Yaroslav Pogrebnyak
- نيك دوكوف
- Ievgen Ponomarenko
- Illarion Kovalchuk
جميع المساهمين
مجتمع
- انضم إلى مجموعة Telegram هنا.
شعار
شعار بقلم ماكس ديمشينكو