Вопрос: Какие функции системного администратора должны знать каждый программист?


Как программист, мы склонны воспринимать системных администраторов как должное. Несколько раз, когда я был без хорошего сисадмина, я действительно оценил то, что вы, ребята, делаете. Когда мы отправляемся в среду без системного администратора, какие слова мудрости вы можете нам предложить?


96


Источник




Ответы:


Я бы начал с:

  1. Всегда есть резервная система. Еще лучше, если у него есть история.
  2. Рассмотрите отдельные моменты неудачи и как справиться с ними, если они потерпят неудачу.
  3. В зависимости от количества задействованных компьютеров взгляд на способ создания и создания стандартного образа на компьютерах облегчит жизнь каждому - нет «он работает на моем», потому что у них есть такая-то программа, которая обычно не установлена.
  4. Документируйте все, хотя бы потому, что вы будем забыть, как вы что-то придумали.
  5. Следите за обновлениями безопасности.

70



документирование всех шагов - это то, что я видел, хорошие системные администраторы, и я начал делать это сам. Очень полезно. - Nathan DeWitt
Рассмотрим системы самодокументирования. Например, зачем хранить список имен хостов в текстовом файле или вики где-нибудь, когда хорошо прокомментированный файл Zone является каноническим источником информации. - Dave Cheney
Дэйв, это хорошо прокомментированный файл зоны, доступный для всех? Если я новый человек, входящий на борт, вам не легче сказать «перейдите к этой вики для всех ваших ответов», а не «все документировано повсюду». DNS задокументирован в настройках DNS. Whozit зарегистрирован в whozit config. База данных задокументирована в файле конфигурации базы данных. " Это кажется очень ... недружественным для меня. - Nathan DeWitt
Натан, Дэйв: Трюк, конечно же, должен использовать скрипт для обновления вики из канонического источника. Это чудесно для меня, мне очень жаль, что я не могу использовать его там, где я сейчас работаю. - Anders Eurenius
Я бы добавил к этому: Построить тестовую систему. Вам нужна среда, где отказ возможен. У меня есть сервер, на котором работает VirtualBox, но я использовал свою личную рабочую станцию, когда серверы недоступны - Mark Porter


<вставить большой отказ от ответственности здесь>

Некоторые из них были упомянуты раньше, но это стоит повторить.

Документация:

  • Документируйте все. Если у вас его нет, установите под-радарную вики, но убедитесь, что вы его поддерживаете. Начните с сбора фактов, и в один прекрасный день сформируется большая картина.

  • Создавайте диаграммы для каждого логического блока и обновляйте их. Я не мог подсчитать количество раз, когда была сохранена точная карта сети или диаграмма кластера.

  • Храните журналы сборки для каждой системы, даже если это просто скопировать и вставить команды для ее создания.

  • При создании вашей системы установите и настройте приложения, протестируйте их и выполните бенчмаркинг. Теперь вытрите диски. Шутки в сторону. 'dd' первый мегабайт с передней части дисков или иначе сделать коробку не загружаемой. Часы тикают: докажите, что ваша документация может перестроить его с нуля (или, что еще лучше, доказать, что ваш коллега может ничего больше, чем ваша документация). Это составит половину вашего плана аварийного восстановления.

  • Теперь у вас есть первая половина вашего плана аварийного восстановления, запишите остальные; как восстановить состояние вашего приложения (восстановить файлы с ленты, перезагрузить базы данных из дампов), сведения о поставщике / поддержке, требования к сети, как и где получить заменяющее оборудование - все, что вы можете придумать, поможет восстановить вашу систему.

Автоматизация:

  • Автоматизируйте как можно больше. Если вам нужно сделать что-то три раза, убедитесь, что второе потрачено на разработку вашей автоматизации, поэтому третий полностью автоматизирован. Если вы не можете автоматизировать его, запишите его. Там есть комплекты автоматизации - посмотрите, можете ли вы заставить их работать на вас.

