Наръчник за използване на CGroups в облака

Е, както знаете, GNU & Linux са страхотни. Защо? Защото можем да ползваме контролни групи (CGroups)! Тази публикация:

  • ще ви научи как да защитите критичните системни процеси както за паметта, така и за процесора.
  • и предоставя видео наръчник за въвеждане на cgroups на работещ сървър.
  • показва примерно внедряване на CGroups или SystemD slices.

Как да държите всичко под контрол

Можете да използвате CGroups, за да ограничите количеството ресурси, което е разрешено за процес или група от процеси. Да, така е. След като сте поставили даден процес в CGroups, можете спокойно да забравите за недостиг на изчислителни мощности.

В CloudSigma обичамe CGroups. Всъщност ги обичаме толкова много, че ги използваме навсякъде. Използваме CGroups за нашите чаши за кафе! Шегата настрана, използваме ги, за да ограничим наличните ресурси за процесите, които се изпълняват на нашите сървъри. По този начин ги държим под контрол.

Не по-малко важно е, че ги използваме, за да гарантираме ресурсите нужни на най-важните подсистеми на нашите физически хостове, което води до стабилност на клиентските виртуални машини.

Например, нашата системна част разполага само с 4 GiB! Повече от достатъчно за всяка GNU & Linux система да работи, нали? А в началото беше само 640 kiB… 🙁

Как да направим това? Например, как можем да гарантираме ресурси за нашата DRBD сторидж система?

Лесно! Ние просто ограничаваме всичко. И оставяме достатъчно ресурси за дистрибутирания сторидж CGroup, което в същото време има свои собствени ограничени.

Ако не знаете как да правите CGroups, позволете ми да ви науча на основите в този блог пост…

Има различни видове CGroups. Имаме памет CGroups, CPU CGroups, Block устройство CGroups и т.н.

Наблюдавайте ме как ограничавам процес в работеща система в този видеоклип:

Започваме

Първо инсталирайте инструментите, от които се нуждаете, за да манипулирате CGroups. Така е много по-лесно.

Аз съм потребител на Funtoo/Gentoo и Fedora, така че примерите са в контекста на тези операционни системи, но са също така постижими във всички Linux дистрибуции:

Вече сме готови да създадем няколко CGroups.

Да кажем, че имате потребител в сървъра си, който използва много повече памет, отколкото бихте искали. Да предположим, че името му е Благоварт. Да кажем, че е използвал много повече памет, отколкото ви се иска и желаете да ограничите паметта и изчислителните мощности, които той използва.

Затова създаваме CGroups за процесора и паметта:

Тази команда ще създаде директория в: /sys/fs/CGroup/cpu/blagovart и /sys/fs/CGroup/memory/blagovart. Принципно можем да постигнем това просто с mkdir, но е по-добре да използвате инструментите, предоставени от libCGroup. Те се грижат за някои от изисканията за работа на CGroups.

Така създадохме CGroups паметта и процесора на Благоварт. Сега нека създадем контейнер за неговия скрипт:

И да поставим скрипта тук:

Сега неговият скрипт е готов, но все още не сме създали ограниченията. Нека определим някои лимити:

И ето, вече Благоварт няма да използва всички ресурси и останалите потребители ще бъдат по-щастливи!

Сега можем да направим това в цялата система.

SystemD Slices

Ако използвате SystemD система като Fedora, трябва да прочетете за slices. Човек може лесно да конфигурира ограничения в slices, също както ограниченията на груповите процеси и на ресурсите.

Пример:

Готово! Това вече е постоянно. Тъй като има промени, за да бъдат приложени ще трябва да рестартирате системата.

Тази команда ще създаде следните файлове:

Ако искате настройките да изчезнат просто ги изтрийте и рестартирайте.

За системи, които частично използват SystemD, като Ubuntu 14.04 или за такива, които не го използват, като Funtoo, имате други опции.

Една от тях използва следния код:

Недостатък е, че все още не поставям скрипта в CGroups. Това просто създава CGroup структура, към която да закача процеси. В този случай просто мога да направя следното:

И след това идва ред на Ubuntu. Доколкото знам, Ubuntu 14.04, най-новият LTS към момента на писане, има проблеми със SystemD. Ще е нужен алтернативен подход като init скрипт :

И това е! Сега имате конфигурирани CGroups. Както виждате, лесно е да се работи с тях, но е много по-добре да имате система, съвместима със SystemD, благодарение на slices.

CGroups е страхотен ресурс от ядрото на Linux. Можете да го използвате навсякъде, където искате да контролирате използването на ресурси. Например, имаме библиотека CGroups, наречена: cgroupspy, която можете свободно да използвате от Python, за да направите каквото желаете със CGroups. Както обикновено, нашият лиценз няма как да бъде по-безплатен:

References

About Ekaterina Palasheva

Ekaterina is a Marketing Expert at CloudSigma, pursuing a bachelor's degree in Business Administration at the University of Mannheim. Following her strong interest in technology and the business of technology she is currently contributing to the website content of Cloudsigma and supports all marketing campaigns, analysis and events.