این مقاله ادامهی مقالهی قبلی است – «'.
این دوره آموزشی، فرآیند نصب و پیکربندی اولیه یک کلاستر oVirt 4.3 برای میزبانی ماشینهای مجازی با قابلیت دسترسی بالا را پوشش میدهد، با توجه به اینکه تمام مراحل اولیه برای آمادهسازی زیرساخت قبلاً تکمیل شده است.
پرولوگ
هدف اصلی مقاله ارائه دستورالعملهای گام به گام از نوع "" نیست.بعدی -> بله -> پایان"، اما برای برجسته کردن برخی از ویژگیهای نصب و پیکربندی آن. فرآیند استقرار کلاستر شما ممکن است همیشه با فرآیندی که در آنجا شرح داده شده است مطابقت نداشته باشد، که به دلیل ویژگیهای زیرساخت و محیط شما است، اما اصول کلی یکسان خواهد بود.
از دیدگاه ذهنی، از نظر عملکرد، مشابه VMware vSphere نسخه 5.x است، اما البته پیکربندی و ویژگیهای عملیاتی خاص خود را دارد.
برای علاقهمندان، تمام تفاوتهای بین RHEV (معروف به oVirt) و VMware vSphere را میتوان به صورت آنلاین پیدا کرد، به عنوان مثال ، اما همچنان که مقاله پیش میرود، گهگاه به برخی از تفاوتها یا شباهتهای آنها با یکدیگر اشاره خواهم کرد.
همچنین میخواهم به طور خلاصه شبکهبندی ماشینهای مجازی را مقایسه کنم. oVirt یک اصل مدیریت شبکه مشابه VMware vSphere را برای ماشینهای مجازی (از این پس VM) پیادهسازی میکند:
- با استفاده از پل استاندارد لینوکس (در VMware - سوئیچ مجازی استاندارد)، در حال اجرا بر روی میزبانهای مجازیسازی؛
- با استفاده از Open vSwitch (OVS) (در VMware - سوئیچ مجازی توزیعشده) یک سوئیچ مجازی توزیعشده است که از دو جزء اصلی تشکیل شده است: یک سرور مرکزی OVN و کنترلکنندههای OVN روی میزبانهای مدیریتشده.
لازم به ذکر است که به دلیل سادگی پیادهسازی، این مقاله راهاندازی شبکهها در oVirt برای ماشینهای مجازی با استفاده از پل استاندارد لینوکس را شرح میدهد، که انتخاب استاندارد هنگام استفاده از هایپروایزر KVM است.
در این راستا، چندین قانون اساسی برای کار با شبکه در یک خوشه وجود دارد که بهتر است نقض نشوند:
- تمام تنظیمات شبکه روی میزبانها، به جز آدرسهای IP، باید قبل از اضافه شدن به oVirt یکسان باشند.
- هنگامی که یک میزبان تحت کنترل oVirt است، اکیداً توصیه میشود که هیچ تنظیمات شبکهای را به صورت دستی تغییر ندهید، مگر اینکه کاملاً به اقدامات خود اطمینان داشته باشید، زیرا عامل oVirt پس از راهاندازی مجدد میزبان یا عامل، آنها را به تنظیمات قبلی خود برمیگرداند.
- اضافه کردن یک شبکه جدید برای یک ماشین مجازی و همچنین کار با آن، فقط باید از طریق کنسول مدیریتی oVirt انجام شود.
یه چیز دیگه نکته مهم — برای یک محیط بسیار بحرانی (بسیار حساس به ضررهای مالی)، همچنان توصیه میشود از پشتیبانی پولی استفاده شود و از در حین کار با کلاستر oVirt، ممکن است مشکلات خاصی پیش بیاید که توصیه میشود در اسرع وقت به جای تلاش برای حل آنها توسط خودتان، از کمکهای تخصصی استفاده کنید.
سرانجام، توصیه می شود قبل از استقرار یک کلاستر oVirt، لطفاً مطالعه کنید ، تا حداقل از مفاهیم و تعاریف اولیه آگاه باشند، در غیر این صورت خواندن ادامه مقاله کمی دشوار خواهد بود.
دستورالعملهای زیر برای درک این مقاله و اصول عملیاتی خوشه oVirt اساسی هستند:
حجم کتاب خیلی زیاد نیست، به راحتی میتوانید در عرض یک یا دو ساعت بر اصول اولیه مسلط شوید و برای کسانی که جزئیات را دوست دارند، توصیه میشود آن را مطالعه کنند. — RHEV و oVirt اساساً یک چیز هستند.
بنابراین، اگر تمام تنظیمات اولیه روی میزبانها، سوئیچها و سیستمهای ذخیرهسازی کامل باشد، مستقیماً به سراغ استقرار oVirt میرویم.
بخش ۲. نصب و پیکربندی کلاستر oVirt 4.3
برای سهولت ارجاع، بخشهای اصلی این مقاله را که باید به ترتیب تکمیل شوند، فهرست میکنم:
- نصب سرور مدیریت oVirt
- ایجاد مرکز داده جدید
- ایجاد یک خوشه جدید
- نصب میزبانهای اضافی در یک محیط خود-میزبان
- ایجاد دامنه ذخیرهسازی
- ایجاد و پیکربندی شبکه برای ماشینهای مجازی
- ایجاد یک تصویر نصب برای استقرار یک ماشین مجازی
- یک ماشین مجازی ایجاد کنید
نصب سرور مدیریت oVirt
سرور مدیریت oVirt – مهمترین عنصر در زیرساخت oVirt است که به شکل یک ماشین مجازی، میزبان یا دستگاه مجازی است که کل زیرساخت oVirt را مدیریت میکند.
مشابههای نزدیک آن از دنیای مجازیسازی:
- VMware vSphere - سرور vCenter
- مایکروسافت هایپر-وی - مدیر ماشین مجازی مرکز سیستم (VMM).
برای نصب سرور مدیریت oVirt، دو گزینه داریم:
گزینه 1
استقرار یک سرور به عنوان یک ماشین مجازی یا میزبان اختصاصی.
این گزینه کاملاً خوب کار میکند، اما تنها در صورتی که چنین ماشین مجازی مستقل از کلاستر عمل کند، یعنی به عنوان یک ماشین مجازی معمولی تحت کنترل KVM روی هیچ میزبان کلاستری راهاندازی نشده باشد.
چرا نمیتوان چنین ماشین مجازی را روی میزبانهای خوشهای مستقر کرد؟
در همان ابتدای فرآیند استقرار سرور مدیریت oVirt، با یک معضل روبرو هستیم: ما باید یک ماشین مجازی مدیریت نصب کنیم، اما خود کلاستر هنوز وجود ندارد، بنابراین بلافاصله چه کاری میتوانیم انجام دهیم؟ کار درست این است که KVM را روی گره کلاستر آینده نصب کنیم، سپس یک ماشین مجازی روی آن ایجاد کنیم، مثلاً با سیستم عامل CentOS، و موتور oVirt را روی آن مستقر کنیم. این کار ممکن است به منظور کنترل کامل بر چنین ماشین مجازی انجام شود، اما این یک ایده اشتباه است، زیرا به ناچار منجر به مشکلاتی در ماشین مجازی مدیریت خواهد شد:
- انتقال آن در کنسول oVirt بین میزبانهای (گرههای) خوشهای امکانپذیر نخواهد بود.
- هنگام مهاجرت با استفاده از ابزارهای KVM ورش مهاجرت، این ماشین مجازی برای مدیریت از طریق کنسول oVirt در دسترس نخواهد بود.
- میزبانهای خوشهای نمیتوانند نمایش داده شوند حالت تعمیر و نگهداری (حالت نگهداری) اگر این ماشین مجازی را از میزبانی به میزبان دیگر با استفاده از ورش مهاجرت.
بنابراین، همه چیز را طبق قوانین انجام دهید - یا از یک میزبان جداگانه برای سرور مدیریت oVirt استفاده کنید، یا از یک ماشین مجازی مستقل که روی آن اجرا میشود، یا بهتر است گزینه دوم را دنبال کنید.
گزینه 2
نصب دستگاه موتور oVirt روی میزبان خوشهای که آن را مدیریت میکند.
این گزینه در مورد ما صحیح تر و مناسب تر در نظر گرفته خواهد شد.
الزامات چنین ماشین مجازی در زیر شرح داده شده است. فقط اضافه میکنم که توصیه میشود حداقل دو میزبان در زیرساختی که ماشین مجازی مدیریتی میتواند روی آن اجرا شود، وجود داشته باشد تا تحمل خطا داشته باشد. میخواهم اضافه کنم که، همانطور که در نظرات مقاله قبلی اشاره کردم، هنوز نتوانستهام مغز شکافته روی یک کلاستر oVirt متشکل از دو میزبان، با قابلیت اجرای ماشینهای مجازی موتور میزبان روی آنها.
نصب دستگاه موتور oVirt روی اولین میزبان کلاستر
پیوند به اسناد رسمی - ، فصل "»
این سند پیشنیازهایی را که باید قبل از استقرار یک ماشین مجازی موتور میزبان رعایت شوند، مشخص میکند و همچنین فرآیند نصب را با جزئیات شرح میدهد، بنابراین تکرار کلمه به کلمه آن فایده خاصی ندارد، بنابراین ما بر روی برخی جزئیات مهم تمرکز خواهیم کرد.
- قبل از شروع هرگونه اقدام، حتماً پشتیبانی از مجازیسازی را در تنظیمات BIOS روی میزبان فعال کنید.
- بسته نصب کننده hosted-engine را روی میزبان نصب کنید:
yum -y install http://resources.ovirt.org/pub/yum-repo/ovirt-release43.rpm
yum -y install epel-release
yum install screen ovirt-hosted-engine-setup- ما روش استقرار موتور میزبانیشدهی oVirt را روی میزبان در یک صفحه اجرا میکنیم (میتوانید با Ctrl-A + D از آن خارج شوید، آن را با Ctrl-D ببندید):
screen
hosted-engine --deployدر صورت تمایل، میتوانید نصب را با یک فایل پاسخ از پیش آماده شده اجرا کنید:
hosted-engine --deploy --config-append=/var/lib/ovirt-hosted-engine-setup/answers/answers-ohe.conf- هنگام استقرار موتور میزبان، تمام پارامترهای لازم را مشخص میکنیم:
- имя кластера
- количество vCPU и vRAM (рекомендуется 4 vCPU и 16 Гб)
- пароли
- тип хранилища для hosted engine ВМ – в нашем случае FC
- номер LUN для установки hosted engine
- где будет находиться база данных для hosted engine – рекомендую для простоты выбрать Local (это БД PostgreSQL работающая внутри этой ВМ)
и др. параметры. - برای نصب یک ماشین مجازی با قابلیت دسترسی بالا و موتور میزبانیشده، ما از قبل یک LUN ویژه شماره ۴ و با حجم ۱۵۰ گیگابایت روی سیستم ذخیرهسازی ایجاد کردیم که سپس به میزبانهای کلاستر ارائه شد - به بخش مربوطه مراجعه کنید. .
ما همچنین قبلاً قابلیت مشاهده آن را روی میزبانها بررسی کردیم:
multipath -ll
…
3600a098000e4b4b3000003c95d171065 dm-3 DELL , MD38xxf
size=150G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=14 status=active
| `- 15:0:0:4 sdc 8:32 active ready running
`-+- policy='service-time 0' prio=9 status=enabled
`- 18:0:0:4 sdj 8:144 active ready running- فرآیند استقرار موتور میزبان به خودی خود ساده است و در پایان آن، باید پیامی مشابه این دریافت کنیم:
[ INFO ] Generating answer file '/var/lib/ovirt-hosted-engine-setup/answers/answers-20191129131846.conf'
[ INFO ] Generating answer file '/etc/ovirt-hosted-engine/answers.conf'
[ INFO ] Stage: Pre-termination
[ INFO ] Stage: Termination
[ INFO ] Hosted Engine successfully deployedبررسی در دسترس بودن سرویسهای oVirt روی میزبان:

اگر همه چیز به درستی انجام شد، پس از اتمام نصب، به مرورگر وب بروید از رایانه مدیر، و روی [ کلیک کنیدپورتال مدیریت].
تصویر صفحه «پورتال مدیریت»

با وارد کردن نام کاربری و رمز عبور خود (که در طول نصب تنظیم شده است) در پنجرهای که در تصویر نشان داده شده است، به کنترل پنل Open Virtualization Manager هدایت میشوید، جایی که میتوانید تمام اقدامات را با زیرساخت مجازی خود انجام دهید:
- اضافه کردن مرکز داده
- اضافه کردن و پیکربندی یک کلاستر
- اضافه کردن و مدیریت میزبانها
- اضافه کردن فضاهای ذخیرهسازی یا دامنههای ذخیرهسازی برای دیسکهای ماشین مجازی
- اضافه کردن و پیکربندی شبکهها برای ماشینهای مجازی
- اضافه کردن و مدیریت ماشینهای مجازی، تصاویر نصب، قالبهای ماشین مجازی

همه این اقدامات در ادامه مورد بحث قرار خواهد گرفت، برخی با حروف بزرگ، برخی با جزئیات بیشتر و با ظرافتهای خاص.
اما اول، توصیه میکنم این مطلب تکمیلی را بخوانید که مطمئناً برای خیلیها مفید خواهد بود.
اضافه
1) در اصل، اگر چنین نیازی وجود داشته باشد، هیچ چیز مانع از نصب هایپروایزر KVM روی گرههای کلاستر از قبل با استفاده از بستهها نمیشود. کتابخانه и qemu-kvm (یا qemu-kvm-ev) نسخه مورد نظر، اگرچه هنگام استقرار یک گره خوشه oVirt، میتواند این کار را خودش انجام دهد.
اما اگر کتابخانه и qemu-kvm اگر نسخهای نصب کردهاید که جدیدترین نیست، ممکن است هنگام استقرار موتور میزبانیشده خطای زیر را دریافت کنید:
error: unsupported configuration: unknown CPU feature: md-clearیعنی داشتنش ضروریه کتابخانه با محافظت از که از سیاست زیر پشتیبانی میکند:
<feature policy='require' name='md-clear'/>libvirt نسخه ۴.۵.۰-۱۰.el۷_۶.۱۲ را با پشتیبانی از md-clear نصب کنید:
yum-config-manager --disable mirror.centos.org_centos-7_7_virt_x86_64_libvirt-latest_
yum install centos-release-qemu-ev
yum update
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer libguestfs libguestfs-tools dejavu-lgc-sans-fonts virt-top libvirt libvirt-python libvirt-client
systemctl enable libvirtd
systemctl restart libvirtd && systemctl status libvirtdبررسی پشتیبانی از 'md-clear':
virsh domcapabilities kvm | grep require
<feature policy='require' name='ss'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='clflushopt'/>
<feature policy='require' name='pku'/>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='stibp'/>
<feature policy='require' name='ssbd'/>
<feature policy='require' name='invtsc'/>پس از این، میتوانید نصب موتور میزبانیشده را ادامه دهید.
2) در oVirt 4.3، وجود و استفاده از فایروال فایروال یک الزام اجباری است.
اگر هنگام استقرار ماشین مجازی برای hosted-engine خطای زیر را دریافت کنیم:
[ ERROR ] fatal: [localhost]: FAILED! => {"changed": false, "msg": "firewalld is required to be enabled and active in order to correctly deploy hosted-engine. Please check, fix accordingly and re-deploy.n"}
[ ERROR ] Failed to execute stage 'Closing up': Failed executing ansible-playbook
[https://bugzilla.redhat.com/show_bug.cgi?id=1608467سپس باید فایروال دیگری را خاموش کنید (در صورت استفاده) و نصب و اجرا کنید فایروال:
yum install firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --state
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
firewall-cmd --get-zonesدر آینده، هنگام نصب عامل ovirt روی میزبان جدید برای خوشه، پورتهای مورد نیاز را در پیکربندی خواهد کرد فایروال به طور خودکار.
3) راهاندازی مجدد میزبان با یک ماشین مجازی که با موتور میزبانیشده روی آن اجرا میشود.
مثل همیشه، и در مورد اسناد نظارتی.
تمام مدیریت موتور ماشین مجازی میزبان فقط با استفاده از دستور انجام میشود. موتور میزبانی شده در مورد میزبانی که در آن کار میکند، ویرش ما باید فراموش کنیم، و همچنین این واقعیت که میتوانید از طریق SSH به این ماشین مجازی متصل شوید و دستور "تعطیل'.
مراحل قرار دادن ماشین مجازی در حالت تعمیر و نگهداری:
hosted-engine --set-maintenance --mode=global
hosted-engine --vm-status
!! Cluster is in GLOBAL MAINTENANCE mode !!
--== Host host1.test.local (id: 1) status ==--
conf_on_shared_storage : True
Status up-to-date : True
Hostname : host1.test.local
Host ID : 1
Engine status : {"health": "good", "vm": "up", "detail": "Up"}
Score : 3400
stopped : False
Local maintenance : False
crc32 : dee1a774
local_conf_timestamp : 1821
Host timestamp : 1821
Extra metadata (valid at timestamp):
metadata_parse_version=1
metadata_feature_version=1
timestamp=1821 (Sat Nov 29 14:25:19 2019)
host-id=1
score=3400
vm_conf_refresh_time=1821 (Sat Nov 29 14:25:19 2019)
conf_on_shared_storage=True
maintenance=False
state=GlobalMaintenance
stopped=False
hosted-engine --vm-shutdownما میزبان را با عامل موتور میزبان مجدداً راهاندازی میکنیم و آنچه را که نیاز داریم با آن انجام میدهیم.
پس از راه اندازی مجدد، وضعیت ماشین مجازی را با موتور میزبان بررسی کنید:
hosted-engine --vm-statusاگر ماشین مجازی ما با موتور میزبانیشده شروع به کار نکند و خطاهای مشابهی را در گزارش سرویس مشاهده کنیم:
خطا در گزارش سرویس:
journalctl -u ovirt-ha-agent
...
Jun 29 14:34:44 host1 journal: ovirt-ha-agent ovirt_hosted_engine_ha.agent.hosted_engine.HostedEngine ERROR Failed to start necessary monitors
Jun 29 14:34:44 host1 journal: ovirt-ha-agent ovirt_hosted_engine_ha.agent.agent.Agent ERROR Traceback (most recent call last):#012 File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/agent/agent.py", line 131, in _run_agent#012 return action(he)#012 File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/agent/agent.py", line 55, in action_proper#012 return he.start_monitoring()#012 File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/agent/hosted_engine.py", line 413, in start_monitoring#012 self._initialize_broker()#012 File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/agent/hosted_engine.py", line 537, in _initialize_broker#012 m.get('options', {}))#012 File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/lib/brokerlink.py", line 86, in start_monitor#012 ).format(t=type, o=options, e=e)#012RequestError: brokerlink - failed to start monitor via ovirt-ha-broker: [Errno 2] No such file or directory, [monitor: 'ping', options: {'addr': '172.20.32.32'}]
Jun 29 14:34:44 host1 journal: ovirt-ha-agent ovirt_hosted_engine_ha.agent.agent.Agent ERROR Trying to restart agentسپس حافظه را متصل کرده و عامل را مجدداً راه اندازی می کنیم:
hosted-engine --connect-storage
systemctl restart ovirt-ha-agent
systemctl status ovirt-ha-agent
hosted-engine --vm-start
hosted-engine --vm-statusپس از شروع ماشین مجازی با hosted-engine، آن را از حالت تعمیر و نگهداری خارج میکنیم:
مراحل خارج کردن ماشین مجازی از حالت تعمیر و نگهداری:
hosted-engine --check-liveliness
hosted-engine --set-maintenance --mode=none
hosted-engine --vm-status
--== Host host1.test.local (id: 1) status ==--
conf_on_shared_storage : True
Status up-to-date : True
Hostname : host1.test.local
Host ID : 1
Engine status : {"health": "good", "vm": "up", "detail": "Up"}
Score : 3400
stopped : False
Local maintenance : False
crc32 : 6d1eb25f
local_conf_timestamp : 6222296
Host timestamp : 6222296
Extra metadata (valid at timestamp):
metadata_parse_version=1
metadata_feature_version=1
timestamp=6222296 (Fri Jan 17 11:40:43 2020)
host-id=1
score=3400
vm_conf_refresh_time=6222296 (Fri Jan 17 11:40:43 2020)
conf_on_shared_storage=True
maintenance=False
state=EngineUp
stopped=False4) حذف موتور میزبان و هر آنچه که به آن مرتبط است.
گاهی اوقات لازم است که یک موتور میزبانی شده که قبلاً نصب شده است را به درستی حذف کنید - به سند حاکم.
ما به سادگی دستور را روی میزبان اجرا میکنیم:
/usr/sbin/ovirt-hosted-engine-cleanupدر مرحله بعد، بستههای غیرضروری را حذف میکنیم و در صورت لزوم، از هرگونه پیکربندی از قبل پشتیبان میگیریم:
yum autoremove ovirt* qemu* virt* libvirt* libguestfs ایجاد مرکز داده جدید
مستندات راهنما — راهنمای مدیریت oVirt.
اول، بیایید تعریف کنیم که چیست مرکز داده (من از راهنما نقل قول میکنم) یک موجودیت منطقی است که مجموعهای از منابع مورد استفاده در یک محیط خاص را تعریف میکند.
یک مرکز داده نوعی کانتینر است که شامل موارد زیر است:
- منابع منطقی به شکل خوشهها و میزبانها
- منابع شبکه خوشهای به شکل شبکههای منطقی و آداپتورهای فیزیکی روی میزبانها،
- منابع ذخیرهسازی (برای دیسکهای ماشین مجازی، قالبها، تصاویر) به شکل نواحی ذخیرهسازی (دامنههای ذخیرهسازی).
یک مرکز داده ممکن است شامل چندین کلاستر متشکل از چندین میزبان با ماشینهای مجازی در حال اجرا روی آنها باشد و همچنین ممکن است چندین فضای ذخیرهسازی مرتبط با آن داشته باشد.
ممکن است چندین مرکز داده وجود داشته باشد که همگی به طور مستقل عمل میکنند. Ovirt مجوزهای مبتنی بر نقش را مجاز میداند و مجوزهای سفارشی را هم در سطح مرکز داده و هم برای عناصر منطقی منفرد امکانپذیر میسازد.
مرکز داده، یا مراکز داده در صورت وجود چندین مرکز، از یک کنسول یا پورتال مدیریتی واحد مدیریت میشوند.
برای ایجاد یک مرکز داده، به پورتال اداری بروید و یک مرکز داده جدید ایجاد کنید:
محاسبه >> مراکز داده ها >> جدید
از آنجایی که ما از فضای ذخیرهسازی مشترک در سیستم ذخیرهسازی استفاده میکنیم، نوع ذخیرهسازی (Storage Type) باید Shared باشد:
تصویر از ویزارد ایجاد مرکز داده

هنگام نصب یک ماشین مجازی با موتور میزبانی شده، یک مرکز داده به طور پیش فرض ایجاد می شود - مرکز داده1، و سپس، در صورت لزوم، میتوانید نوع ذخیرهسازی (Storage Type) را به نوع دیگری تغییر دهید.
ایجاد یک مرکز داده کار سادهای است، بدون هیچ پیچیدگی پیچیدهای، و تمام مراحل اضافی در مستندات شرح داده شده است. فقط توجه داشته باشید که میزبانهای مستقل که فقط فضای ذخیرهسازی محلی (دیسک) برای ماشینهای مجازی دارند، نمیتوانند به یک مرکز داده که نوع ذخیرهسازی آن روی Shared تنظیم شده است، دسترسی داشته باشند (یا به آن اضافه شوند) و باید یک مرکز داده جداگانه برای آنها ایجاد شود - یعنی هر میزبان جداگانه با فضای ذخیرهسازی محلی به مرکز داده مخصوص به خود نیاز دارد.
ایجاد یک خوشه جدید
پیوند به مستندات: راهنمای مدیریت oVirt.
بدون اینکه خیلی وارد جزئیات شویم، خوشه یک کلاستر، یک گروهبندی منطقی از میزبانهایی است که یک فضای ذخیرهسازی مشترک (به شکل دیسکهای مشترک روی یک سیستم ذخیرهسازی، مانند مورد ما) را به اشتراک میگذارند. همچنین مطلوب است که میزبانهای موجود در کلاستر از نظر سختافزار یکسان باشند و نوع پردازنده یکسانی (اینتل یا AMD) داشته باشند. در حالت ایدهآل، سرورهای موجود در کلاستر باید کاملاً یکسان باشند.
این کلاستر بخشی از یک مرکز داده است (با نوع خاصی از فضای ذخیرهسازی - محلی یا به اشتراک گذاشته شده) و همه میزبانها باید به یک خوشه تعلق داشته باشند، بسته به اینکه آیا فضای ذخیرهسازی مشترک دارند یا خیر.
هنگام نصب یک ماشین مجازی با موتور میزبانی شده روی یک میزبان، یک مرکز داده به طور پیش فرض ایجاد می شود - مرکز داده1، همراه با خوشه – خوشه1و در آینده میتوانید پارامترهای آن را پیکربندی کنید، گزینههای اضافی را فعال کنید، میزبانهایی به آن اضافه کنید و غیره.
مثل همیشه، برای جزئیات مربوط به تمام تنظیمات خوشه، توصیه میشود به مستندات رسمی مراجعه کنید. در مورد تنظیمات خوشه، فقط اضافه میکنم که هنگام ایجاد یک خوشه، فقط باید پارامترهای اساسی را در برگه پیکربندی کنید. سوالات عمومی .
من مهمترین پارامترها را برجسته خواهم کرد:
- نوع پردازنده — بر اساس اینکه کدام پردازندهها روی میزبانهای کلاستر نصب شدهاند، سازنده آنها و اینکه کدام پردازنده روی میزبانها قدیمیترین است، انتخاب میشود، به طوری که بسته به این، تمام دستورالعملهای پردازنده موجود در کلاستر مورد استفاده قرار میگیرند.
- نوع سوئیچ ما فقط از پل لینوکس در کلاستر خود استفاده میکنیم، به همین دلیل آن را انتخاب میکنیم.
- نوع فایروال – همه چیز اینجا واضح است، این firewalld است که باید روی هاستها فعال و پیکربندی شود.
تصویر با پارامترهای خوشه

نصب میزبانهای اضافی در یک محیط Self-Hosted
روی مستندات.
میزبانهای اضافی برای یک محیط Self-Hosted به همان روش یک میزبان معمولی اضافه میشوند، با این تفاوت که مرحلهی اضافیِ استقرار یک ماشین مجازی با موتور میزبانیشده وجود دارد - انتخاب اقدام استقرار موتور میزبانی شده >> گسترشاز آنجایی که میزبان اضافی نیز باید با یک LUN برای ماشین مجازی با موتور میزبانی شده ارائه شود، این بدان معناست که در صورت لزوم، میتوان از این میزبان برای میزبانی یک ماشین مجازی با موتور میزبانی شده استفاده کرد.
برای اهداف تحمل خطا، اکیداً توصیه میشود حداقل دو میزبان داشته باشید که یک ماشین مجازی با موتور میزبانیشده بتواند روی آنها قرار گیرد.
در میزبان اضافی، iptables را غیرفعال کنید (در صورت فعال بودن)، firewalld را فعال کنید
systemctl stop iptables
systemctl disable iptables
systemctl enable firewalld
systemctl start firewalldنسخه مورد نیاز KVM را نصب کنید (در صورت لزوم):
yum-config-manager --disable mirror.centos.org_centos-7_7_virt_x86_64_libvirt-latest_
yum install centos-release-qemu-ev
yum update
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer libguestfs libguestfs-tools dejavu-lgc-sans-fonts virt-top libvirt libvirt-python libvirt-client
systemctl enable libvirtd
systemctl restart libvirtd && systemctl status libvirtd
virsh domcapabilities kvm | grep md-clearمخازن مورد نیاز و نصب کننده موتور میزبانی شده را نصب کنید:
yum -y install http://resources.ovirt.org/pub/yum-repo/ovirt-release43.rpm
yum -y install epel-release
yum update
yum install screen ovirt-hosted-engine-setupبعد، به سراغ کنسول میرویم. مدیر مجازیسازی را باز کنید، یک میزبان جدید اضافه کنید و همه کارها را گام به گام، همانطور که در [روش کار] نوشته شده است، انجام دهید. .
در نتیجه، پس از اضافه کردن یک میزبان اضافی، باید تصویری مشابه تصویر موجود در تصویر، در کنسول مدیریتی دریافت کنیم.
تصویر صفحه پورتال اداری - میزبانها

میزبانی که ماشین مجازی با موتور میزبانیشده در حال حاضر روی آن فعال است، دارای یک تاج طلایی و نوشتهی "اجرای ماشین مجازی موتور میزبان"، میزبانی که در صورت لزوم میتوان این ماشین مجازی را روی آن راهاندازی کرد - کتیبه "میتواند ماشین مجازی Hosted Engine را اجرا کند'.
در صورت خرابی میزبان که روی آن "اجرای ماشین مجازی موتور میزبان"، به طور خودکار روی میزبان دوم مجدداً راهاندازی میشود. این ماشین مجازی همچنین میتواند برای نگهداری از میزبان فعال به میزبان آماده به کار منتقل شود.
راهاندازی مدیریت برق/حصارکشی روی میزبانهای oVirt
لینکهای مستندات:
- مرجع فنی مجازیسازی Red Hat 4.3
- راهنمای مدیریت oVirt ->
اگرچه ممکن است به نظر برسد که اضافه کردن و پیکربندی میزبان کامل شده است، اما این کاملاً درست نیست.
برای اطمینان از عملکرد عادی میزبانها و شناسایی/رفع هرگونه خرابی در آنها، پیکربندی مدیریت برق/حصارکشی ضروری است.
نردهیا حصارکشی، فرآیندی است که در آن یک میزبان معیوب یا از کار افتاده به طور موقت از یک کلاستر حذف میشود، که در طی آن یا سرویسهای oVirt روی آن یا خود میزبان مجدداً راهاندازی میشوند.
طبق معمول، تمام جزئیات مربوط به تعاریف و پارامترهای مدیریت برق/حصارکشی در مستندات ارائه شده است؛ من فقط یک مثال از نحوه پیکربندی این پارامتر مهم، همانطور که در سرورهای Dell R640 با iDRAC 9 اعمال میشود، ارائه خواهم داد.
- ما به پورتال اداری می رویم و کلیک می کنیم محاسبه >> میزبان میزبان را انتخاب کنید.
- کلیک ویرایش.
- روی برگه کلیک کنید مدیریت قدرت.
- کادر کنار گزینه را علامت بزنید مدیریت برق را فعال کنید.
- کادر کنار گزینه را علامت بزنید ادغام Kdumpبرای جلوگیری از رفتن میزبان به حالت حصارکشی هنگام نوشتن نسخه پشتیبان از خرابی هسته.
توجه داشته باشید.
پس از فعال کردن ادغام Kdump روی یک میزبان در حال اجرا، باید آن را طبق روال موجود در راهنمای مدیریت oVirt دوباره نصب کنید -> -> نصب مجدد هاستها.
- به صورت اختیاری، میتوانید کادر را علامت بزنید غیرفعال کردن کنترل سیاست مدیریت تواناگر نخواهیم مدیریت توان میزبان توسط سیاست زمانبندی خوشهای کنترل شود.
- روی دکمه کلیک کنید (+) برای افزودن یک دستگاه مدیریت برق جدید، پنجره ویرایش ویژگیهای عامل باز خواهد شد.
برای iDRAC9، فیلدها را پر کنید:- دفتر مرکزی و نشانی قانونی: – آدرس iDRAC9
- نام کاربری / رمز عبور - به ترتیب نام کاربری و رمز عبور برای ورود به iDRAC9
- نوع — دراک۵
- علامت امن
- گزینههای زیر را اضافه کنید: cmd_prompt=>، login_timeout=30
تصویر صفحه تنظیمات "مدیریت نیرو" در ویژگیهای میزبان

ایجاد دامنه ذخیرهسازی
لینک مستندات: راهنمای مدیریت oVirt، .
دامنه ذخیرهسازییا فضای ذخیرهسازی، مکانی متمرکز برای ذخیرهسازی دیسکهای ماشین مجازی، تصاویر نصب، قالبها و اسنپشاتها است.
مناطق ذخیرهسازی میتوانند با استفاده از پروتکلهای مختلف، سیستمهای فایل خوشهای و شبکهای به مرکز داده متصل شوند.
oVirt سه نوع فضای ذخیرهسازی دارد:
- دامنه داده – برای ذخیره تمام دادههای مرتبط با ماشینهای مجازی (دیسکها، قالبها). دامنه داده را نمیتوان بین مراکز داده مختلف به اشتراک گذاشت.
- دامنه ایزو (نوع فضای ذخیرهسازی قدیمی) – برای ذخیره تصاویر نصب سیستم عامل. دامنه ISO را میتوان بین مراکز داده مختلف به اشتراک گذاشت.
- دامنه را صادر کنید (نوع فضای ذخیرهسازی قدیمی) – برای ذخیرهسازی موقت تصاویر جابجا شده بین مراکز داده.
در مورد خاص ما، ناحیه ذخیرهسازی با نوع Data Domain از پروتکل کانال فیبر (FCP) برای اتصال به LUNهای سیستم ذخیرهسازی استفاده میکند.
از دیدگاه oVirt، هنگام استفاده از فضای ذخیرهسازی (FC یا iSCSI)، هر دیسک مجازی، اسنپشات یا الگو، یک دیسک منطقی است.
دستگاههای بلوکی با استفاده از Volume Group (روی میزبانهای خوشهای) جمعآوری میشوند و سپس با استفاده از LVM به حجمهای منطقی تقسیم میشوند که به عنوان دیسکهای مجازی برای ماشینهای مجازی استفاده میشوند.
همه این گروهها و بسیاری از حجمهای LVM را میتوان با استفاده از دستورات روی میزبان کلاستر مشاهده کرد. و غیره и lvsطبیعتاً، تمام اقدامات با چنین دیسکهایی باید فقط از کنسول oVirt انجام شود، مگر در موارد خاص.
دیسکهای مجازی برای ماشینهای مجازی میتوانند از دو نوع باشند: QCOW2 یا RAW. دیسکها میتوانند "نازک" یا "ضخیم". اسنپشاتها همیشه به صورت " ایجاد میشوند.نازک".
نحوه مدیریت دامنههای ذخیرهسازی یا نواحی ذخیرهسازی که از طریق کانال فیبر (FC) قابل دسترسی هستند، کاملاً منطقی است: هر دیسک مجازی ماشین مجازی دارای یک حجم منطقی جداگانه است که فقط توسط یک میزبان قابل نوشتن است. برای اتصالات FC، oVirt از چیزی شبیه به LVM خوشهای استفاده میکند.
ماشینهای مجازی واقع در یک فضای ذخیرهسازی میتوانند بین میزبانهای متعلق به یک کلاستر جابجا شوند.
همانطور که از توضیحات مشخص است، یک کلاستر در oVirt، مانند یک کلاستر در VMware vSphere یا Hyper-V، اساساً به یک معنی است: یک گروهبندی منطقی از میزبانها، ترجیحاً با ترکیب سختافزاری یکسان و دارای فضای ذخیرهسازی مشترک برای دیسکهای ماشین مجازی.
بیایید مستقیماً به ایجاد یک فضای ذخیرهسازی برای دادهها (دیسکهای ماشین مجازی) بپردازیم، زیرا بدون آن مرکز داده راهاندازی اولیه نخواهد شد.
بگذارید یادآوری کنم که تمام LUN های ارائه شده به میزبان های خوشه ای روی سیستم ذخیره سازی باید با استفاده از دستور "" روی آنها قابل مشاهده باشند.چند مسیری -ll'.
طبق ، ما به پورتال می رویم، وارد می شویم ذخیره سازی >> دامنه -> دامنه جدید و دستورالعملهای بخش «افزودن فضای ذخیرهسازی FCP» را دنبال کنید.
پس از اجرای ویزارد، فیلدهای مورد نیاز را پر کنید:
- نام — نام خوشه را تنظیم کنید
- تابع دامنه — دادهها
- نوع ذخیره سازی — کانال فیبر
- میزبان برای استفاده — میزبانی را که LUN مورد نیاز روی آن موجود است انتخاب کنید
در لیست LUN ها، موردی را که نیاز داریم علامت گذاری می کنیم و کلیک می کنیم اضافه کردن و بعد خوبدر صورت لزوم، میتوانید پارامترهای اضافی فضای ذخیرهسازی را با کلیک کردن روی پارامترهای پیشرفته.
تصویر از ویزارد "دامنه ذخیرهسازی"

بر اساس نتایج کار جادوگر، ما باید یک فضای ذخیرهسازی جدید دریافت کنیم و مرکز داده ما باید به وضعیت زیر تغییر کند: UPیا مقداردهی اولیه شده:
تصاویری از مرکز داده و فضاهای ذخیرهسازی آن:


ایجاد و پیکربندی شبکه برای ماشینهای مجازی
لینک مستندات: راهنمای مدیریت oVirt،
شبکهها یا Networks برای گروهبندی شبکههای منطقی مورد استفاده در زیرساخت مجازی oVirt استفاده میشوند.
برای اتصال یک آداپتور شبکه روی یک ماشین مجازی به یک آداپتور فیزیکی روی میزبان، از رابطهای منطقی مانند Linux Bridge استفاده میشود.
برای گروهبندی و جداسازی ترافیک بین شبکهها، VLANها روی سوئیچها پیکربندی شدهاند.
هنگام ایجاد یک شبکه منطقی برای ماشینهای مجازی در oVirt، لازم است یک شناسه (ID) به آن اختصاص داده شود که با شماره VLAN روی سوئیچ مطابقت داشته باشد تا ماشینهای مجازی بتوانند با یکدیگر ارتباط برقرار کنند، حتی اگر روی گرههای کلاستر مختلف در حال اجرا باشند.
تنظیمات اولیه آداپتورهای شبکه روی میزبانها برای اتصال ماشینهای مجازی باید در ... انجام شده باشد. - رابط منطقی پیکربندی شده است 1، سپس تمام تنظیمات شبکه باید فقط از طریق پورتال اداری oVirt انجام شود.
پس از ایجاد یک ماشین مجازی با موتور میزبانیشده، علاوه بر ایجاد خودکار یک مرکز داده و خوشه، یک شبکه منطقی برای مدیریت خوشه ما نیز به طور خودکار ایجاد شد - اوریتمگکه این ماشین مجازی به آن متصل بود.
در صورت لزوم، میتوانید تنظیمات منطقی شبکه را مشاهده کنید اوریتمگ و آنها را تنظیم کنید، اما باید مراقب باشید که کنترل زیرساخت oVirt را از دست ندهید.
تنظیمات شبکه منطقی ovritmgmt

برای ایجاد یک شبکه منطقی جدید برای ماشینهای مجازی معمولی، به پورتال اداری بروید شبکه ارتباطی >> شبکه >> جدیدو روی برگه سوالات عمومی یک شبکه با شناسه VLAN مورد نیاز اضافه کنید، و همچنین کادر کنار «شبکه ماشین مجازی"، این بدان معنی است که میتوان از آن برای اختصاص به یک ماشین مجازی استفاده کرد.
تصویر شبکه منطقی جدید VLAN32

در برگه خوشه، ما این شبکه را به خوشه خود متصل میکنیم خوشه1.
بعد از این میریم سراغ محاسبه >> میزبان، ما به نوبت به هر میزبان، به برگه میرویم رابط های شبکهو جادوگر را راه اندازی کنید راهاندازی شبکههای میزبان، برای اتصال به میزبانهای شبکه منطقی جدید.
تصویر از ویزارد «راهاندازی شبکههای میزبان»

عامل oVirt به طور خودکار تمام تنظیمات شبکه لازم را روی میزبان انجام میدهد - VLANها و BRIDGEها را ایجاد میکند.
فایلهای پیکربندی نمونه برای شبکههای جدید روی میزبان:
cat ifcfg-bond1
# Generated by VDSM version 4.30.17.1
DEVICE=bond1
BONDING_OPTS='mode=1 miimon=100'
MACADDR=00:50:56:82:57:52
ONBOOT=yes
MTU=1500
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=no
cat ifcfg-bond1.432
# Generated by VDSM version 4.30.17.1
DEVICE=bond1.432
VLAN=yes
BRIDGE=ovirtvm-vlan432
ONBOOT=yes
MTU=1500
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=no
cat ifcfg-ovirtvm-vlan432
# Generated by VDSM version 4.30.17.1
DEVICE=ovirtvm-vlan432
TYPE=Bridge
DELAY=0
STP=off
ONBOOT=yes
MTU=1500
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=noبگذارید یک بار دیگر به شما یادآوری کنم که روی میزبان خوشه نیازی نیست رابطهای شبکه را از قبل به صورت دستی ایجاد کنید ifcfg-bond1.432 и ifcfg-ovirtvm-vlan432.
پس از اضافه کردن شبکه منطقی و بررسی ارتباط بین میزبان و ماشین مجازی با موتور میزبانی شده، میتوان از آن در ماشین مجازی استفاده کرد.
ایجاد یک تصویر نصب برای استقرار یک ماشین مجازی
لینک مستندات: راهنمای مدیریت oVirt، ، بخش بارگذاری تصاویر در یک دامنه ذخیرهسازی داده.
بدون تصویر نصب سیستم عامل، شما قادر به نصب ماشین مجازی نخواهید بود، اگرچه اگر مثلاً یک ماشین مجازی در شبکه خود نصب کرده باشید، این مشکلی ایجاد نمیکند. با تصاویر از پیش ساخته شده
در مورد ما، این امکان وجود ندارد، بنابراین باید خودمان این تصویر را به oVirt وارد کنیم. پیش از این، این کار نیاز به ایجاد یک دامنه ISO داشت، اما در نسخه جدید oVirt، این روش منسوخ شده است، بنابراین اکنون میتوانید تصاویر را مستقیماً از پورتال اداری در دامنه ذخیرهسازی بارگذاری کنید.
در پورتال اداری، به ذخیره سازی >> دیسک >> بارگذاری >> آغاز
ما تصویر سیستم عامل خود را به عنوان یک فایل ISO اضافه میکنیم، تمام فیلدهای فرم را پر میکنیم و روی "" کلیک میکنیم.تست اتصال".
تصویر صفحه مربوط به ویزارد افزودن تصویر نصب

اگر خطایی از این نوع دریافت کنیم:
Unable to upload image to disk d6d8fd10-c1e0-4f2d-af15-90f8e636dadc due to a network error. Ensure that ovirt-imageio-proxy service is installed and configured and that ovirt-engine's CA certificate is registered as a trusted CA in the browser. The certificate can be fetched from https://ovirt.test.local/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA`
سپس باید گواهی oVirt را به " اضافه کنیدمراکز صدور گواهی ریشه معتبر» (CA ریشه معتبر) روی ایستگاه کنترل مدیر که از آن میخواهیم تصویر را دانلود کنیم.
پس از افزودن گواهی به Trusted Root CA، روی "" کلیک کنید.تست اتصال"، باید دریافت کند:
Connection to ovirt-imageio-proxy was successful.پس از اتمام فرآیند افزودن گواهی، میتوانید دوباره تصویر ISO را در Storage Domain آپلود کنید.
در اصل، میتوان یک Storage Domain جداگانه با نوع Data برای ذخیره تصاویر و قالبها به طور جداگانه از دیسکهای VM ایجاد کرد، یا حتی آنها را در Storage Domain برای موتور میزبان ذخیره کرد، اما این امر به صلاحدید مدیر بستگی دارد.
تصویری از تصاویر ISO در Storage Domain برای یک موتور میزبانی شده

