LXF156:По рецептам доктора Брауна
Olkol (обсуждение | вклад) (→Начинаем) |
Olkol (обсуждение | вклад) (→Начинаем) |
||
Строка 69: | Строка 69: | ||
</pre> | </pre> | ||
Здесь 102 – идентификатор контейнера (CTID), который представляет собой просто целое число, идентифицирующее контейнер. По умолчанию используются значения от 100 и выше. Идентификаторы контейнеров должны быть уникальными в каждом физическом хосте (или «узле оборудования», на языке OpenVZ); хотя если у провайдера несколько хостов, то, пожалуй, лучше, чтобы значения CTID были уникальными в пределах организации. Теперь можно настроить экземпляр контейнера, задав имя хоста, IP-адрес и пароль root: | Здесь 102 – идентификатор контейнера (CTID), который представляет собой просто целое число, идентифицирующее контейнер. По умолчанию используются значения от 100 и выше. Идентификаторы контейнеров должны быть уникальными в каждом физическом хосте (или «узле оборудования», на языке OpenVZ); хотя если у провайдера несколько хостов, то, пожалуй, лучше, чтобы значения CTID были уникальными в пределах организации. Теперь можно настроить экземпляр контейнера, задав имя хоста, IP-адрес и пароль root: | ||
− | {{Врезка|left|Заголовок= Спектр технологий виртуализации|Ширина=90%|Содержание= [[Файл:LXF156.sysadmin.spectru_opt.png | |thumb| | + | {{Врезка|left|Заголовок= Спектр технологий виртуализации|Ширина=90%|Содержание= [[Файл:LXF156.sysadmin.spectru_opt.png | |thumb|600px|Классификация технологий контейнеров по тому, что они обобществляют и разделяют.]] |
Один из способов разобраться в ошарашивающем наборе технологий виртуализации – исследовать степень разделения, предоставляемую каждой из них. В нижнем конце спектра – процесс Linux, который разделяет адресное пространство, дескрипторы файлов, переменные окружения, приоритет планирования и пользователя. | Один из способов разобраться в ошарашивающем наборе технологий виртуализации – исследовать степень разделения, предоставляемую каждой из них. В нижнем конце спектра – процесс Linux, который разделяет адресное пространство, дескрипторы файлов, переменные окружения, приоритет планирования и пользователя. | ||
Версия 04:56, 10 июля 2018
|
|
|
Содержание |
По рецептам доктора Брауна
Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает. Эзотерическое системное администрирование из причудливых заворотов кишок серверной
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
LXF00.tut1.chris2.psd
Дай работу, насяльника
Мы все знаем, что Linux чудесен, но можно ли с ним сделать карьеру? Доктор считает, что да.
И ногда мои курсы посещают студенты, «отдыхающие от работы» (то есть попросту безработные) – они платят за обучение из своего кармана, надеясь улучшить свои перспективы на рынке труда в будущем. Как преподаватель, я ощущаю особую ответственность, когда кто-то хочет, чтобы я увеличил его шансы заработать на хлеб. Мы все знаем, что Linux – лучшая ОС на планете, но действительно ли обучение на курсах системного администрирования в Linux – правильный выбор для этих людей?
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Сайт itjobswatch.co.uk формирует статистику рынка труда, собирая информацию с сайтов вакансий в сфере IT. Статистика, разумеется, основана на поиске по ключевым словам в описаниях вакансий, и к ней нужно относиться с осторожностью. Но она позволяет понять некоторые интересные моменты, и я провел счастливое утро за вводом поисковых запросов в этот сайт. Ниже приведены некоторые добытые мною показатели.
Показатели основаны на средних значениях за три месяца (конец интервала – 26 января 2012 г.). Для сравнения также приводятся показатели за тот же период год и два года назад. Больше всего вдохновляет не абсолютное значение цифр, а то, что во всех сферах мира СПО (поиск по “Tomcat”, “PHP”, “Hadoop”, “Drupal”, “Red Hat” и “Ubuntu”) – стойкий восходящий тренд.
Путь только наверх
Правда, часть этих технологий возникла совсем недавно, и единственный путь для них – наверх. Обратный результат, впрочем, демонстрируют запросы по названиям основных систем UNIX (такие как “Solaris”, “HPUX” и “AIX”) – количество всех их без исключения постоянно падает.
Конечно, с конкретизацией рода работы и местоположения цифры падают. Если вы, скажем, разработчик Drupal и ищете работу в Тэмуорте, забудьте об этом. Ее нет. Но не верьте мне на слово – зайдите на itjobswatch.co.uk и убедитесь сами.
Контейнеры OpenVZ
Используйте свое «железо» на полную силу с OpenVZ, легкой программой для виртуализации, идеальной для хостинг-провайдеров.
В мире бездна технологий виртуализации. Даже если ограничиться только применимыми в Linux, найдется достаточно, чтобы глаза заслезились: Bochs, DOSEMU, KVM, VServer, OpenVZ, Parallels, различные версии VMWare, QEMU, Xen... список можно продолжить.
Сегодня я хочу рассказать вам об OpenVZ. Это технология ядра Linux, позволяющая запускать несколько виртуальных частных серверов (VPS) на одном физическом компьютере. Каждый из серверов при этом выглядит как отдельный сервер с отдельными доступом root, IP-адресом, таблицей процессов, файловой системой, правилами брандмауэра и т. д. От средств полной виртуализации вроде Xen или VMWare эту программу отличает то, что в каждом экземпляре VPS используется одна и та же разделяемая копия ядра Linux. Поэтому, например, с OpenVZ нельзя загрузить экземпляр Windows 7 и экземпляр RedHat, и нельзя загружать модули ядра независимо в каждый VPS. Но «пространство пользователя» в каждом VPS может быть разным, поэтому можно, например, запустить CentOS и SUSE рядом на одном и том же ядре. Это эффективное решение, и можно создать достаточно полную иллюзию отдельно администрируемых компьютеров, чтобы удовлетворить пользователей, которые не хотят много платить за хостинг-услуги. Это делает OpenVZ привлекательной технологией для хостинг-провайдеров, желающих получить максимальную прибыль при ограниченных вложениях в оборудование.
Начинаем
OpenVZ – технология, на основе которой работают Virtuozzo Containers. Это коммерческая виртуализация сервера от Parallels (www.parallels.com/products/pvc) – компании, пожалуй, лучше всего известной настольными продуктами для виртуализации, позволяющими запустить Windows на Mac. Virtuozzo Containers не бесплатен, но если вы хотите немного поработать в командной строке, OpenVZ позволит воспользоваться этой технологией бесплатно. Она состоит из модифицированной версии ядра Linux, набора утилит командной строки и коллекции шаблонов. Шаблон по сути представляет собой сжатый tar-архив пакетов, которые вы хотите установить на VPS. Шаблоны ускоряют создание экземпляров VPS. Хостинг-провайдеры обычно начинают с установки дистрибутива Linux на свое оборудование. В нашем случае они могут загрузить OpenVZ-версию ядра, настроить его загрузку в Grub и установить утилиты пространства пользователя. И ядро, и утилиты доступны в виде RPM-пакетов на сайте OpenVZ, поэтому установка не должна быть сложной.
Как всегда, предвкушая немедленное удовольствие, а загрузил образ Live CD с сайта OpenVZ (http://wiki.openvz.org/Download_live_CD) и установил его на сервер Dell PowerEdge. Диск меня немного разочаровал – не столько из-за неуклюжего интерфейса командной строки, сколько из-за возраста: в нем используется загрузчик Lilo и старое ядро (2.6.18). Нет ни предустановленных шаблонов, ни yum, ни wget. Но зато есть ядро OpenVZ, утилиты командной строки OpenVZ и man-страницы. И на нем есть рабочий сервер ssh, поэтому я загрузил шаблон CentOS с сайта OpenVZ на своем ноутбуке и скопировал его командой scp на сервер следующим образом:
wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz scp centos-5-x86_64.tar.gz root@192.168.1.144:/vz/templates/cache Установив шаблон, я смог подключиться к серверу и создать VPS, вот так: # vzctl create 102 --ostemplate centos-5-x86_64 Creating container private area (centos-5-x86_64) Performing postcreate actions Container private area was created
Здесь 102 – идентификатор контейнера (CTID), который представляет собой просто целое число, идентифицирующее контейнер. По умолчанию используются значения от 100 и выше. Идентификаторы контейнеров должны быть уникальными в каждом физическом хосте (или «узле оборудования», на языке OpenVZ); хотя если у провайдера несколько хостов, то, пожалуй, лучше, чтобы значения CTID были уникальными в пределах организации. Теперь можно настроить экземпляр контейнера, задав имя хоста, IP-адрес и пароль root:
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- vzctl set 102 --hostname test102.example.com --save
Saved parameters for CT 102
- vzctl set 102 --ipadd 192.168.1.102 --save
Saved parameters for CT 102
- vzctl set 102 --userpasswd root:pink-turtle
Теперь все готово для запуска экземпляра:
- vzctl start 102
Starting container ...
Container is mounted
Setting CPU units: 1000
Configure meminfo: 65536
Set hostname: test102.example.com
Container start in progress...
... и запуска в нем сервера sshd:
- vzctl exec 102 service sshd start
Starting sshd: [ OK ]
Наконец, я могу подключиться к новому VPS по ssh:
- ssh 192.168.1.102
root@192.168.1.102’s password:
[root@test102 ~]#
Сейчас я смотрю в командную строку своего VPS, хотя, конечно, на практике это будут делать клиенты хостинг-провайдера.
Остановим контейнер
Конечно, может показаться, что для запуска одного сервера мы приложили слишком много усилий, но легко написать небольшой скрипт, который бы это автоматизировал. Можете даже представить себе хостинг-провайдера, который немного знаком с написанием скриптов и сделал несколько скриптов (и, возможно, web-интерфейс), чтобы клиенты могли сами создавать экземпляры VPS. Контейнер можно остановить следующим образом:
- vzctl stop 102
Stopping container ...
Container was stopped
Container is unmounted
...а навсегда уничтожить – так:
- vzctl destroy 102
Вы видите, что команда vzctl – «рабочая лошадка» для управления контейнером. Подкомандой set задается набор параметров – определяя, нужно ли запускать контейнер автоматически при загрузке хоста, создать пароли для учетных записей пользователей, добавить IP-адреса, задать MAC-адрес контейнера и лимиты на потребление ресурсов. Подкоманда exec позволяет запустить произвольную команду в контексте заданного контейнера. Например, список открытых портов контейнера можно вывести так:
- vzctl exec 102 lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE
NODE NAME
sshd 29989 root 3u IPv4 76125 TCP *:ssh (LISTEN)
sendmail 30015 root 4u IPv4 76193 TCP 127.0.0.1:smtp (LISTEN)
httpd 30033 root 3u IPv4 76232 TCP *:http (LISTEN)
httpd 30034 apache 3u IPv4 76232 TCP *:http (LISTEN)
У каждого контейнера есть свой IP-адрес и свое личное пространство номеров портов. Так, порт 80 контейнера 102 полностью отделен от порта 80 контейнера 103. «За кулисами» OpenVZ использует глобальный файл настройки /etc/vz/vz.conf (применяемый ко всем контейнерам) и файлы настройки контейнеров /etc/vz/conf/xxx.conf, где xxx – идентификатор контейнера. Установка Live CD содержит примеры файлов, а подробности можно узнать на man-странице vz.conf. У хостинг-провайдера решения вроде OpenVZ оставляют некое ощущение «всех яиц в одной корзине», в том смысле, что если физический сервер выйдет из строя или будет атакован хакером, он по сути останется без виртуальных частных серверов клиентов. Но это справедливо для всех технологий виртуализации.
Управляем ресурсами
OpenVZ – не технология полной виртуализации. Хотя каждый контейнер видит свою собственную файловую систему, он не видит собственных дисковых разделов фиксированного размера. Вместо этого файловая система контейнера связывается с файловой системой хоста, так что (например) каталог /home контейнера с идентификатором 102 представляет собой каталог /vz/private/102/home хоста.
Поэтому не в меру активный контейнер теоретически мог бы (нечаянно или намеренно) заполнить всю файловую систему хоста или по крайней мере дисковый раздел, в котором находится каталог /vz. Чтобы избежать этой ситуации, OpenVZ налагает квоты на ресурсы. Квоты первого уровня ограничивают использование ресурсов для контейнера, а квоты второго уровня – использование ресурсов для каждого пользователя внутри контейнера.
Последний хитрый прием OpenVZ – возможность переноса VPS с одного узла устройств на другой, даже при работающем VPS. Для хостинг-провайдера, который только что раскошелился на дополнительное оборудование и хочет распределить нагрузку пользователя на новые компьютеры, это потрясающая возможность. На сайте OpenVZ есть руководство пользователя, хотя местами его не помешало бы и обновить, и полный набор man-страниц (http://wiki.openvz.org/images/9/9a/Man_pages.pdf). Но лучший способ знакомства с ним – установить программу и попробовать что-нибудь сделать. В этом и заключается прелесть открытого ПО.
LXF156.sysadmin.spectrum.psd 185534.png Классификация технологий контейнеров по тому, что они обобществляют и разделяют.
LXF156.sysadmin.openvz_logo.psd 185420.png OpenVZ: виртуальные частные серверы, создаваемые за секунды из готовых шаблонов, с установкой поверх общего ядра Linux.
Утилиты командной строки
185793.png vzctl Основная утилита управления OpenVZ, обсуждаемая в тексте статьи.
185795.png vzlist Выводит список всех контейнеров (по умолчанию содержит только запущенные контейнеры).
185797.png vzcpucheck Отображает использование процессора для каждого контейнера.
185799.png vzcalc Отображает долю системных ресурсов хоста, используемых заданным контейнером.
185801.png vzsplit Создает пример файла настройки контейнера, который можно использовать для разделения ресурсов узла оборудования на N равных частей.
185803.png vzmigrate Переносит контейнер с одного узла оборудования на другой. Делать это можно, даже когда они запущены. Фантастика!
Узел оборудования (Физический сервер)
Виртуальный частный сервер
Пользователь
Файловая система
Ядро Linux OpenVZ
Шаблон
Пользователь
Виртуальный частный сервер
Файловая система
Шаблон содержит пакеты, устанавливаемые на каждый новый VPS
Сетевые подключения перенаправляются узлом оборудования
Интернет
Etcetera в иллюстрациях – часть 4
Изучайте файлы в /etc каждый месяц с нашим удобным руководством. В этот раз знакомимся с hosts.allow и hosts.deny.
Файлы /etc/hosts.allow и /etc/hosts.deny — файлы настройки механизма управления доступом, который называется «обертки TCP [TCP wrappers]» и предоставляет сетевым сервисам дополнительный уровень безопасности, позволяя управлять тем, какие сервисы могут быть доступны с определенных клиентских компьютеров или сетей. TCP wrappers были написаны Виетсой Венема [Wietsa Venema], который работал в Университете Эйндховена и, пожалуй, более всего известен как автор почтовой системы Postfix и таких утилит безопасности, как SATAN и Coroner’s Toolkit.
Существует два подхода в использовании TCP wrappers. Первый – «невиновен, пока вина не доказана». В нем все подключения разрешены, если они явно не заблокированы в hosts.deny. Второй – «виновен, пока не доказано обратное»: все соединения блокируются, если они явно не разрешены в hosts.allow. Строгие администраторы, не допускающие течи на судне, наверняка выберут второй подход и начнут с файла hosts.deny, содержащего всего одну строку:
ALL: ALL
Затем они укажут разрешенные сочетания сервис/клиент в hosts.allow. Этот файл дает большую гибкость в описании соединений клиентов. Можно ввести конкретный IP-адрес или набор адресов (скорее всего, здесь вы укажете свою локальную сеть) или имя компьютера или домена. Однако учтите, что для имен компьютеров TCP wrappers приходится выполнять обратные DNS-запросы, а это влияет на производительность.
На заре TCP wrappers проверки доступа выполнялись отдельной программой tcpd. Обычно так называемый «суперсервер», такой как inetd, слушал входящие соединения от имени сервиса и затем запускал tcpd. После выполнения проверок и обработки параметров, указанных в hosts.allow и hosts.deny, tcpd запускал сервер. Сегодня inetd и tcpd почти не используются. Однако на удивление много сервисов все еще удостаивают вниманием hosts.allow и hosts.deny посредством библиотеки libwrap (см. врезку).
Еще больше пользы
Кроме управления доступом к сервису путем идентификации компьютера клиента, TCP wrappers могут выполнять и другие действия при подключении клиента. Можно записать в журнал все запросы на подключение (с помощью syslog), отправить клиенту содержимое заранее заданного файла «баннера» (часто как сообщение «только для авторизованных пользователей») или запустить любую команду оболочки. На man-странице hosts_access описан базовый синтаксис hosts.allow и hosts.deny, а на man-странице hosts_options – дополнительные возможности. А прочтя оригинальный документ Венемы (ftp://ftp.porcupine.org/pub/security/tcp_wrapper.pdf), вы узнаете, что основным мотивом разработки TCP wrappers было отслеживание попыток хакера взломать компьютерную систему в Эйндховене.
185391.png 185392.png
Кто этим пользуется?
Сервисы, использующие TCP wrappers, связываются с библиотекой libwrap. Поэтому их легко найти с помощью простого скрипта, примерно такого:
for f in /bin/* /usr/bin/* /sbin/* /usr/sbin/*
do
- echo processing $f
if ldd $f | grep -q libwrap
then
echo $f uses libwrap
fi
done
Он нашел 23 исполняемых файла в Ubuntu 10.04 и 38 в Fedora 15.
Интересно, что в этот список входит демон безопасной оболочки (sshd) и зеркало портов (rpcbind), которое необходимо таким сервисам, как NFS и NIS.
Соответствует ли ему запись в hosts.allow?
Соответствует ли ему запись в hosts.deny?
Входящий запрос
Запретить!
Да
Нет
Да
Нет
Разрешить!
Разрешить!
185448.png TCP wrappers сначала считывают файл host.allow, а затем hosts.deny. Если файл не существует, считается, что он пуст.
185831.png Файл /etc/hosts.allow позволяет отфильтровать подключения к сервису путем идентификации клиентского компьютера.
Одно или несколько имен сервисов или ключевое слово «ALL»
Один или несколько клиентов; верный синтаксис включает:
192.168.0.4 Заданный IP-адрес
144.116.0.0/16 Диапазон IP-адресов
.miskatonic.org Домен
mars.planets.com Заданный хост
ALL Все клиенты
LOCAL Локальное имя компьютера (с точкой в нем)
sshd:
ftpd:
192.168.0.0/24:
miskatonic.org
Параметры
В приведенном примере задается уровень логирования. Другие параметры включают:
spawn Запуск указанной команды оболочки
keepalive Отправка периодических сообщений клиенту
user tom Запуск демона от имени указанного пользователя
severity info