RT aleskxyz
خب سورس این لود بالانسر به همراه باینری و داکر ایمیج بیلد شده رو هم میتونید توی ریپو زیر ببینید:
https://github.com/aleskxyz/dns-tun-lb
ایده پشتش اینه که ما بتونیم برای یه ساب دامین چندین NS record تعریف کنیم جوری که resolver ها به صورت رندوم به یکیش وصل بشن و درخواست کاربر رو براش بفرستن.
لود بالانسرها درخواست رو دریافت میکنن و با بررسی اون میتونن client id رو استخراج کنن و بر اساسش طبق یه الگوریتم deterministic سروری که باید درخواست رو جواب بده رو تعیین کنن. اینجوری دیگه مهم نیست درخواست دست کدوم لودبالانسر میرسه، در نهایت همه لودبالانسرها درخواست های هر کاربر رو به سمت یک سرور میفرستن و یکپارچگی پروتکل حفظ میشه.
در نتیجه ما میتونیم در کنار هر سرور dnstt یه سرور لودبالانسر هم بالا بیارید و طبق چیزی که تو عکس میبینید اینها با هم صحبت میکنن. من این رو روی 32 تا سرور انجام دادم و کانفیگش توی توییت کوت شده هست.
هر بار که کلاینت کانکشنش رو قطع و وصل میکنه یه client id جدید بهش اختصاص داده میشه و در نتیجه به یه سرور جدید متصل میشه. پس اگه دیدید اتصال شما برقرار نمیشه، یه بار قطع و وصل کنید.
لطفا اگه ممکنه کد رو review کنید و اگه اشکالی داری PR بفرستید. ایده خیلی ساده پیاده شده و من مطمین نیستم واقعا همه ابعاد پروتکل dnstt توش دیده شده یا نه.