Мониторинг:

  • Прикладное оборудование - чистое золото. Возможность просматривать транзакции, проходящие через систему, значительно облегчает отладку и устранение неполадок.

  • Создавайте сквозные тесты, которые доказывают не только то, что приложение живое, но и делает то, что он должен. Очки зачисляются, если их можно подключить к системе мониторинга для целей оповещения. Это служит двойной обязанности; помимо проверки работы приложения, он значительно упрощает обновление системы (мониторинг системных отчетов зеленый, обновление, время, чтобы вернуться домой).

  • Контролируйте, контролируйте и собирайте показатели по всему, что подходит для этого. Тесты говорят вам, когда ожидать, что что-то выпустит волшебный дым. Мониторинг сообщает вам, когда он есть. Показатели и статистика облегчают получение нового набора (со свежим магическим дымом) через управление.

  • Если у вас нет системы мониторинга, выполните ее. Бонусные баллы, если вы действительно используете эти сквозные тесты.

Безопасность:

  • «chmod 777» (он же предоставляет все права доступа / привилегии) ​​никогда не является решением.

  • Подпишитесь на принцип «наименьших бит»; если он не установлен, не скопирован или не живет на диске, он не может быть скомпрометирован. «Установка кухонной раковины» и установки программного обеспечения могут облегчить жизнь на этапе сборки, но в конечном итоге вы платите за нее.

  • Знайте, для чего нужен каждый открытый порт на сервере. Регулярно проверяйте их, чтобы не появляться новые.

  • Не пытайтесь очистить взломанный сервер; его нужно перестроить с нуля. Перестройте на резервный сервер со свеже загруженным носителем, восстановив только данные из резервных копий (поскольку могут быть скомпрометированы двоичные файлы) или клонируйте скомпрометированный хост где-то изолированным для анализа, чтобы вы могли перестроить его в том же комплекте. Во всем этом есть целый законный кошмар, так что ошибайтесь на стороне сохранения, если вам нужно заниматься юридическими средствами. (Примечание: IANAL).

Оборудование:

  • Никогда не предполагайте, что что-то будет делать то, что он говорит на коробке. Докажите, что он делает то, что вам нужно, на всякий случай, если это не так. Вы обнаружите, что говорите «он почти работает» чаще, чем вы ожидали.

  • Не экономьте на удаленном аппаратном управлении. Последовательные консоли и управление огнями следует считать обязательными. Бонусные очки для дистанционно управляемых силовых полос для тех случаев, когда у вас нет опций.

(Кроме того: Есть два способа исправить проблему в 3 часа ночи, один из них - быть теплым, работать на ноутбуке через VPN в вашей пижаме, другой - толстый куртка и диск в центре обработки данных / офисе. Я знаю, какой из них я предпочитают.)

Управление проектом:

  • Вовлекайте людей, которые будут поддерживать систему с первого дня жизненного цикла проекта. Время выполнения на наборе и времени в мозге может и будет удивлять, и нет сомнений, что они будут (должны?) Иметь стандарты или требования, которые станут зависимыми от проекта.

  • Документация является частью проекта. Вы никогда не получите время, чтобы написать все это после закрытия проекта, и система перешла на обслуживание, поэтому убедитесь, что она включена в качестве усилий по расписанию в начале.

  • Внедрить запланированное устаревание в проект с первого дня и начать цикл обновления за шесть месяцев до дня отключения, указанного в проектной документации.

Серверы имеют определенный срок службы, когда они подходят для использования в производстве. Конец этой жизни обычно определяется как всякий раз, когда продавец начинает взимать больше в ежегодном обслуживании, чем это потребуется для обновления набора, или около трех лет, в зависимости от того, что меньше. По прошествии этого времени они отлично подходят для сред разработки / тестирования, но вы не должны полагаться на них, чтобы управлять бизнесом. Пересмотр среды на 2 1/2 года дает вам достаточно времени, чтобы перепрыгнуть через необходимые управленческие и финансовые обручи для заказа нового набора и провести плавную миграцию, прежде чем отправлять старый комплект крупному вендору в небе.

Разработка:

  • Убедитесь, что ваши системы разработки и постановки напоминают производство. Технологии VM или другие технологии виртуализации (зоны, LDOM, vservers) делают клоны производства реального мира в каждом чувстве, но эффективны.

Резервные копии

  • Данные, которые вы не создаете резервную копию, - это данные, которые вы не хотите. Это непреложный закон. Убедитесь, что ваша реальность соответствует этому.

  • Резервные копии сложнее, чем они выглядят; некоторые файлы будут открытыми или заблокированными, тогда как другие должны быть готовы к тому, чтобы иметь какую-либо надежду на восстановление, и все эти проблемы необходимо решить. В некоторых пакетах резервного копирования есть агенты или другие методы обработки открытых / заблокированных файлов, а другие пакеты - нет. Сбрасывание баз данных на диск и поддержка этих показателей считается одной из форм «quiescing», но это не единственный метод.

  • Резервные копии бесполезны, если они не протестированы. Каждые несколько месяцев извлекайте случайную ленту из архивов, убедитесь, что на ней действительно есть данные, и данные согласованы.

