پیاده سازی مجازی سازی Proxmox روی یک سرور با یک کارت شبکه

خلاصه :می خواهیم روی یک سرور bare metal خوب با یک کارت شبکه فیزیکی و چند IPv4 تعدادی vps راه اندازی کنیم و تعدادی از سرورهاس dedicate فعلی را بصورت مجازی روی این زیرساخت منتقل کنیم.در خیلی از دیتاسنترهای دنیا می توانید با قیمت های خوب سرورهای عالی بگیرید و تنها مشکل همین وجود یک کارت شبکه فیزیکی است که ممکن است امکان اضافه کردن کارت شبکه جدید نباشد یا هزینه آن زیاد شود. البته مشکلی نیست و روی یک کارت شبکه با پهنای باند خوب هم می توان چند ماشین مجازی با ترفیک متوسط را بخوبی سرویس داد.سرور فوق با ۱ ترابایت فضای بک آپ و تعدادی IP اضافه، ماهیانه حدود ۱۰۰یورو!بجز هزینه کمی کمتر، مزیت مجازی سازی و استفاده از proxmox این است که :۱- مدیریت و راهبری و بهره برداری روی زیرساخت مجازی سازی شده از مدیریت و راهبری و بهره برداری چند سرور فیزیکی مجزا راحت تر، مطئمن تر و مانورپذیرتر است.۲- امکان کلاسترسازی و HA و Migration و ... را روی زیرساخت مجازی خیلی راحت تر داریم.۳- روی زیرساخت مجازی Backup گیری راحت تر و مطئمن تری داریم و می توان از کل ماشین بک آپ گرفت.۴- یک سرور جدید با سخت افزارهای سریعتر و قابل اطمینان تر و بهتر می گیرم و بازدهی سرورهای مجازی روی این زیرساخت مجازی شده از آن سرورهای dedicate قبلی در نهایت بهتر شد.۵- اگر بعدا لازم شد و بار یک یا تعدادی از سرورها زیاد شد میتوان یک سرور دیگر گرفت و این ماشین های مجازی را براحتی روی آن منتقل کرد. بنابراین با میزان نیاز موجود هزینه جاری تنظیم می شود.نقطه ضعف این روش ها این است که :اگر کلاستر نکنیم و HA نداشته باشیم، در شرایطی که برای این سرور مشکلی پیش بیاید همه سرورها down می شوند.مقدمه :در حال حاضر Proxmox یکی از بهترین گزینه های پیاده سازی زیرساخت مجازی است که در نسخه رایگان هم امکانات خیلی خوبی ارایه می دهد و امتحان خود را نیز پس داده است.امکانات و قابلیت های خوبی برای کانتینرهای LXC و ماشین های مجازی KVM دارد. البته LXD و Virsh را پشتیبانی نمی کند اما خودش برای آن ها جایگزین دارد.همزمان کانتینرهای LXC و ماشین های مجازی KVM را دارید، بخاطر ماهیت LXC فقط از لینوکس می توان استفاده کرد و همچنین خیلی از بسته هایی که نیاز به دسترسی و دستکاری کرنل و فایل سیستم را دارند برای نصب مشکل هستند و خیلی تنظیمات دستی باید انجام داد. مثلاْ الاستیک سرچ روی lxc خیلی به سختی نصب و اجرا می شود، بنابراین راه راحت تر این است که اینگونه موارد را روی یک vm از نوع kvm بالا آورد. در عوض کانتینرهای lxc برای بسیاری از استفاده ها مثلا LAMP بسیار خوب و پربازده هستند و ریستارت و بک آپ گیری ازشون هم خیلی سریع و ساده است.وب اینترفیس خوب و کامل و راحت و ابزارهای cli کامل دارد.خیلی راحت می توان چند Proxmox نصب کرد و با هم کلاستر کرد و از HA و Migration و ... لذت برد.حتما نیاز به فایل ISO نیست و روی دبیان ۹-۱۰-۱۱ براحتی نصب می شود. درنهایت هم شما یک دبیان در دست دارید.مواردی مثل تغییرات سخت افزاری و بک آپ گیری در آن خیلی راحت است.کامیونیتی و فوروم فعالی دارد.قیمت لایسنس های آن قابل قبول و مناسب است. سناریو :یک سرور خوب که روی آن proxmox نصب کنیم و تعدادی IPv4 برای ماشین ها می گیریم.ما حداقل ۵ سرور vps نیاز داریم و ۲ مورد آخر لیست ذیل برای آزمایش ها و تست و ... هستند که با url می توان به آن ها دسترسی داشت (IP معتبر اینترنتی ندارند) و البته می توان روی آن ها هم سرویس داد :۲ سرور که اپلیکیشن های سنگین و الاستیک سرچ و redis و .. دارند. (kvm)۲ سرور که سرویس متداول وب و ایمیل و دیتابیس و ... مثل یک هاست. (lxc)۱ سرور مانیتورینگ. (kvm)۱ سرور بعنوان Reverse Proxy & WAF (ازنوع lxc)یک یا تعدادی سرور هم بدون IP ولید برای تست ها که پشت سرور بالا قرار می گیرند و با url قابل دسترس هستند. (lxc-kvm)نصب :برای نصب proxmox سه روش وجود دارد :از دیتاسنتر بخواهید ISO نصب را روی سرور mount کند.یک دبیان ۹ یا ۱۰ یا ۱۱ نصب کنید یکی از راهنماهای نصب Proxmox روی دبیان را دنبال بفرمایید.روی هتزنر از خط فرمان rescue system با دستور imageinstall و گزینه others ایمیج آماده شده توسط هتزنر را نصب کنید. (من این روش را انتخاب کردم.)در هنگام نصب با روش فوق می توان تنظیمات مورد نیاز را در فایل install-ll.conf اعمال کرد. من فقط RAID و HOSTNAME و PART را تنظیم می کنم. پس از شروع عملیات نصب چند دقیقه بعد proxmox شما آماده است.تنظیم :در مورد نصب و تنظیمات و آپشن های ماشین های مجازی در این مقاله بحثی نداریم، در مورد تنظیمات شبکه :برای اتصال ماشین های مجازی به اینترنت و بلعکس ۲ روش bridge و route وجود دارد، من route را انتخاب کردم. فراموش نکنید برای استفاده از این روش باید ip_forward را فعال بفرمایید.روش routedروش Bridge تنظیمات شبکه هاست (سرور proxmox) :روی خود proxmox تنظیمات فایل etc/network/interfaces/ برای روش routed به اینصورت است :auto lo iface lo inet loopback auto enp7s0 iface enp7s0 inet static address <main (proxmox) IP>/26 gateway <main (proxmox) Gateway> pointopoint <main (proxmox) Gateway> auto vmbr0 iface vmbr0 inet static address <main (proxmox) IP>/32 bridge-ports none bridge-stp off bridge-fd 0 up ip route add <additional IP>/32 dev vmbr0 up ip route add <additional IP>/32 dev vmbr0 up ip route add <additional IP>/32 dev vmbr0 up ip route add <additional IP>/32 dev vmbr0 up ip route add <additional IP>/32 dev vmbr0 up ip route add <additional IP>/32 dev vmbr0همچنین آپشن های کرنل روی سرور proxmox برای فورواردینگ به اینصوت هستند :net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1برای تنظیم این موارد یا از دستور sysctl استفاده بفرمایید یا فایل etc/sysctl.conf/ را دستی ادیت کرده و ۲خط بالا را اضافه کنید.#sysctl -w net.ipv4.ip_forward=1 #sysctl -w net.ipv6.conf.all.forwarding=1 #sysctl -pتنظیمات guest ها :برای lxcها :درهنگام ساخت کانتینر آدرس IP را آدرس IP اضافه ای که دریافت کرده اید با 32/ تعریف کنید و آدرس gateway را آدرس IP خود سرور proxmox قرار دهید. همین!برای vmهای kvm :برای روش routed باید تنظیمات SCOPE (در ردهتی ها) یا pointopoint (در دبیان و اوبونتو) یا on-link (در دبیان و ابونتو جدیدتر و سایر توزیع هایی که از netplan استفاده می کنند) را تعیین کنید. من از ubuntu server 20.04 استفاده می کنم و تنظیمات فایل etc/netplan/00-installer-config.yaml/ به اینصورت است.network: ethernets: ens18: addresses: ['Additional IP/32'] nameservers: addresses: [127.0.0.1, 8.8.8.8] routes: - to: 0.0.0.0/0 via: ProxmoxMainIP on-link: true version: 2برای اطلاعات بیشتر و نمونه تنظیمات سایر سیستم عامل ها بخش Network را در اینجا ببینید.لازم بذکر است ما فقط از IPv4 استفاده کردیم، تنظیمات IPv6 عملا راحت تر است و در لینک بالا توضیحات و نمونه ها را پیدا می کنید.در نهایت Proxmox ما آماده است و ماشین های مجازی را نصب و تنظیم و استفاده می کنیم که تنظیمات ماشین های مهمان در حدود این مقاله نیست اما سعی می کنم در مورد proxmox بعنوان یک گزینه خوب ، ساده و سریع مجازی سازی در آینده نیز مطالب و تجربیات جدید خود را به همین صورت یادداشت کنم.