راهنمای کامل نصب و پیکربندی proxmox بر روی root server های Hetzner

 

چند وقت پیش من و علیرضا تصمیم گرفتیم که بریم و از Hetzner که یه دیتاسنتر خوب آلمانی هست یه روت سرور بگیریم تا بتونیم پروژه‌هامون رو روش پیاده‌سازی کنیم.

بعد از ثبت‌نام و ارسال مدارک و خرید سرور با مشخصات ۸ هسته پردازنده و ۴۸ گیگابایت رم و ۲تا هارد ۲ترابایت و همچنین خرید یه سابنت یا زیرشبکه با رنج /۲۹ از اونا کارم رو شروع کردم.

بد ندیدم تا ریز مسائلی که بهشون برخوردم و راهنمای کامل نصب رو هم اینجا بنویسم تا شاید به درد یکی بخوره 🙂

اگه نمی‌دونین proxmox چیه باید بگم که یه ابزار تحت وب برای ساختن و مدیریت ماشین‌های مجازی روی یه سرور.

قدم اول نصب یه دبیان تر و تمیز

برای اینکار باید به پنل روبات لاگین کنیم و. سرور موردنظر رو انتخاب کنیم و به منوی rescue بریم و اول از dropdown گزینه linux و بعدش هم Radio button عبارت ۶۴bit رو انتخاب کنیم. این کار یه دبیان رو روی شبکه برامون لود میکنه که بتونیم باهاش هرچیزی که میخوایم رو نصب کنیم. بعد از زدن دکمه activate یادتون باشه که یه پسورد برامون generate می‌کنه که بهتره اونو سیو کنیم.

راهنمای استفاده از پنل روبات رو هم از اینجا بخونین

مرحله بعدی اینه که بریم به منوی reset و بعدش یه ریست به سرور بدیم.

این ریست باعث میشه که موقع بوت سرور روی مود rescue بوت بشه. البته لازم به ذکر هست که اگه برای اولین بار هست سرور رو میخرین، سرور روی این مود قرار داره.

بعد از اتصال به سرور با کمک ssh یعنی با کمک دستور زیر:

به سرور وصل می‌شیم. مهندس‌های هتزنر یه ابزاری نوشتن به اسم installimage که به کمک اون میشه انواع سیستم‌عامل‌ها رو روی سرور نصب کرد.

قدیم (یعنی حدود دوهفته قبل از نوشتن این مقاله) یه بخشی توی installimage وجود داشت به اسم virtulization که توش هم proxmox بود و هم coreOS اما خب الان رفتن توی زیرشاخه other و یادتون باشه که به‌هیچ‌وجه درست کار نمیکنن و ازشون استفاده نکنین.

بهترین کار انتخاب Debian هست. بعد از انتخاب Debian یه منوی جدید باز میشه که میگه نسخه دبیان رو انتخاب کنید که ما jessie رو انتخاب می‌کنیم.

بعد از اون یه ادیتوری باز میشه که میگه تنظیمات دلخواه‌هت رو انتخاب کن.

ازاونجایی که من دوتا هارد دوترابایت داشتم، موقع نصب زدم که نوع RAID من ۱ باشه.

یعنی که هردوتاهارد میرور باشن تا اگه یکیش پرید، دیتا من نپره :))

به بوتلودر و SWRAIDLEVEL هم دست نزدم. اما HOSTNAME رو هاست‌نیمی که میخوام زدم مثلاً زدم Goodarz-Server.

مرحله بعد نوبت به پارتیشن‌بندی بود.

به صورت زیر من پارتیشن‌بندی کردم:

اما خب این به چه معناست:

این یعنی که اول میاد یه پارتیشن ۴ گیگابایتی غیرLVM می‌سازم و فرمتش رو هم می‌زارم ext4 و روی /boot متصلش می‌کنم.

بعد از اون دوتا ولیوم گروپ LVM با حجم ۴۲۰ گیگ و all که یعنی هرچقدر باقی‌موند می‌سازم.

یه روت ۱۰۰ گیگابایتی با فرمت ext4 و یه سواپ ۲۰ گیگی یه پارتیشن ۳۰۰ گیگابایتی روی /backup برای نگهداری بک‌آپ هام می‌سازم.

بعد ولیوم گروپ دومی که ساختم و تمام فضای باقی‌مونده رو بهش دادم رو هم رو هم روی /var/lib/vz که محل اصلی نگه‌داری ایمیل‌ها و تنظیمات پروکسموکس هست انتخاب می‌کنم و تمام فضای vg1 که ولیوم گروپ دوم ما هست رو هم. بهش اختصاص می‌دم

پس شد یه روت ۱۰۰ گیگی، یه بوت ۴ گیگی، یه بک‌آپ ۳۰۰ گیگی، یه سواپ ۲۰ گیگی و یه پارتیشن هم حدود ۱ گیگ و نیم برای /var/lib/vz

خط آخر یعنی image رو هم دستکاری نمی‌کنیم. کل پیکربندی رو به شکل زیر میشه خلاصه کرد:

با زدن f10 و ذخیره کردن پیکربندی مراحل نصب رو پیش می‌ریم تا نصب تموم شه و بهمون بگه که ریست کنیم.

بعد از ریبوت، به سرور ssh می‌زنیم مجدداً با یوزر روت و پسوردی که موقع rescue برامون درست کرده بود.

وارد که شدیم ترجیح براین هست که ابتدا ipv6 غیرفعال بشه تا فرایند نصب بسته‌ها سریع انجام بشه.

لذا فایل /etc/syctl.conf روباز می‌کنیم و. این دوخط رو تهش اضافه می‌کنیم:

با زدن

تنظیمات رو اعمال می‌کنیم.

حالا لیست مخازن و بعد از اون بسته‌ها رو هم آپدیت می‌کنیم:

تا اینجا ما روت سرور رو به طور کامل کانفیگ کردیم. مرحله بعد نصب proxmox هست.

نصب proxmox

ابتدا باید مخازن proxmox رو به مخازن دبیان اضافه کنیم. پس فایل/etc/apt/sources.list روباز می‌کنیم و این خط رو بهش اضافه می‌کنیم:

بعدش کلید مخازن رو اضافه می‌کنیم:

در آخر هم لیست مخازن و بسته‌ها رو آپدیت می‌کنیم:

حالا وقت نصب کرنل و کرنل هدرها هست 🙂

مورد بعدی اینه که باز لیست مخازن رو آپدیت کنیم ببینیم برای کرنل جدیدمون آپدیتی اومده یا نه پس:

حالا با دستور reboot سیستم‌عامل رو ری‌استارت می‌کنیم تا با کرنل جدید بوت بشیم.

وقتی فرایند بوت انجام شد با دستور زیر proxmox رو نصب می‌کنیم:

خب بعد از نصب proxmox از طریق آدرس https://ip:8006 در درسترس خواهد بود. با زدن یوزرنیم روت و پسورد روت سرور اصلی لاگین کنین.

پیکربندی شبکه

الان که دارم اینو می‌نویسم، خون داره از انگشتام می‌چکه و یه حسی بهم میگه که امیر بیخیال نوشتن بشو :))

ولی خب می‌نویسم.

قبلاً گفتم که من یه سابنت از هتزنر گرفتم با مشخصات زیر

 

این به این معنی هست که من این آی‌پی‌ها رو میتونم داشته باشم که اولی و آخری البته قابل استفاده نیستن:

پس طبق منطق من ۶ تا دونه آی‌پی دارم که می‌تونم ازشون برای ساخت ۶ تا ماشین مجازی و یا کانتینر استفاده کنم.

قبل از هرچیزی چندتا پیشرفرض رو باید داشته باشیم.

MAIN IP منظور آی‌پی سرور اصلی هست

MAIN NETMASK منظور netmask آی‌پی سرور اصلی هست که از طریق بخش IPs توی پنل روبات قابل پیدا کردن هست

MAIN GATEWAY که منظور گیت‌وی آی‌پی سرور اصلی هست

MAIN NETWORK که اولین آی‌پی سابنت آی‌پی اصلی‌مون هست.

SUBNET’1 IP اولین آی‌پی سابنت

SUBNET’2 IP دومین آی‌پی سابنت

و الی آخر تا

SUBNET”6 IP آخرین آی‌پی سابنت

یادتون باشه که این مقادیر رو با اونی که از روبات گرفتین باید تعویض کنین 😛

برای کانفیگ سرور اصلی اول فایل /etc/network/interfaces روباز کنین.

با محتوای بخش eth0 که کارت شبکه سیستم هست کاری نداریم

یه بخش اضافه می‌کنیم برای کارت شبکه مجازی ما که قراره کار bridge رو روی VM (ماشین مجازی) انجام بده.

کل کانفیگ ما به این شکل درخواهد اومد.

فایل رو ذخیره می‌کنیم و با زدن دستور زیر شبکه سرور رو ری‌استارت می‌کنیم:

اگه ایرادی نشون نداد یعنی که ما همه چیز رو درست رفتیم و اگه نشون داد باید برطرفش کنیم (همچین جوادخیابانی طور گفتم :)))

ساخت اولین ماشین مجازی

قبل از هرکاری لازمه که ما ایزوی توزیع مورد نظرمون که اینجا من از اوبونتو استفاده کردم رو روی proxmox قرار بدیم.

دو راه برای این‌کار وجود داره.

روش اول:

وارد پنل proxmox بشید و از طریق منوی سمت چپ رو بروی Contents روباز کنین. یه بخشی براتون باز میشه آپلود رو بزنین و ایزوی اوبونتو یا دبیان یا سنت‌اواس رو که قبلاً دانلود کرده بودین از اینجا آپلود کنین و منتظر بمونین کلیک کنید.

روش دوم:

توی سرور به دایرکتوری /var/lib/vz/template/iso برید و از طریق لینک مستقیم ایزوی اوبونتو سرور مثل این و ابزار wget ایزو رو روش دانلود کنین.