یک ماشین مجازی ایجاد کنید
پیوند به مستندات:
راهنمای مدیریت ماشین مجازی oVirt –>
پس از بارگذاری تصویر نصب سیستم عامل در oVirt، میتوانید مستقیماً به ایجاد ماشین مجازی بپردازید. کارهای زیادی انجام شده است، اما ما در حال حاضر در مرحله نهایی هستیم، هدفی که همه چیز با آن آغاز شد: ایجاد یک زیرساخت مقاوم در برابر خطا برای میزبانی ماشینهای مجازی با قابلیت دسترسی بالا. و همه اینها کاملاً رایگان است - حتی یک پنی هم برای خرید هیچ مجوز نرمافزاری هزینه نشده است.
برای ایجاد یک ماشین مجازی با CentOS 7، باید فایل نصب سیستم عامل را دانلود کنید.
ما به پورتال اداری می رویم، به محاسبه >> ماشین های مجازیو ویزارد ایجاد ماشین مجازی را اجرا کنید. تمام پارامترها و فیلدها را پر کنید و کلیک کنید خوباگر مستندات را دنبال کنید، همه چیز بسیار ساده است.
به عنوان مثال، تنظیمات پایه و پیشرفته را برای یک ماشین مجازی با دسترسی بالا، با یک دیسک ایجاد شده، متصل به شبکه و بوت شدن از یک تصویر نصب ارائه میدهم:
تصاویری از تنظیمات بسیار در دسترس ماشین مجازی





