Есть несколько вопросов о неизменных серверах , таких как:
- Как реализовать шаблон неизменяемого сервера, не теряя возможности делать посмертные?
- Какую роль играют инструменты управления конфигурацией в неизменной инфраструктуре?
Кажется очевидным, что это связано с серверами (эту часть я получаю). И просто переваривая грамматику неизменяемого , я думаю, что это как-то связано с «невозможно отключить звук ». Если это предположение близко, я бы понятия не имел, что именно нельзя отключить (и я сомневаюсь, что это имеет отношение к звуковым картам или чему-то еще ...).
Мои вопросы :
- Что такое «неизменяемые серверы» (в контексте DevOps)?
- Почему они используются?
terminology
immutable-servers
Pierre.Vriens
источник
источник
Ответы:
Неизменяемость - это термин, часто используемый в кругах информатики, который обычно сводится к «невозможно изменить после создания». Обычно он используется для обозначения параллелизма, параллелизма и безопасности потоков.
Обсуждение этой темы увлекательно, но обычно его можно найти в другом месте на Переполнение стека . Я сопротивляюсь желанию погрузиться в это здесь. Ключевая концепция «невозможно изменить после создания».
Представьте себе, если в Amazon вы развернете веб-сервис, запечатав его в образ машины (AMI - предварительно созданный экземпляр, который можно повторно повторно предоставлять). Он подключается к серверной базе данных через учетные данные, которые он получает из реестра при запуске. Это сбрасывает журналы в инструмент регистрации, такой как Splunk. Для нормальной повседневной работы у вас нет причин вставлять ssh в это поле. Если вам нужно увеличить этот сервис, вы просто создаете больше экземпляров этого AMI и настраиваете балансировщик нагрузки. Отказ от этого - просто уничтожение экземпляров и балансировщиков нагрузки.
Для повседневной работы в этом поле нет причин для изменения . Мы можем просто запустить больше от AMI.
Что происходит, когда вам нужно предоставить исправление безопасности на уровне ОС? Это когда у вас есть решение сделать ... вы запекаете новый AMI с установленным патчем и повторно развертываете все запущенные экземпляры, или вы используете ssh в существующие образы и обновляете патч? Есть много людей, которые просто вошли бы сюда. Сторонники «неизменной архитектуры» просто кричали на меня за то, что я даже предполагаю, что такая вещь возможна.
Иммутабилисты (если есть такое слово) выступают за выпечку новых ами. Они выступают за устранение всех причин, по которым ssh мог войти в машину. Они выступают за то, чтобы при запуске этой машины возникала какая-либо конкретная конфигурация машины, извлекая сведения о конфигурации из репозитория. Это высшее выражение «скот, а не домашние животные».
Неизменяемая архитектура - это, в частности, конфигурации машины, которые не имеют причин изменяться после создания образа машины . Если что-то нужно изменить, испеките новый образ экземпляра, закройте старый, вызовите новый.
источник
Облачные технологии сместили границу между аппаратным и программным обеспечением, так что многие технические операции, ранее являвшиеся эксклюзивными гражданами мира аппаратного обеспечения, также являются субъектами программного обеспечения. Совместно используемые вычислительные среды могут быть такими же старыми, как и сами компьютеры 1, но облачные технологии могут популяризировать их, предлагая удобные и знакомые метафоры для взаимодействия с ними: пользователи облака резервируют экземпляр, полный компьютер или имитатор, в то время как в старых общих вычислительных средах есть все возможные наборы. с громоздкими ограничениями и «ваша программа должна быть загружена на этот FTP-сервер, она будет работать в среде X (обычно с 10-летней версией любого программного обеспечения, которое вы хотите использовать), в течение не более 60 минут» может показаться знакомым для бывших или реальных пользователей вычислительных центров.
Практическим следствием этого сдвига является то, что процедуры развертывания теперь могут быть представлены программными артефактами. (Процедуры развертывания - это инструкции, в которых рассказывается, как настроить инфраструктуру с базами данных, веб-серверами или чем-либо, принадлежащим этой инфраструктуре, а также с сетью, в которой они работают.) Благодаря этим новым объективам ручное обслуживание серверов выглядит примерно ручное исправление производственного кода - что только в очень редких случаях желательно. Ручное обслуживание может привести к несоответствиям между системами, фактически работающими в производстве, и кодом, описывающим эти системы, что, в свою очередь, означает невоспроизводимое поведение и невозможный анализ ошибок, двойное исправление ошибок и другие бедствия.
Модель неизменна сервер просто перестановка для облачных операций над мантра, в соответствии с которым мы должны избегать ручного обслуживания запущенных программ. Вместо настройки серверов вручную шаблон неизменяемого сервера рекомендует автоматизировать эту конфигурацию.
Реализация ароматов
Хотя общая идея шаблона неизменяемого сервера достаточно ясна, в реализации много нюансов. Например, некоторые подходы предлагают вообще не обновлять серверы, а вместо этого систематически заменять серверы. Это связано с тем, что обновление приводит к ситуации, когда развертывание состоит из серверов, которые были запущены несколько раз и прошли через несколько отдельных процессов обновления, что подразумевает неоднородный набор серверов и может привести к незначительным различиям в том, как серверы выполняют свои задания. Вторым популярным вариантом является дисциплина, касающаяся удаленного доступа к серверам. Некоторым нравится отключать полностью удаленный административный доступ к серверам, чтобы гарантировать, что ручное обслуживание никогда не происходит.
Историческая справка
Насколько мне известно, термин «неизменный сервер» популяризировался Кифом Моррисом, но сама идея намного старше. В 1999 году тюрьмы FreeBSD уже популяризировали идею полной автоматизации конфигурации одноразовых вычислительных сред. Именно так я начал внедрять шаблон «неизменный сервер» за много лет до того, как услышал это название для описания этой техники.
Неизменность, под видом физической неизменности на основе CD-ROM, также была популярной мерой для производства надежных вычислительных систем. Это не следует путать с неизменным шаблоном сервера.
1 Если мы не считаем автоматические столы станков или роликовые органы компьютерами.
источник
Неизменяемые серверы - это серверы, на которых нельзя вносить изменения (в идеале, кроме обновлений и исправлений безопасности). Вместо того, чтобы менять программное обеспечение на сервере, вы создаете новый сервер с нужным программным обеспечением, а затем завершаете работу старого.
Эта концепция помогает обеспечить идентичность вашего сервера тестирования, разработки и QA-сервера, что важно по нескольким причинам, выходящим за рамки этого вопроса. Еще одним преимуществом неизменных серверов является возможность отката приложения на более старый сервер. Например, мне нужно поменять K на рабочем сервере 1, поэтому я спулингирую сервер 2 и поменяю K. Теперь, через 10 минут, я замечаю, что K что-то сломало в моем приложении, вместо того, чтобы сразу же исправить это, что может занять несколько часов. и потенциально приводя к простоям для моих клиентов, я перенаправляю трафик обратно на сервер 1, пока выясняю, что не так с 2.
источник
Наилучшее объяснение можно найти (как всегда) в статье Мартина Фаулера «bliki» о неизменных серверах .
На сервере, будь то аппаратный или виртуальный сервер в облаке, обычно работает операционная система и приложение.
Часто приложения и компоненты операционной системы требуют настройки и требуют внесения изменений. Например, исправления безопасности, развертывание новых версий приложения и изменения конфигурации.
Когда вы считаете, что любое изменение является мутацией в состоянии сервера, термин
immutable
начинает приобретать больше смысла. Это означает, что на таком сервере не допускаются мутации .Часто люди участвуют в изменении состояния сервера - будь то развертывание версии, изменение конфигурации или путь безопасности. В результате сервер больше не работает, как ожидалось. Например, приложение может не работать сейчас из-за неправильной настройки и т. Д.
Вот почему существует практика создания неизменяемых серверов. В случае неизменяемых серверов создается образ сервера со всеми настройками, исправлениями и версиями приложений, которые затем включаются. Затем этот образ сервера можно использовать для создания серверов в различных средах.
Первой средой, в которой используется такое изображение , будет среда, в которой изображение можно протестировать на работу. Любые аномалии обнаруживаются, и только после этого такое изображение может быть повышен в производственной среде , чтобы заменить серверы там с новой версии (которая , как известно хорошо работать).
После того, как процесс создания изображений и их продвижения автоматизирован, вы получаете очень надежный процесс, который включает в себя очень мало человеческих усилий и очень мало шансов внедрить отказ в вашем сервисе.
Часто неизменяемые серверы даже не включают в себя какой-либо способ их «ввода», например, отсутствует ssh-сервер. В этом случае также часто бывает так, что вся метрология сервера (метрики, журналы) отправляется в системы за пределами, такие как база данных метрик или служба агрегации журналов.
С контейнерами (см .: Docker ) также существует процесс создания изображений, а затем их создания в работающих контейнерах. Они часто заменяются новыми контейнерами, основанными на обновленных изображениях, и никогда не видоизменяются. Это означает, что ни один человек не входит в контейнер, чтобы «что-то исправить» путем внесения изменений.
источник
Давайте начнем с обратного, что такое изменчивый сервер?
Традиционно изменяемая серверная инфраструктура постоянно обновляется и обновляется. Вы можете защитить оболочку, обновить пакеты, настроить ее, установить службы и развернуть новый код. Это то, что делает его изменчивым, вы можете изменить или изменить его.
Неизменяемая инфраструктура - это еще одна инфраструктурная парадигма, в которой серверы никогда не модифицируются после развертывания. Если что-то необходимо обновить, исправить или изменить каким-либо образом, новые серверы, построенные из общего образа с соответствующими изменениями, будут заменены старыми. После проверки они вводятся в эксплуатацию, а старые списываются.
Почему они используются? Преимущества неизменяемой инфраструктуры - это большая согласованность и надежность в вашей инфраструктуре, а также более простой и предсказуемый процесс развертывания, а также устраняет общие проблемы с сервером в изменяемой инфраструктуре, такие как время простоя из-за сбоя сервера или что-то еще.
Но вы должны знать, как эффективно обеспечить его с помощью комплексной автоматизации развертывания и быстрой подготовки сервера.
Представьте, что вы добываете биткойны, вы не хотели бы простоев, если ваш сервер вышел из строя, вам нужно было бы как можно быстрее выполнить его резервное копирование, поэтому предполагается, что решением будет неизменная инфраструктура.
источник