И самое важное...

Выберите свои режимы сбоев, или Мерфи будет ... и Мерфи не будет работать по вашему графику.

Дизайн для отказа, документируйте слабые стороны каждой системы, что их запускает и как восстановить. Все будет иметь значение, если что-то пойдет не так.


44



+1 Как будто кто-то заглянул мне в голову - и это было прекрасно; - Oskar Duveborn
«Бенчмарк, отслеживайте и собирайте показатели по всему, что все в порядке. Benchmarks расскажет вам, когда ожидать, что что-то выпустит волшебный дым. Мониторинг сообщает вам, когда он есть. Метрики и статистика облегчают получение нового набора (со свежей магией дым) через управление ».  Чистое золото - T.J. Crowder


Не думайте, что это легко. Я знаю многих программистов, которые думают, что только потому, что они могут настроить IIS или Apache, там dev, чтобы они могли запускать веб-ферму. Понимайте, что включает в себя работа и выполняете ваши исследования и планирование, не просто думайте, что работа с системным администратором - это легкая вещь, которую вы можете сделать за 10 минут, чтобы развернуть свое приложение.


43



+1 для этого. Это не потому, что мы делаем это смотреть легко, что это на самом деле. - Gert M
Как универсалист, занимающийся администрированием и программированием, я полностью понимаю ваше положение. +1 - Avery Payne
Конечно, это происходит, я нашел несколько типов системных администраторов, которые действительно не понимают разницы между типами сценариев и небольшими программными программами, которые мы все можем сбить и «настоящим» программированием. - Rob Moir
+1 Роберт: Или системный администратор, говорящий «это простое утверждение», чтобы обход плохо спроектированной сетевой архитектуры. Взаимное уважение и понимание являются ключевыми. - Steven Evers


  • Поймите, что, к лучшему или худшему, многие из серверов и / или сетевого оборудования они, как правило, очень похожи на детей из второй семьи. Это их дети.  Они склонны к ним, помогают им, когда они болят, и внимательно следят за ними. Эта не должен таким образом, но после многих лет, это часто, Помните об этом, когда вы сообщаете им о своих проблемах, связанных с неправильным функционированием оборудования или ожиданием. И если вы получите ответ, который вы не понимаете, попробуйте фильтровать его через это мировоззрение.
  • Будьте на хороших рабочих условиях. Звучит сыро, но это стоит своего веса в золоте. Когда-нибудь вам понадобится особая услуга. И когда-нибудь этот системный администратор будет рад выйти из своего пути, чтобы сделать жизнь немного легче для вас, только один раз.
  • Эти рабочие отношения идут в обоих направлениях. Если sysadmin очень занят, и вы можете сделать жизнь немного легче, написав небольшой скрипт или программу, тогда сделайте это! Они оценят это больше, чем вы знаете.
  • Будьте предельно ясны. «Это отстой» не так ясно, как «наличие прерывистого сетевого соединения немного раздражает, любой шанс вы можете посмотреть на него?»
  • Если вы считаете, что ваше приложение будет масштабироваться, спросите администратора до при условии, это будет. Они могут «видеть» то, что у вас нет, или знать что-то о пределах производительности оборудования, которое вы собираетесь развернуть.
  • Если ваше приложение нуждается в настройке, но это не проблема кода, спросите о том, как работают серверы. Сисадмины с любовью заботятся о своих машинах и не радуются, когда они «болят» или «плохо себя ведут». Запрашивая красиво, он превратит больную машину вокруг (или закроет ее / заменит).
  • (как упоминалось выше) документируйте настройки, которые вы используете, и Зачем вы их используете. Простое «установить checkbox X» или «uncomment config file line Y» не помогает. Вы можете установить параметр, который удаляет все ваши данные при следующей перезагрузке для всего, что вам известно.
  • Если у вас нет времени для документирования настроек на бумаге, попробуйте записать его в систему, если это возможно. В конфигурационных файлах это должно быть практически стандартным - каждое изменение настроек должно быть датировано, с инициалами, ожидаемым эффектом этого параметра и причиной Зачем он был изменен (см. предыдущий пункт). Эта маленькая привычка спасла мой бекон не один раз во время хруста. «Почему мы это сделали?» «Потому что мы назначили политику X, а настройка Y дает нам поведение, которое нам необходимо для политики X».
  • Пиво. Или Кола. Или даже вода. Напитки всегда приветствуются. Быть сисадмином - это жаждущая работа.

