По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Уровни выполнения (runlevel) Linux можно представить, как режим, в котором запускается система. Каждый из этих режимов обладают своими процессами, которые включены или выключены в зависимости от запущенного уровня выполнения. С момента загрузки Linux выполняется в одном из режимов, нельзя запускать систему в нескольких режимах, но есть возможность переключаться между уровнями во время работы на компьютере. Например, при запуске системы с графическим интерфейсом выполняется один уровень, а если запускать систему в режиме командной строки выполнится другой. Это происходит потому, что режиму GUI нужны доступы к тем процессам, в которых командная строка не нуждается. В зависимости от того, какие службы нужно включить, а какие выключить система меняет уровни выполнения. Почему важны уровни доступа Вы можете годами пользоваться системой Linux, даже не понимая разницу между уровнями доступа, так как эта опция не является часто конфигурируемой. Тем не менее уровни выполнения Linux дают администраторам повышенный контроль над системой. Режим, в котором работает система, может быть изменен (как это сделать будет показано далее), как и сервисы, которые выполняются в этом режиме. Это позволяет нам полностью контролировать, к каким службам система будет иметь доступ в данный момент. Сколько уровней выполнения существует? В системе Linux есть семь уровней выполнения, которые нумеруются от 0 до 6. Разные дистрибутивы по-разному используют уровни выполнения, так что очень сложно составить список задач, которые выполняет конкретный уровень. Зато вы сами можете посмотреть какие задачи выполняют уровни доступа вашего дистрибутива. Ниже приведён список уровней выполнения и основных задач, выполняемых ими. Runlevel 0 завершает работу системы Runlevel 1 однопользовательский режим работы. Чаще всего используется в целях обслуживания и выполнения других административных задач. Это уровень также может называться runlevel S, где S означает single-user. Если вам когда-то приходилось сбрасывать пароль на Linux, то вы вероятно уже пользовались этим режимом. Runlevel 2 многопользовательский режим работы без поддержки сетевых служб (демонов). Runlevel 3 многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения. Runlevel 4 не используется. Пользователь может настраивать этот уровень исходя из его целей. О том, как это сделать также будет рассказано далее. Runlevel 5 этот режим схож с уровнем 3, но тут еще запускается графический интерфейс. В этом режиме работают десктопные версии Linux. Runlevel 6 этот уровень перезагружает систему. Как узнать текущий режим работы? Чтобы узнать текущий уровень выполнения достаточно ввести команду runlevel в командной строке. На выводе этой команды две цифры. Первая указывает на предыдущий режим работы, а второй на текущий. На скриншоте вместо первой цифры указана буква N, что значит система изначально запускалась и работает в 5 режиме, о чём говорит вторая цифра 5. Как менять уровень выполнения? Текущий уровень выполнения можно менять командой "telinit". Ниже приведён пример смены уровня выполнения на CentOS. $ telinit 3 Следует отметить, что эта операция требует прав привилегированного пользователя. Имейте ввиду, что на системах семейства Debian уровни выполнения работают по-другому. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5. После выполнения команды указанной выше, ваш экран может стать пустым. Это потому, что вы остались на пустом терминале, чтобы вернутся на рабочий терминал нажмите комбинацию клавиш Alt+F1. Если запустить команду runlevel еще раз, то мы увидим, что текущий уровень выполнения 3, а предыдущий 5. Linux system против runlevels В последние годы systemd сменила многолетнюю систему уровней доступа (System V init). Фактически он работает по тому же принципу, но использует новые команды, которые в целом используют "runlevel" как "target". Runlevel 0 = poweroff.target (runlevel0.target) Runlevel 1 = rescue.target (runlevel1.target) Runlevel 2 = multi-user.target (runlevel2.target) Runlevel 3 = multi-user.target (runlevel3.target) Runlevel 4 = multi-user.target (runlevel4.target) Runlevel 5 = graphical.target (runlevel5.target) Runlevel 6 = reboot.target (runlevel6.target) По ходу статьи мы изучим systemd и его команды. Как поменять уровень выполнения по умолчанию? Может быть очень много причин для того чтобы загружаться с другим уровнем выполнения. Например, системные администраторы в основном используют систему в режиме командой строки, включая графический интерфейс только в случае необходимости. Именно для таких случаев нужно убедиться, что уровень выполнения по умолчанию 3, а не 5. В прошлом для этого приходилось редактировать файл /etc/inittab. Вы еще можете увидеть эту практику на некоторых системах. Если вы работаете с ОС, которые давно не обновляются до новых версий, этот путь будет приемлемым. $ vi /etc/inittab На скриншоте уровнем выполнения по умолчанию установлен 5. Но большинство систем Linux отказались от файла /etc/inittab в пользу systemd targets и мы рассмотрим разницу между ними по ходу статьи. Вы можете не найти в своей системе файл /etc/inittab или же файл inittab выведет вам сообщение с советом использовать systemd. Чтобы проверить текущий уровень выполнения по умолчанию введите команду $ systemctl get-default Система вернула нам "graphical.target". Как вы наверное и догадались, это не что иное, как уровень выполнения 5. Чтобы просмотреть остальные "target" и уровни выполнения, ассоциированные с ними введите команду: $ ls -l /lib/systemd/system/runlevel* Символьные ссылки указывают на то, что systemd работают так же как и runlevel. Итак, что необходимо сделать, чтобы поменять уровень выполнения по умолчанию? Для этого достаточно создать новую символьную ссылку на интересующую нас цель systemd. $ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target Данной командой мы поменяли режим запуска системы по умолчанию с уровня выполнения 5, на 3 и при следующей загрузке система выполнить именно этот уровень. Ключ f указывает на то, что перед созданием новой символьной ссылки целевой файл должен быть удален. Это же самое могли бы сделать командой rm. Чтобы проверит успешно ли применились изменения достаточно повторно ввести команду "systemctl get-default". Разница между уровнями выполнения 3 и 5 Самыми часто используемыми уровнями выполнения являются уровни 3 и 5. В целом их разница сводится к тому, что 3 это режим командной строки, а 5 режим графического интерфейса. Конечно, не во всех дистрибутивах выполняется это условие или же ваша система может быть сконфигурирована так, что эти два уровня имеют больше отличий. Дальше мы рассмотрим, как узнать, какие процессы задействованы для того или иного уровня. Просмотр список служб конкретного уровня Чтобы просмотреть список служб, доступных для каждого уровня до недавнего времени использовалась команда "chkconfig -list". Если у вас стоит одна из последний версий, системы, то вероятно вы получите ошибку, как на скриншоте ниже: Чтобы проверить, какие службы запускаются во время загрузки системы в режиме графического интерфейса (уровень выполнения 5 для семейства RedHat), нужно запустить следующую команду: $ systemctl list-dependencies graphical.target Чтобы просмотреть список доступных служб другого уровня, просто замените "graphical.target" на нужную. Под каким уровнем работает процесс Если нужно посмотреть по каким уровнем выполнения запущена та или иная служба, можно ввести команду: $ systemctl show -p WantedBy [name of service] Например, чтобы посмотреть какой runlevel использует служба sshd, введите команду: $ systemctl show -p WantedBy sshd.service Судя по скриншоту выше, служба sshd запушена под уровнями 2,3 и 4 (multi-user.target) Меняем уровень запуска приложения Как было показано выше, демон SSH запущена только на уровнях 2-4. Что если нам нужно, чтобы он работал ещё и на уровне 5? Для этого нужно ввести следующее изменение: $ systemctl enable sshd.service Проблемы безопасности с уровнями доступа Linux Как было сказано ранее, уровни доступа дают администраторам возможность управлять службами, которые работают в определённых случаях. Такая возможность детального контроля повышает безопасность системы, так как системный администратор может быть уверен, что не запущена ни одна сторонняя служба. Проблема возникает, когда администратор не знает точно какие службы запущены и, следовательно, не может принять меры по уменьшению площади атаки. Используя методы из данного руководства, вы можете настроить уровень выполнения по умолчанию и контролировать запущенные приложения. Это, конечно, не уменьшит нагрузку на системные ресурсы, но сервер будет более защищен. Помните, что надо запускать тот уровень, который вам необходим. Нет смысла запускать систему в графическом режиме, если планируете работать там режиме командной строки. Каждый уровень выполнения запускает новые службы, большинство из которых работают в фоновом режиме, и вы можете забыть обезопасить их. Какой уровень выполнения выбрать? Выбор режима запуска системы полностью зависит от ситуации. В основном используется один из двух режимов: либо runlevel 3, либо runlevel 5. Если вам удобно работать с командной строкой и вам не нужен графический интерфейс, то уровень выполнения 3 самый подходящий. Это предотвратит запуск ненужных служб. С другой стороны, если вам хочется работать в десктопном режиме или же вам нужна графическая оболочка для работы какой-то программы, то выберите уровень 5. Если же нужно запустить систему в режиме обслуживания, то выбирайте уровень 1. В этом режиме в системе будете только вы, так как сетевые службы даже не запущены. Это позволит выполнить обслуживания без сбоя. В редких случаях появляется необходимость использовать уровень выполнения 4. Это может быть только в том случае, если администратору нужен уровень выполнения для особых задач. Как вы уже, наверное, заметили, мы не может запускать систему с уровнем 0 и 6, но можно переключаться на них если нужно выключить или перезагрузить систему. Но в этом нет особой необходимости, так как есть команды, которые выполняют эти операции. Можно ли создано новый уровень на Linux? Так как система Linux это система бесконечных возможностей, то и создание нового уровня не исключение. Но очень маловероятно, что вам когда-нибудь понадобится это. Но если вы все-таки решили создать новый уровень, то следует начать с копирования существующего уровня и изменения её под свои задачи. Целевые уровни расположены по следующему пути: /usr/lib/systemd/system Если хотите создать свой уровень на основе 5-го уровня выполнения, скопируйте искомую директорию в новую: $ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target Затем в новой директории создайте поддиректорую "wants": $ mkdir /etc/systemd/system/mynew.target.wants Затем просто создайте символьную ссылку на дополнительные службы в директории /usr/lib/systemd/system, которые необходимы вашему уровню.
img
Про хоботистый проект, который изменил многое Интернет, на текущее время, это непрерывно развивающаяся сеть планетарного масштаба. Ее существование невозможно представить без поисковых программ и социальных сетей. Большинство пользователей интернета, ежедневно заходящих в Facebook или ищущих информацию в Yahoo, даже не задумываются, как работает эта система то есть, контактируют только с пользовательским интерфейсом программы. И мало кто знает, что продукты такого типа работают на основе распределенных программам. Их работа основана на кластерах наборах узлов, которые используются для поиска нужной клиенту информации. И одним из основных наборов инструментов, который используется при разработке такого рода программ, является Hadoop. Что же это такое? Как говорилось выше, это не отдельная программа, а целый набор инструментов, библиотек и приложений, а также инструмент для удобной работы с ними. Для удобства, назовем весь этот комплекс "фреймворком". Всё это предназначено для разработки и использования распределенных программ. В этой статье мы разберемся, из чего состоит основной инструментарий Hadoop и упомянем о самых распространенных программах из набора. Строго говоря, разработчиком Hadoop является компания Apache Software Foundation. Однако, в силу того, что данный набор программ является свободно распространяемым, ряд сторонних разработчиков (Hortonworks, MapR, Cloudera) создали на основе Apache Hadoopряд своих сборок, которые завоевали у пользователей большую популярность. Это произошло потому, что такие сборки гораздо стабильнее ведут себя в работе и гораздо удобнее в использовании. Основной базовой частью Hadoop является распределенная файловая система HDFS. От обычных файловых систем ее отличает то, что хранение и работа с файловыми дескрипторами осуществляется с отдельного сервера имён, а данные находятся на отдельных серверах данных. Это делает систему исключительно надежной, поскольку даже при внештатных ситуациях процент безвозвратной потери данных очень мал. Кроме того, система позволяет узнать, на какой конкретной машине расположен интересующий блок данных. Пару слов о движках: Развитие проекта привело к тому, что классическая схема MapReduce, с которой проект начинал свою работу, сейчас заменяется на варианты Spark или Tez, поскольку значительно ускоряют работу с данными. Spark более универсальная модель движка, применяемая повсеместно, Tez в свою очередь более узко специализирован. К наиболее популярным системам управления базами данных в данном решении можно отнести базовый вариант Hive, а также альтернативные варианты, такие как Impala от Cloudera, или Spark SQL. Данные продукты имеют свои достоинства и недостатки, но возможность выбора лучшего решения делает проект в общем и целом достаточно гибким и удобным для пользования. Свою нишу в данном проекте также имеет отдельная NoSQL-база Hbase. Это важное решение для всей системы Hadoop, поскольку эффективно поддерживает работу с отдельными записями в режиме реального времени. Для импорта данных на текущий момент, пожалуй, единственным эффективным вариантом остается Kafka от оригинального разработчика Apache. Уникальность данного решения в том, что импорт серьезных объемов данных в данном случае заложен в саму архитектуру проекта. Конечно, Kafka обладает рядом минусов, но работы над обновлением и оптимизацией ведутся постоянно. Помимо этого набора программ, который можно считать базовым, Hadoop обладает рядом других полезных инструментов. Это и алгоритмы машинного обучения для оптимизации работы всей системы (MLlib, Mahout), и программа-координатор ZooKeeper, обладающая широчайшими возможностями по конфигурированию и управлению, программы для планирования задач в проектах Azkaban и Oozie, а так же многие другие подключаемые модули различного назначения и, соответственно, различной полезности в рамках того или иного проекта.
img
Мы продолжим рассмотрение вопроса об устранении неполадок в объявлениях о маршрутах BGP. Все маршрутизаторы будут иметь рабочие соседние узлы BGP. Рекомендуем также почитать первую часть статьи по траблшутингу протокола BGP. Видео: Основы BGP за 7 минут Урок 1 Новый сценарий. R1 и R2 находятся в разных автономных системах. Мы пытаемся объявить сеть 1.1.1.0 / 24 от R1 до R2, но она не отображается на R2. Вот конфигурации: На первый взгляд, здесь все в порядке. Однако R2 не узнал никаких префиксов от R1 Может быть, используется distribute-list. Но нет, это не тот случай. Это означает, что нам придется проверять наши все команды network. Проблема заключается в команде network. Она настраивается по-разному для BGP и нашего IGP. Если мы применяем команду network для BGP, она должна быть полной. В этом случае забыли добавить маску подсети R1(config)#router bgp 1 R1(config-router)#network 1.1.1.0 mask 255.255.255.0 Мы должны убедиться, что ввели правильную маску подсети. Итак, видно, что мы узнали префикс, и R2 устанавливает его в таблицу маршрутизации ... проблема решена! Итог урока: введите правильную маску подсети ... BGP требователен! Урок 2 Давайте перейдем к следующей проблеме. Системный администратор из AS1 хочет объявить summary в AS 2. Системный администратор из AS 2 жалуется, однако, что он ничего не получает..., давайте, выясним, что происходит не так! Вот конфигурация. Вы можете увидеть команду aggregate-address на R1 для сети 172.16.0.0 / 16. Жаль ... префиксы не были получены R2. Здесь мы можем проверить две вещи: Проверьте, не блокирует ли distribute-list префиксы, как это мы сделали в предыдущем занятии. Посмотрите, что R1 имеет в своей таблице маршрутизации (Правило: "не могу объявлять то, чего у меня нет!"). Давайте начнем с таблицы маршрутизации R1. Из предыдущих уроков вы знаете, как выглядит distribute-list. Здесь нет ничего, что выглядело бы даже близко к 172.16.0.0 /16. Если мы хотим объявить summary, мы должны сначала поместить что-то в таблицу маршрутизации R1. Рассмотрим различные варианты: R1(config)#interface loopback 0 R1(config-if)#ip address 172.16.0.1 255.255.255.0 R1(config-if)#exit R1(config)#router bgp 1 R1(config-router)#network 172.16.0.0 mask 255.255.255.0 Это вариант 1. Создам интерфейс loopback0 и настроим IP-адрес, который попадает в диапазон команды aggregate-address. Теперь мы видим summary в таблице маршрутизации R2. По умолчанию он все равно будет объявлять другие префиксы. Если вы не хотите этого, вам нужно использовать команду aggregate-address summaryonly! Второй вариант объявления summary: R1(config)#ip route 172.16.0.0 255.255.0.0 null 0 R1(config)#router bgp 1 R1(config-router)#network 172.16.0.0 mask 255.255.0.0 Сначала мы поместим сеть 172.16.0.0 / 16 в таблицу маршрутизации, создав статический маршрут и указав его на интерфейсе null0. Во-вторых, будем использовать команду network для BGP для объявления этой сети. Итог урока: Вы не можете объявлять то, чего у вас нет. Создайте статический маршрут и укажите его на интерфейсе null0, чтобы создать loopback интерфейс с префиксом, который попадает в диапазон суммарных адресов. Урок 3 Следующая проблема. Вы работаете системным администратором в AS 1, и однажды получаете телефонный звонок от системного администратора AS 2, который интересуется у вас, почему вы публикуете сводку для 1.0.0.0 / 8. Вы понятия не имеете, о чем, он говорит, поэтому решаете проверить свой роутер. Это то, что видит системный администратор на R2. Мы видим, что у нас есть сеть 1.0.0.0 / 8 в таблице BGP на R1. Давайте проверим его таблицу маршрутизации. Сеть 1.1.1.0 / 24 настроена на loopback интерфейс, но она находится в таблице BGP как 1.0.0.0 / 8. Это может означать только одну вещь ... суммирование. Беглый взгляд на выводы команды show ip protocols показывает, что автоматическое суммирование включено. Отключим это: R1(config)#router bgp 1 R1(config-router)#no auto-summary Мы отключим его на R1. Теперь мы видим 1.1.1.0 / 24 на R2 ... проблема решена! Итог урока: если вы видите classful сети в своей таблице BGP, возможно, вы включили автоматическое суммирование. Некоторые из проблем, которые были рассмотрены, можно легко решить, просто посмотрев и/или сравнив результаты команды "show run". И это правда, но имейте в виду, что у вас не всегда есть доступ ко ВСЕМ маршрутизаторам в сети, поэтому, возможно, нет способа сравнить конфигурации. Между устройствами, на которых вы пытаетесь устранить неисправности или которые вызывают проблемы, может быть коммутатор или другой маршрутизатор. Использование соответствующих команд show и debug покажет вам, что именно делает ваш маршрутизатор и что он сообщает другим маршрутизаторам. Урок 4 Та же топология, другая проблема. Персонал из AS 2 жалуются, что они ничего не получают от AS 1. Для усложнения проблемы, конфигурация не будет показана. Для начала, мы видим, что R2 не получает никаких префиксов. Так же можем убедиться, что R1 не имеет каких-либо distribute-lists. Мы видим, что R1 действительно имеет сеть 1.1.1.0 /24 в своей таблице маршрутизации, так почему же он не объявляет ее в R2? Давайте посмотрим, может на R1 есть какие-то особенные настройки для своего соседа R2: Будем использовать команду show ip bgp neighbors, чтобы увидеть подробную информацию о R2. Мы видим, что route-map была применена к R2 и называется "NEIGHBORS". Имейте в виду, что помимо distribute-lists мы можем использовать также route-map для фильтрации BGP. Существует только оператор соответствия для prefix-list "PREFIXES". Вот наш нарушитель спокойствия ... он запрещает сеть 1.1.1.0 / 24! R1(config)#router bgp 1 R1(config-router)#no neighbor 192.168.12.2 route-map NEIGHBORS out Удалим route-map И наконец R2 узнал об этом префиксе ... проблема решена! Итог урока: убедитесь, что нет route-map, блокирующих объявление префиксов. BGP иногда может быть очень медленным, особенно когда вы ждете результатов, когда вы работаете на тестовом или лабораторном оборудовании. "Clear ip bgp *" - это хороший способ ускорить его ... просто не делайте этого на маршрутизаторах в производственной сети) Урок 5 Наконец, третий участник выходит на арену, чтобы продемонстрировать новую проблему. R1-это объявляемая сеть 1.1.1.0 / 24, но R3 не изучает эту сеть. Здесь представлены конфигураций: Соседство настроено, R1 - объявляемая сеть 1.1.1.0 / 24. R3#show ip route bgp Мы можем видеть сеть 1.1.1.0 / 24 в таблице маршрутизации R2, но она не отображается на R3. Технически проблем нет. Если вы внимательно посмотрите на конфигурацию BGP всех трех маршрутизаторов, то увидите, что существует только соседство BGP между R1 и R2 и между R2 и R3. Из-за split horizon IBGP R2 не пересылает сеть 1.1.1.0 / 24 в направлении R3. Чтобы это исправить, нам нужно настроить R1 и R3, чтобы они стали соседями. R1(config)#ip route 192.168.23.3 255.255.255.255 192.168.12.2 R3(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2 Если мы собираемся настроить соседство BGP между R1 и R3, нам нужно убедиться, что они могут достигать друг друга. Мы можем использовать статическую маршрутизацию или IGP ... чтобы упростить задачу, на этот раз мы будем использовать статический маршрут. R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.23.3 remote-as 1 R3(config)#router bgp 1 R3(config-router)#neighbor 192.168.12.1 remote-as 1 Примените правильные настройки команды neighbor BGP. И R3 имеет доступ к сети 1.1.1.0 / 24! Итог урока: соседство по IBGP должно быть полным циклом! Другим решением было бы использование route-reflector или confederation. Урок 6 Очередная проблема. R3 является объявляемой сетью 3.3.3.0 / 24 через EBGP, а R2 устанавливает ее в таблицу маршрутизации. R1, однако, не имеет этой сети в своей таблице маршрутизации. Вот конфигурации: Вот конфигурации. Для простоты мы используем IP-адреса физического интерфейса для настройки соседей BGP. Мы можем проверить, что сеть 3.3.3.0 / 24 находится в таблице маршрутизации R2. R1#show ip route bgp Однако в таблице маршрутизации R1 ничего нет. Первое, что мы должны проверить - это таблицу BGP. Мы видим, что он находится в таблице BGP, и * указывает, что это допустимый маршрут. Однако мы не видим символа >, который указывает лучший путь. По какой-то причине BGP не может установить эту запись в таблице маршрутизации. Внимательно посмотрите на следующий IP-адрес прыжка (192.168.23.3). Доступен ли этот IP-адрес? R1 понятия не имеет, как достичь 192.168.23.3, поэтому наш следующий прыжок недостижим. Есть два способа, как мы можем справиться с этой проблемой: Используйте статический маршрут или IGP, чтобы сделать этот next hop IP-адрес доступным. Измените next hop IP-адрес. Мы изменим IP-адрес следующего прыжка, так как мы достаточно изучили применение статических маршрутов и IGPs. R2(config)#router bgp 1 R2(config-router)#neighbor 192.168.12.1 next-hop-self Эта команда изменит IP-адрес следующего перехода на IP-адрес R2. Теперь мы видим символ >, который указывает, что этот путь был выбран как лучший. IP-адрес следующего перехода теперь 192.168.12.2. Ура! Теперь он есть в таблице маршрутизации. Мы уже закончили? Если наша цель состояла в том, чтобы она отобразилась в таблице маршрутизации, то мы закончили...однако есть еще одна проблема. Наш пинг не удался. R1 и R2 оба имеют сеть 3.3.3.0 / 24 в своей таблице маршрутизации, поэтому мы знаем, что они знают, куда пересылать IP-пакеты. Давайте взглянем на R3: R3 получит IP-пакет с пунктом назначения 3.3.3.3 и источником 192.168.12.1. Из таблицы маршрутизации видно, что она не знает, куда отправлять IP-пакеты, предназначенные для 192.168.12.1. Исправим это: R2(config)#router bgp 1 R2(config-router)#network 192.168.12.0 mask 255.255.255.0 Мы будем объявлять сеть 192.168.12.0 / 24 на R2. Теперь R3 знает, куда отправлять трафик для 192.168.12.0 / 24. Проблема устранена! Итог урока: убедитесь, что IP-адрес следующего перехода доступен, чтобы маршруты могли быть установлены в таблице маршрутизации, и чтобы все необходимые сети были достижимы.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59