حالا وقتشه که ماشین مجازی رو بسازیم.

از منوی بالا سمت راست گزینهٔ Create VM رو می‌زنیم.

اسم و ID براش انتخاب می‌کنیم. توی تب OS

توی تب CD/DVD گزینهٔ

مرحله بعدی به اندازه نیاز فضا براش انتخاب می‌کنیم.

بعدش به اندازه کافی CPU و بعد از اون هم رم به اندازه نیاز بهش اختصاص میدیم.

اما اصلی ترین‌بخش شبکه‌ست.

Bridged mode رو انتخاب می‌کنیم و VLAN Tag رو خالی می‌زاریم اما از بخش Bridge vmbr0 رو انتخاب می‌کنیم. Model رو هم VirtIO انتخاب می‌کنیم و میریم مرحله بعدی و finish رو می‌زنیم.

منتظر میشیم تا سرور ساخته بشه. بعد از ساخته شدنش انتخابش می‌کنیم و start رو می‌زنیم و بعد از اون روی دکمه console کلیک می‌کنیم تا یه پنجره VNC برامون باز شه تا بتونیم سیستم‌عامل رو نصب بکنیم.

تمام مراحل نصب رو میریم جلو اما باید یادمون باشه که موقع نصب و در بخش تنظیمات شبکه باید گزینه install without configuring network رو بزنیم. مراحل نصب رو پیش میریم و می‌زاریم که نصب تموم شه.

بعد ریبوت می‌کنیم.

وقتی که سیستم‌عامل اومد بالا فایل /etc/network/interfaces روباز می‌کنیم و محتویات زیر رو داخلش وارد می‌کنیم:

dns-nameserversهایی که میبینین توسط خود هتزنر ارائه شده و برای اینکه شبکه به خوبی کار کنه باید وجود داشته باشن.

ماشین مجازی رو ریبوت می‌کنیم و الان با نصب openssh-server میشه بهش ssh داشت و همه چی اوکی هست.

تا الان با نصب و کانفیگ درست یه ماشین مجازی روی روت‌سرور بودیم.

اما اگه نخوایم از ماشین مجازی استفاده کنیم و بخوایم از containerها استفاده کنیم چی؟

اگه نمیدونین فرق بین container با ماشین مجازی چیه بهتره گوگلش کنین.

منم اگه بتونم یه روز در موردش می‌نویسم.

پیکربندی Container

وارد پنل proxmox بشید و از طریق منوی سمت چپ رو بروی Contents روباز کنین. یه بخشی براتون باز میشه templates رو بزنین و براساس نیازتون یه temlpate انتخاب کنین و Download رو بزنین.

بعد از اتمام از منوی سمت راست بالا Create CT رو بزنین.

براش اسم، آی‌دی و پسورد و یا کلید عمومی ssh رو وارد کنین، اگه لازمه و امنیت مهمه براتون تیک Unprivileged container رو بزنین تا دسترسی روت رو ببنده.

تب بعد Template اون تمپلیتی رو که دوست دارین انتخاب کنین، تب بعدی فضای ذخبره سازی تب بعدش میزان سی‌پی‌یو و بعد از اون هم رم رو انتخاب کنین.

توی تب شبکه تنها بخشی که باید تغییر کنه بخش IPv4 هست که یه آی‌پی از سابنت انتخاب کنین و توی IPv4/CIDR بنویسید و تهش یه /۳۲ بزارید. مثلا:

۱۹۲٫۱۶۸٫۱٫۱۰۰/۳۲

توی بخش Gateway هم آی‌پی سرور اصلی رو وارد کنین و. IPv6 رو هم روی DHCP بزارین و در صورت نیاز DNS روکه تب بعدی هست پرکنین و بعدش finish رو بزنین.

container شما بدون هیچ مشکلی بالا میاد.

یکم طولانی شد و فکر کنم برای الان کافیه. توی پست‌های بعد نحوه راه‌اندازی IPv6 و راه‌اندازی یه شبکه داخلی بین ماشین‌های مجازی و containerها و همچنین تقاوت بین container و ماشین مجازی باید بنویسم.

در ضمن تاجایی که تونستم هرچیزی رو که ممکنه ابهام ایجاد بکنه رو هم به ویکیپدیا یا سایت اصلی‌ش لینک دادم تا اگه کسی نمیدونه با خوندنش بفهمه اون مفهوم رو.

 

آپدیت۱: امروز من دیدم که به جز دوتا آی‌پی بقیه‌شون به اینترنت وصل نیستن. کلی ور رفتم و … خسته شدم و خوابیدم. صبح بیدار شدم و دستور زیر رو وارد کردم:

دیدم که یه سری از آی‌پی‌ها بهشون مک آدرس داده شده که خب نباید این‌طور باشه و دقیقاً هم همون آی‌پی‌هایی بودن که باهاشون مشکل داشتم و دیدم که آی‌پی هایی که وصل هستن جلوی HWaddress زده [Incomplete]

سرور رو ریبوت کردم، درست شدن. :))

Leave a Reply

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *