آموزش ساخت Private Network برای Load Balancer هتزنر


بخش Network در Load Balancer هتزنر چیست؟
در تصویر اول بخش Network هنگام ساخت Load Balancer دیده میشود. با استفاده از این قسمت میتوانید Load Balancer را به یک شبکه خصوصی متصل کنید تا ارتباط آن با Backend Serverها از طریق Private IP انجام شود.
اگر Load Balancer و Cloud Serverها داخل یک Private Network مشترک باشند، میتوانید Private IPv4 سرورها را بهعنوان Target انتخاب کنید. هتزنر نیز همین روش را برای ارتباط داخلی Load Balancer و سرورها پشتیبانی میکند.
ساختار کلی چنین شبکهای میتواند به این شکل باشد:Internet → Load Balancer → Private Network → Web Server 1 / Web Server 2
در این حالت کاربر همچنان به Public IP یا دامنه Load Balancer متصل میشود، اما ارتباط Load Balancer با سرورهای Backend میتواند داخل شبکه خصوصی انجام شود.
Private Network چه تفاوتی با Public Network دارد؟
Public IP از طریق اینترنت قابل دسترسی است، اما Private IP متعلق به شبکه داخلی شماست و مستقیماً روی اینترنت منتشر نمیشود. Hetzner Networks یک محیط خصوصی Layer 3 بین منابع ایجاد میکند و هر سرور متصل به Network یک Private IPv4 دریافت میکند. سرورها همچنان میتوانند برای ارتباط اینترنتی از Public IP خود استفاده کنند.
مثلاً یک Web Server ممکن است دو IP داشته باشد:Public IP: 203.0.113.20Private IP: 10.0.0.2
Load Balancer میتواند بهجای Public IP، درخواستها را به 10.0.0.2 ارسال کند.
چرا برای Load Balancer از Private Network استفاده کنیم؟
وقتی چند Backend Server دارید، معمولاً نیازی نیست تمام ارتباطات داخلی آنها از مسیر اینترنت عمومی انجام شود. با Private Network میتوانید Load Balancer، Web Serverها، Database Server و سایر سرویسهای داخلی را در یک شبکه خصوصی قرار دهید.
برای مثال:Load Balancer: 10.0.0.2Web-01: 10.0.0.3Web-02: 10.0.0.4Database: 10.0.0.5
در این ساختار Load Balancer درخواستها را به Private IP وبسرورها ارسال میکند و Web Serverها نیز میتوانند برای ارتباط با Database از شبکه داخلی استفاده کنند.
گزینه Create network در تصویر چیست؟
اگر هنگام ساخت Load Balancer هنوز Network نداشته باشید، گزینه Create network را مشاهده میکنید. با انتخاب آن پنجرهای مشابه تصویر دوم باز میشود و میتوانید بدون خارج شدن از مراحل ساخت Load Balancer یک Network جدید ایجاد کنید.
در تصویر سه قسمت اصلی وجود دارد:
Name: نام شبکه
Network zone: منطقه شبکه
IP range: محدوده Private IP
بعد از تکمیل این موارد با انتخاب Create network شبکه خصوصی ساخته میشود.
قسمت Name چیست؟
در تصویر نام Network به شکل زیر انتخاب شده است:network-1
این نام فقط برای شناسایی Network داخل پروژه Hetzner استفاده میشود. بهتر است در پروژههای واقعی نامی انتخاب کنید که کاربرد شبکه مشخص باشد.
برای مثال:production-networkwordpress-privateweb-clusterbackend-network
طبق مستندات Hetzner، نام Network در یک Project نمیتواند تکراری باشد.
Network Zone چیست؟
در تصویر Network Zone برابر با:eu-central
است.
Network Zone محدوده جغرافیایی بزرگتری است که چند Location هتزنر را در بر میگیرد. برای مثال eu-central شامل Falkenstein، Nuremberg و Helsinki است.
بنابراین Network Zone را نباید با Location اشتباه گرفت.
برای مثال:fsn1 → Falkensteinnbg1 → Nuremberghel1 → Helsinki
هر سه داخل:eu-central
قرار میگیرند.
آیا Load Balancer و Target باید دقیقاً در یک دیتاسنتر باشند؟
خیر. Targetهای یک Load Balancer الزاماً نباید دقیقاً در یک Location باشند، اما باید در همان Network Zone موردنیاز Load Balancer قرار بگیرند. برای مثال Load Balancer و Targetهای واقع در Falkenstein، Nuremberg و Helsinki میتوانند همگی در eu-central باشند.
با این حال برای معماریهای حساس به Latency معمولاً بهتر است فاصله فیزیکی و محل سرورها را نیز هنگام طراحی زیرساخت در نظر بگیرید.
IP Range چیست؟
مهمترین قسمت تصویر دوم IP range است. در مثال تصویر مقدار زیر انتخاب شده:10.0.0.0/16
این مقدار مشخص میکند Private IPهای Network از چه محدودهای اختصاص داده شوند.
Hetzner برای Cloud Networks از محدودههای Private تعریفشده در RFC 1918 پشتیبانی میکند:10.0.0.0/8172.16.0.0/12192.168.0.0/16
بنابراین 10.0.0.0/16 یک محدوده Private معتبر برای ساخت Network است.
عدد /16 در 10.0.0.0/16 یعنی چه؟
عبارت /16 همان CIDR Prefix است و مشخص میکند چه بخشی از IP مربوط به Network و چه بخشی برای Addressهای داخل آن استفاده شود.
محدوده:10.0.0.0/16
از نظر آدرسدهی کل بازه:10.0.0.0
تا:10.0.255.255
را پوشش میدهد.
برای یک پروژه کوچک این Range بسیار بزرگتر از چیزی است که معمولاً نیاز دارید، اما انتخاب آن مدیریت Subnetهای بعدی را ساده میکند.
آیا باید حتماً 10.0.0.0/16 انتخاب کنیم؟
خیر. این فقط یک انتخاب رایج است. میتوانید بر اساس معماری خود محدوده خصوصی دیگری از RFC 1918 انتخاب کنید. Hetzner هنگام ساخت Network اجازه استفاده از Rangeهای خصوصی استاندارد 10.0.0.0/8، 172.16.0.0/12 و 192.168.0.0/16 را میدهد.
مثلاً میتوانید شبکههای مختلف را از هم جدا کنید:10.0.0.0/16 → Production10.10.0.0/16 → Development10.20.0.0/16 → Internal Services
فقط باید مراقب باشید Rangeهایی که قرار است بعداً به یکدیگر Route یا از طریق VPN متصل شوند با هم Overlap نداشته باشند.
Subnet چیست؟
Network یک محدوده کلی دارد و درون آن میتوانید Subnet داشته باشید. Hetzner هنگام ایجاد یک Network از طریق Console بهصورت خودکار یک Default Subnet نیز برای آن ایجاد میکند.
برای مثال ممکن است Network اصلی:10.0.0.0/16
باشد و بعداً بخشهای کوچکتری از آن برای سرویسهای مختلف استفاده شوند.
Subnetها مخصوصاً زمانی مفید هستند که معماری شما بزرگ شود و بخواهید Web Server، Database یا سایر بخشها را بهتر سازماندهی کنید.
بعد از ساخت Network چه اتفاقی میافتد؟
بعد از کلیک روی Create network، Network ساخته میشود و میتوانید منابع پروژه را به آن Attach کنید.
طبق مستندات Hetzner، بعد از ساخت Network میتوانید از قسمت Attach Resource سرورها و Load Balancer را به آن متصل کنید. Hetzner در حال حاضر امکان Attach کردن تا 100 Resource شامل Server و Load Balancer به یک Network را ذکر کرده است.
برای سناریوی ما باید Load Balancer و Backend Serverهایی که قرار است با Private IP بهعنوان Target استفاده شوند، عضو همان Private Network باشند.
Private IP چگونه به سرور اختصاص داده میشود؟
وقتی یک Cloud Server را به Network متصل میکنید، Hetzner میتواند یک IPv4 خصوصی از Network به آن اختصاص دهد. همچنین امکان انتخاب IP مشخص داخل محدوده شبکه وجود دارد.
مثلاً:web-01 → 10.0.0.2web-02 → 10.0.0.3web-03 → 10.0.0.4
بعداً در قسمت Targets میتوانید همین Serverها را با Private IP به Load Balancer متصل کنید، به شرط اینکه Load Balancer نیز در همان Network باشد.
یک مثال کامل برای Load Balancer وردپرس
فرض کنید دو Web Server وردپرسی دارید و میخواهید ترافیک با Load Balancer بین آنها تقسیم شود.
Network:10.0.0.0/16
Load Balancer:Private IP: 10.0.0.2
Web Server اول:Private IP: 10.0.0.3
Web Server دوم:Private IP: 10.0.0.4
Database Server:Private IP: 10.0.0.5
ساختار:User → Public IP Load Balancer → 10.0.0.3 / 10.0.0.4
و Web Serverها برای Database:Web Servers → 10.0.0.5
به این ترتیب ارتباط اصلی Backend داخل Private Network انجام میشود.
آیا Backend Server هنوز Public IP لازم دارد؟
الزاماً برای ارتباط با Load Balancer به Public IPv4 نیاز ندارد. Hetzner Load Balancer میتواند Private IPv4 سرور را بهعنوان Target استفاده کند، به شرط اینکه Server و Load Balancer در یک Private Network باشند. حتی یک Cloud Server بدون Public IPv4 میتواند از Private IPv4 بهعنوان Target استفاده کند.
البته اینکه Server برای مدیریت، آپدیت سیستمعامل یا دسترسی به اینترنت به چه نوع Public Connectivity نیاز دارد، موضوع جداگانهای است و به معماری شما بستگی دارد.
آیا Network هتزنر هزینه دارد؟
خود Hetzner Cloud Network رایگان است و Hetzner برای ایجاد Cloud Network هزینه جداگانه دریافت نمیکند.
ترافیکی که روی Private Network Interface منتقل میشود نیز طبق FAQ هتزنر رایگان است.
بنابراین برای ساخت Network موجود در تصویر نیازی به پرداخت هزینه ماهانه جداگانه ندارید. هزینه اصلی مربوط به Resourceهایی مثل خود Server یا Load Balancer خواهد بود.
آیا Private Network جای Firewall را میگیرد؟
خیر. Private Network و Firewall دو وظیفه متفاوت دارند. Network مسیر ارتباط خصوصی بین Resourceها را فراهم میکند، اما همچنان باید دسترسی سرویسها را بهدرستی محدود کنید.
برای مثال اگر Web Server فقط باید از Load Balancer روی Port 80 یا 443 درخواست بگیرد، میتوانید Firewall را متناسب با همین معماری تنظیم کنید.
وجود Private IP بهتنهایی به معنی امن بودن تمام سرویسهای Backend نیست و تنظیم Firewall و خود سیستمعامل همچنان اهمیت دارد.
برای Database هم Private Network مناسب است؟
بله، یکی از کاربردهای مهم Private Network این است که Database مستقیماً روی اینترنت Public در دسترس نباشد.
برای مثال:Load Balancer → Web Servers → Database
Database میتواند فقط با Private IP مثل:10.0.0.5
در دسترس Web Serverها باشد.
خود Hetzner نیز Networks را برای ارتباط مستقیم منابع و سناریوهایی مانند Databaseهایی که نباید Public باشند معرفی میکند.
تفاوت Network با بخش Targets چیست؟
این دو قسمت به یکدیگر مرتبط هستند، اما یک کار انجام نمیدهند.
Network مشخص میکند Load Balancer و Serverها چگونه از طریق شبکه خصوصی با یکدیگر ارتباط داشته باشند.
Targets مشخص میکند Load Balancer واقعاً ترافیک را به کدام Serverها ارسال کند.
بنابراین صرفاً ساخت Network باعث نمیشود تمام Serverهای آن بهصورت خودکار Target شوند. بعد از ایجاد Network باید Backendهای موردنظر را در قسمت Targets نیز مشخص کنید.
تنظیم پیشنهادی برای تصاویر
برای یک Load Balancer ساده با دو یا چند Cloud Server، تنظیم موجود در تصاویر نقطه شروع مناسبی است:
Name: network-1
Network Zone: eu-central
IP Range: 10.0.0.0/16
بعد از ساخت Network، Load Balancer و Cloud Serverهای موردنظر را به همین Network متصل کنید و سپس Serverها را در قسمت Targets اضافه کنید.
اگر Load Balancer و Server در یک Network باشند، میتوانید Private IPv4 سرور را برای Target استفاده کنید.
خلاصه دو تصویر
در تصویر اول بخش Network هنگام ساخت Load Balancer نمایش داده شده است. اگر Network موجود نداشته باشید میتوانید از همان قسمت Create network را انتخاب کنید.
در تصویر دوم فرم ساخت Network دیده میشود. نام network-1 انتخاب شده، Network Zone روی eu-central قرار دارد و IP Range برابر 10.0.0.0/16 است.
بعد از انتخاب Create network، شبکه خصوصی ساخته میشود و میتوانید Load Balancer و Serverها را به آن متصل کنید.
جمعبندی
Private Network یکی از بخشهای مهم در طراحی Load Balancer هتزنر است، چون اجازه میدهد ارتباط Load Balancer با Backend Serverها بهجای Public IP از طریق Private IPv4 انجام شود. برای این کار Load Balancer و Server باید در یک Private Cloud Network مشترک قرار داشته باشند.
در تصویر، Network با نام network-1، Network Zone برابر eu-central و Range برابر 10.0.0.0/16 ساخته میشود. بعد از ساخت کافی است سرورهای Backend و Load Balancer را به همین Network متصل کرده و Private IP سرورها را در بخش Targets استفاده کنید.
مزیت دیگر این است که خود Hetzner Cloud Network و ترافیک Private Network هزینه جداگانهای ندارند.
برای یک معماری ساده وردپرس یا Web Application، ساختاری مثل Internet → Load Balancer → Private Network → Web Servers میتواند پایه تمیز و قابل توسعهای برای ادامه تنظیمات Load Balancer باشد.
