Gobetween - Balancer beban modern & minimalis dan proxy -reverse untuk er️ era awan.
Status Saat Ini : Mode Pemeliharaan, Menerima PRS . Saat ini digunakan di beberapa lingkungan produksi yang sangat dimuat.
Fitur
Balancing beban L4 cepat
- TCP - dengan opsional dukungan protokol proxy
- TLS - Pengakhiran TLS + Proxy ACME & TLS
- UDP - dengan sesi virtual opsional dan mode transparan
Konfigurasi Bersihkan & Fleksibel dengan Toml atau Json
- File - Baca konfigurasi dari file
- URL - URL kueri oleh http dan dapatkan konfigurasi dari badan respons
- Konsul - Konsul Konsul API Penyimpanan Kunci Kunci untuk Konfigurasi
API REST manajemen
- Informasi Sistem - Info Server Umum
- Konfigurasi - buang konfigurasi arus
- Server - Daftar, Buat & Hapus
- Statistik & Metrik - Untuk server dan backend termasuk RX/TX, Status, Koneksi Aktif & dll.
Penemuan
- Static - Hardcode Backends List dalam file konfigurasi
- Docker - Backend Query dari Docker / Swarm API Difilter oleh Label
- EXEC - Jalankan program sewenang -wenang dan dapatkan backend dari stdout -nya
- JSON - URL HTTP yang sewenang -wenang dan pick backends dari respons JSON (dari struktur apa pun)
- Plaintext - Query Arbitrary HTTP dan Parse Backends dari Teks Respons dengan RegExp yang disesuaikan
- SRV - Query DNS Server dan dapatkan backend dari SRV Records
- Konsul - Query Consul Services API untuk backends
- LXD - Backend Query dari LXD
Chechecks
- Ping - TCP Ping HealthCheck sederhana
- EXEC - Jalankan program sewenang -wenang lulus host & port sebagai opsi, dan baca status HealthCheck dari stdout
- Probe - Kirim byte spesifik ke backend (UDP, TCP atau TLS) dan mengharapkan jawaban yang benar (byte atau regexp)
Strategi menyeimbangkan (dengan dukungan SNI)
- Berat - Pilih Backend dari Bobot Relatif Berbasis Pool dari Backends
- Roundrobin - Backend pilihan sederhana dari kolam dalam urutan melingkar
- IPhash - Rute klien ke backend yang sama berdasarkan klien ip hash
- IPhash1 - Sama seperti IPhash tetapi Backend Removal konsisten (klien tetap terhubung ke backend yang sama, bahkan jika beberapa backend lainnya turun)
- Kecil - pilih backend dengan koneksi paling aktif
- LEWATBANDWIDTH - backends dengan bandwidth terkecil
Terintegrasi mulus dengan Docker dan dengan sistem kustom apa pun (terima kasih kepada Exec Discovery and Healthchecks)
Distribusi biner tunggal
Arsitektur
Penggunaan
- Instal dengan snap: https://snapcraft.io/gobetween
- Opsi instalasi lainnya
- Baca referensi konfigurasi
- Jalankan
gobetween --help
untuk bantuan penuh pada semua perintah dan opsi yang tersedia.
Peretasan
- Instal GO 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
Debug dan tes
Jalankan beberapa server web untuk tes di terminal yang berbeda:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
Alih -alih modul http internal Python, Anda juga dapat menggunakan server web biner tunggal (berbasis GO) seperti: https://github.com/udhos/gowebhello
Gowebhello juga memiliki dukungan untuk SSL Sertificates (mode https ), jika Anda ingin melakukan demo cepat dari kemampuan TLS+SNI dari gobetween.
Letakkan localhost:8000
dan localhost:8001
ke static_list
dari penemuan statis dalam file config, lalu coba:
Aktifkan masalah profiler dan debug yang Anda temui
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
Pertunjukan
Cepat! Lihat Pengujian Kinerja
Namanya
Ini adalah permainan kata -kata: gobetween ("pergi antara").
Juga, ditulis dalam go, dan itu proxy jadi itu adalah sesuatu yang tetap antara 2 partai?
Lisensi
Mit. Lihat file lisensi untuk lebih jelasnya.
Penulis & Pemelihara
- Yaroslav Pogrebnyak
- Nick Doikov
- Ievgen Ponomarenko
- Illarion Kovalchuk
Semua kontributor
Masyarakat
- Bergabunglah dengan Gobetween Telegram Group di sini.
Logo
Logo oleh Max Demchenko