27



Для проблемы с документацией / изменением файла конфигурации я рекомендую поместить все файлы конфигурации в систему управления версиями. Это должно быть очень просто для программистов, поскольку они, надеюсь, уже используют такую ​​систему для своего исходного кода. Если они также добавляют комментарий, когда они совершают изменения, будет легко вернуться в историю и посмотреть, что изменилось, когда и почему. - Anders Sandvig
+1 для этого, поскольку он «закрывает цикл» в управлении изменениями. Отличное предложение. - Avery Payne
Отличное предложение для получения четких отчетов об ошибках. Ничто не разочаровывает меня больше, чем после того, как мне сказали, что есть проблема, и зная, что это может повлиять на многих людей, я должен дразнить детали от незаинтересованного программиста - Dave Cheney


Безопасность не является запоздалой мыслью. Хотя взломанное приложение может заставить программиста выглядеть некомпетентным, это (по крайней мере) потерянный уик-энд провел проверку, очистку и / или восстановление из резервных копий для sysadmin.

В этом случае не рассматривайте резервные копии как контроль версий. Они предназначены для аварийного восстановления и не предназначены для восстановления вашего кода, потому что вы забыли, что изменили.

И прекратите слепо обвинять Windows Updates в том, что ваш код сломан. Мне все равно, что это сработало, скажите мне, почему это не работает сейчас - тогда мы можем видеть, чья это вина.


23





Как отладить сетевые проблемы и посмотреть, как ваша программа запускается с помощью инструментов sysadmin. Как программист, который начал работать в системном администрировании, я поражен тем, как бессильно многие программисты становятся когда-то сетевыми «просто останавливаются».

  • Wireshark, чтобы посмотреть, как ваш код запускается в режиме черного ящика, пакет за пакетом
  • Инструменты для непосредственного подключения к сетевым службам:
    • Telnet, netcat или socat для простых соединений через TCP или UDP
    • OpenSSL за то же самое с шифрованием (подсказка: попробуйте openssl s_client -connect target-host:port когда-то), для ручного подключения к сетевым службам
  • dig (в пакете BIND 9) для отладки разрешения имен
  • Возможность сообщить, какая часть сетевого стека оказалась неудачной на основе синхронизации и других характеристик отказавшего соединения
  • возможно HTTPFox и / или Firebug

17



+1. Любой разработчик, создающий приложение, зависящее от полной производительности сети, должен прочитать «TCP / IP Illustrated v1», покойный великий В. Ричард Стивенс, прежде чем начинать кодирование. - Murali Suriar
Спасибо за все ребята. Это заставляло меня на долгие годы видеть программистов в беспомощном состоянии, как только базовая сеть терпит неудачу. И в наши дни почти все программирование - это сетевое программирование. - jhs


Узнайте, как устранить проблемы.

Очень легко передать доллар (например, ваша сеть связывает мое сообщение с базой данных). Это может быть ошибка сети, но у вас должны быть журналы приложений с ошибками, которые при использовании Google или SO могут выявить проблему в конфигурации приложения.

Всем нравится обвинять аппаратное обеспечение, ОС или сеть, поэтому, если вы попрактиковаетесь в более тщательной осмотрительности, вы сделаете системного администратора счастливым человеком. Потому что, если ничего другого, вы можете указать их в определенном направлении относительно того, что может быть неправильным (в отличие от того, чтобы сказать «ваша сеть сосет» или что-то в равной степени полезно).


14



Абсолютно. Я не могу засчитывать часы, которые я потратил на поиск проблем в неправильных местах из-за того, что люди указывали на меня в неправильно направление - Gert M


Документируйте все, что сможете. Не могу сказать, сколько раз последний системный администратор думал, что было бы мило, чтобы не документировать что-то для «безопасности работы», или кто-то просто хотел войти и выйти. Так же, как программист должен оставлять хорошие комментарии, системные администраторы должны документировать. Диаграмма топологии тоже была бы хороша.


8