پس از تکمیل ویزارد، آن را ببندید، ماشین مجازی جدید را اجرا کنید و سیستم عامل را روی آن نصب کنید.
برای انجام این کار، از طریق پورتال مدیریتی وارد کنسول این ماشین مجازی شوید:
تصویر تنظیمات پورتال اداری برای اتصال به کنسول ماشین مجازی

برای اتصال به کنسول ماشین مجازی، ابتدا باید کنسول را در قسمت مشخصات ماشین مجازی پیکربندی کنید.
تصویر صفحه تنظیمات ماشین مجازی، تب "کنسول"

برای اتصال به کنسول ماشین مجازی، میتوانید از موارد زیر استفاده کنید، برای مثال: .
برای اتصال مستقیم به کنسول ماشین مجازی در پنجره مرورگر، تنظیمات اتصال کنسول باید به شرح زیر باشد:

پس از نصب سیستم عامل روی ماشین مجازی، توصیه میشود عامل مهمان oVirt را نصب کنید:
yum -y install epel-release
yum install -y ovirt-guest-agent-common
systemctl enable ovirt-guest-agent.service && systemctl restart ovirt-guest-agent.service
systemctl status ovirt-guest-agent.serviceبنابراین، در نتیجه اقدامات ما، ماشین مجازی ایجاد شده از دسترسی بالایی برخوردار خواهد بود، به این معنی که اگر گره کلاستری که روی آن اجرا میشود از کار بیفتد، oVirt به طور خودکار آن را در گره دوم مجدداً راهاندازی میکند. این ماشین مجازی همچنین میتواند برای نگهداری یا اهداف دیگر بین میزبانهای کلاستر منتقل شود.
نتیجه
امیدوارم این مقاله این نکته را منتقل کرده باشد که oVirt یک ابزار مدیریت زیرساخت مجازی کاملاً توانمند است که استقرار آن چندان دشوار نیست - البته تا زمانی که قوانین و الزامات خاص ذکر شده در مقاله و مستندات را رعایت کنید.
با توجه به حجم زیاد مقاله، گنجاندن بسیاری از موارد، مانند دستورالعملهای گام به گام برای تکمیل ویزاردهای مختلف با توضیحات و تصاویر دقیق، خروجیهای طولانی دستورات و غیره، غیرممکن بود. در واقع، این کار به یک کتاب کامل نیاز دارد که با توجه به انتشار مداوم نسخههای جدید نرمافزار با نوآوریها و تغییرات، چندان کاربردی نیست. مهمترین چیز این است که بفهمیم همه چیز چگونه با هم کار میکند و یک الگوریتم کلی برای ایجاد یک پلتفرم مدیریت ماشین مجازی مقاوم در برابر خطا توسعه دهیم.
اگرچه ما یک زیرساخت مجازی ایجاد کردهایم، اما اکنون باید به آن آموزش دهیم که هم بین عناصر جداگانهاش - میزبانها، ماشینهای مجازی، شبکههای داخلی - و هم با دنیای خارج تعامل داشته باشد.
این فرآیند یکی از وظایف اصلی یک مدیر سیستم یا شبکه است که در مقاله بعدی - در مورد استفاده از روترهای مجازی VyOS در زیرساخت مقاوم در برابر خطا در شرکت ما (همانطور که حدس زدید، آنها به عنوان ماشینهای مجازی در خوشه oVirt ما اجرا خواهند شد) - به آن پرداخته خواهد شد.
منبع: www.habr.com
