По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Если Вы наконец поняли, что повсюду окружены контейнерами и обнаружили, что они решают массу проблем и имеют много преимуществ: Контейнеры вездесущи - ОС, версии библиотек, конфигурации, папки и приложения помещаются в контейнер. Вы гарантируете, что та же самая задача, которая была протестирована в QA, достигнет производственной среды с таким же поведением. Контейнеры упрощены - объем памяти контейнера невелик. Вместо сотен или тысяч мегабайт контейнер будет выделять память только для основного процесса. Контейнеры быстрые - Вы можете запустить контейнер для начала работы так же быстро, как типичный процесс Linux. Вместо минут можно запустить новый контейнер за несколько секунд. Тем не менее, многие пользователи по-прежнему относятся к контейнерам так же, как к типичным виртуальным машинам, и забывают про важную характеристику: они одноразовые. Мантра о контейнерах: “Контейнеры эфемерны”. Эта характеристика заставляет пользователей поменять свое мышление относительно того, как они должны обращаться с контейнерами и управлять ими; и я объясню, чего НЕ следует делать, чтобы продолжать извлекать наилучшие преимущества контейнеров. 10 вещей, которых следует избегать в Docker контейнерах Не хранить данные в контейнерах - контейнер может быть остановлен, удален или заменен. Приложение версии 1.0, работающее в контейнере, может быть легко заменено версией 1.1 без какого-либо неблагоприятного воздействия или потери данных. Поэтому, если нужно сохранить данные, сделайте это на диске. В этом случае следует также позаботиться о том, чтобы два контейнера записывали данные на один и тот же диск, что может привести к повреждению. Убедитесь, что приложения могут записывать данные в хранилище объектов. Не разделять свое приложение на две части - так как некоторые люди видят контейнеры в роли виртуальной машин и поэтому большинство из них склонны думать, что они должны применять свое приложение только в существующих работающих контейнерах. Это может быть справедливо на этапе разработки, на котором Вам необходимо непрерывно разрабатывать и налаживать процесс; но для непрерывной доставки (CD) в QA и производства, Ваше приложение должно быть частью образа. Помните: Контейнеры нельзя изменить. Не создавать большие образы - большой образ будет труднее распространить. Убедитесь в наличии только необходимых файлов и библиотек для запуска приложения/процесса. Не устанавливайте ненужные пакеты и не запускайте обновления (yum update), которые загружают много файлов на новый слой образы. Не использовать однослойный образ - чтобы эффективно пользоваться многоуровневой файловой системой, всегда создавайте собственный базовый слой образы для операционной системы, а также другой слой для определения имени пользователя, слой для установки во время выполнения, слой для конфигурации и, наконец, слой для приложения. Будет проще воссоздать образ, управлять им и использовать его. Не создавать образы из запущенных контейнеров - другими словами, не используйте слово docker commit для создания образа. Этот способ не приносит пользы, и его следует полностью избегать. Всегда используйте полностью воспроизводимый Dockerfile или любой другой S2I (от источника к изображению) подход, и Вы можете отследить изменения в Dockerfile, если сохранить его в хранилище системы управления версиями (git). Не использовать latest (последний) тег – он подобен SNAPSHOT для пользователей Maven. Метки подключаются из-за слоистой файловой природы контейнеров. Вы ведь не хотите иметь сюрпризы при построении образа несколько месяцев, а потом выяснить, что приложение не может быть запущено, так как родительский слой (из-за Dockerfile) был заменен новой версией, которая не является обратно совместимой, или из кэша сборки была получена неправильная "последняя" версия. Тега latest также следует избегать при применении контейнеров в производстве, так как невозможно отследить, какая версия образа выполняется. Не выполнять более одного процесса в одном контейнере - контейнеры идеально подходят для выполнения лишь одного процесса (HTTP, сервер приложений, база данных), но если имеется более одного процесса, могут возникнуть дополнительные проблемы с управлением, извлечением журналов и обновлением их по отдельности. Не хранить учетные данные в виде образов. Используйте переменные среды, ведь для этого не требуется жестко кодировать имя пользователя/пароль в образе. Используйте переменные среды для получения этой информации вне контейнера. Отличный пример этого принципа - образ Постгреса. Не запускать процессы от имени пользователя root - "По умолчанию docker контейнеры выполняются от имени пользователя root. По мере «взросления» docker контейнеров могут стать доступны секретные по умолчанию параметры. На данный момент требуемый root опасен для других и может быть доступен не во всех средах. Ваш образ должен использовать инструкцию USER, чтобы указать пользователя, не являющегося root, для контейнеров, которые будут запускаться". Не полагайтесь на IP-адреса - каждый контейнер имеет свой собственный внутренний IP-адрес, и он может измениться, если вы запустите и остановите контейнер. Если приложению или микросервису требуется связь с другим контейнером, используйте переменные среды для передачи соответствующего имени хоста и порта из одного контейнера в другой.
img
Существует несколько факторов, которые следует учитывать при реализации решения SD-WAN. Одним из них является мониторинг сети. В этом посте мы рассмотрим некоторые проблемы SD-WAN и то, как мониторинг сети может помочь их преодолеть. Исправление пути и аварийное переключение Одним из преимуществ SD-WAN является исправление пути и автоматическое аварийное переключение. Эта функция доступна, когда маршрутизатор имеет несколько соединений, таких как MPLS, широкополосное соединение или LTE. В этом сценарии трафик можно направлять по разным линиям, что повышает надежность и качество. Например, если канал испытывает большие задержки или потерю пакетов, маршрутизатор может отправлять трафик через другой канал. Некоторые решения SD-WAN даже дублируют пакеты по двум каналам, увеличивая вероятность того, что трафик достигнет другого конца. Эти изменения трафика могут оказать немедленное положительное влияние, но могут отрицательно повлиять на сквозную производительность. Например, маршрутизатор может маршрутизировать трафик через канал с более низкой скоростью, замедляя соединение. В случае дублирования пакетов общая полоса пропускания, доступная пользователям, уменьшается. В результате приложения могут работать медленнее, чем до корректирующего действия, которое заставляет пользователей жаловаться. Устранение проблем такого рода очень сложно без правильной информации. Сквозные сетевые тесты Сквозные сетевые тесты (end-to-end) предоставляют полезные данные для устранения проблем, подобных той, что проиллюстрирована ранее. Для наиболее важных служб и приложений, используемых в удаленном филиале, инструмент сетевого мониторинга должен собирать следующие показатели: Задержка и потеря пакетов на удаленном сервере приложений (пинг по протоколу ICMP или TCP) Джиттер для голосовой и видеосвязи (UDP iperf) Количество сетевых скачков и изменений пути (traceroute / tracepath) Пропускная способность для других сайтов WAN и для Интернета (iperf, NDT и speedtest) Решения SD-WAN могут сообщать о некоторых из этих метрик, но они либо пассивны, либо учитывают только ограниченную часть сети. Обычно это последняя миля, где работают устройства SD-WAN. Инструмент мониторинга сети для SD-WAN учитывает весь сквозной процесс от уровня пользователя до пункта назначения на дальнем конце. Такое решение для мониторинга опирается на активные агенты сетевого мониторинга, которые устанавливаются на периферии как в виде физического, так и виртуального устройства. Сквозные сетевые тесты выполняются непрерывно, а результаты извлекаются в режиме реального времени и сохраняются для исторического просмотра. Мониторинг взаимодействия с конечным пользователем Мониторинг взаимодействия с конечным пользователем является еще одним ключевым элементом решения для мониторинга SD-WAN. Существует множество способов получения опыта конечного пользователя и множество инструментов на рынке, нацеленных на это. Как правило, мониторинг взаимодействия с конечным пользователем включает в себя статистику и показатели уровня приложения, такие как: Время разрешения DNS Время загрузки HTTP Средняя оценка мнения (MOS) для VoIP Показатели производительности WiFi Когда данные о производительности, генерируемые активным агентом мониторинга, соединяются с пассивными данными, полученными устройством SD-WAN, это дает четкое представление о производительности сети. Активные данные полезны для сбора упреждающих предупреждений и устранения неполадок при проблемах производительности в режиме реального времени. Пассивные данные используются, чтобы дать четкое представление о том, как полоса пропускания используется пользователями («ведущими участниками») и приложениями («наиболее эффективными приложениями»), и при необходимости обновлять конфигурацию сети. Сочетание этих двух технологий приводит к уменьшению времени разрешения проблем сети и приложений, повышению производительности и удовлетворенности пользователей.
img
В предыдущих статьях были рассмотрены три обширные задачи, которые должна решать каждая плоскость управления для сети с коммутацией пакетов, и рассмотрен ряд решений для каждой из этих задач. Первой рассматриваемой задачей было определение топологии сети и ее доступности. Во-вторых, вычисление свободных от петель (и, в некоторых случаях, непересекающихся) путей через сеть. Последняя задача- это реакция на изменения топологии, на самом деле представляет собой набор задач, включая обнаружение и сообщение об изменениях в сети через плоскость управления. В этой серии лекций мы объединим эти заждачи и решения путем изучения нескольких реализаций распределенных плоскостей управления, используемых для одноадресной пересылки в сетях с коммутацией пакетов. Реализации здесь выбраны не потому, что они широко используются, а потому, что они представляют собой ряд вариантов реализации среди решений, описанных в предыдущих лекциях. В каждом конкретном случае рассматривается базовая работа каждого протокола; в последующих статьях мы будем углубляться в вопросы сокрытия информации и другие более сложные темы в плоскостях управления, поэтому здесь они не рассматриваются. Классификация плоскости управления Плоскости управления обычно классифицируются по двум характеристикам. Во-первых, они разделяются в зависимости от того, где вычисляются loop-free пути, будь то на передающем устройстве или выключенном. Плоскости управления, в которых фактические коммутационные устройства непосредственно участвуют в расчете loop-free путей, затем разделяются на основе вида информации, которую они несут о сети. Классификация, основанная на алгоритме, используемом для вычисления loop-free путей, отсутствует, хотя это часто тесно связано с типом информации, передаваемой плоскостью управления. В то время как централизованные плоскости управления часто связаны с несколькими (или одним, концептуально) контроллерами, собирающими информацию о достижимости и топологии от каждого коммутационного устройства, вычисляющими набор loop-free путей и загружающими полученную таблицу пересылки на коммутационные устройства, концепция гораздо менее строгая. Ц В более общем смысле централизованная плоскость управления означает просто вычисление некоторой части информации о пересылке где-нибудь, кроме фактического устройства пересылки. Это может означать отдельное устройство или набор устройств; это может означать набор процессов, запущенных на виртуальной машине; это может означать вычисление всей необходимой информации о пересылке или (возможно) большей ее части. Плоскости распределенного управления обычно различаются тремя общими характеристиками: Протокол, работающий на каждом устройстве и реализующий различные механизмы, необходимые для передачи информации о доступности и топологии между устройствами. Набор алгоритмов, реализованных на каждом устройстве, используемый для вычисления набора loop-free путей к известным пунктам назначения. Способность обнаруживать и реагировать на изменения доступности и топологии локально на каждом устройстве. В распределенных плоскостях управления не только каждый прыжок (hop by hop) с коммутацией пакетов, но и каждый прыжок определяет набор loop-free путей для достижения любого конкретного пункта назначения локально. Плоскости распределенного управления обычно делятся на три широких класса протоколов: состояние канала, вектор расстояния и вектор пути. В протоколах состояния канала каждое устройство объявляет состояние каждого подключенного канала, включая доступные пункты назначения и соседей, подключенных к каналу. Эта информация формирует базу данных топологии, содержащую каждое звено, каждый узел и каждый достижимый пункт назначения в сети, через который алгоритм, такой как Dijkstra или Suurballe, может быть использован для вычисления набора loop-free или непересекающихся путей. Протоколы состояния канала обычно заполняют свои базы данных, поэтому каждое устройство пересылки имеет копию, которая синхронизируется с каждым другим устройством пересылки. В протоколах вектора расстояния каждое устройство объявляет набор расстояний до известных достижимых пунктов назначения. Эта информация о достижимости объявляется конкретным соседом, который предоставляет векторную информацию или, скорее, направление, через которое может быть достигнут пункт назначения. Протоколы вектора расстояния обычно реализуют либо алгоритм Bellman-Ford, либо алгоритм Garcia-Luna’s DUAL, либо аналогичный алгоритм для расчета маршрутов без петель в сети. В протоколах вектора пути, путь к пункту назначения, записывается по мере того, как объявление о маршрутизации проходит через сеть, от узла к узлу. Другая информация, такая как показатели, может быть добавлена для выражения некоторой формы политики, но первичный, свободный от петель, характер каждого пути вычисляется на основе фактических путей, по которым объявления проходят через сеть. На рисунке 1 показаны эти три типа распределенных плоскостей управления. На рисунке 1: В примере состояния связи- вверху каждое устройство объявляет, что оно может достичь любе друге устройство в сети. Следовательно, A объявляет достижимость B, C и D; в то же время D объявляет достижимость 2001:db8:3e8:100::/64 и C, B и A. В примере вектора расстояния - в середине D объявляет достижимость до 2001:db8:3e8:100:: 24 до C с его локальной стоимостью, которая равна 1. C добавляет стоимость [D,C] и объявляет достижимость до 2001:db8:3e8:100::64 со стоимостью 2 до B. В примере вектора пути - внизу D объявляет о достижимости до 2001:db8:3e8:100::/24 через себя. C получает это объявление и добавляет себя к [D,C]. Плоскости управления не всегда аккуратно вписываются в ту или иную категорию, особенно когда вы переходите к различным формам сокрытия информации. Некоторые протоколы состояния канала, например, используют принципы вектора расстояния с агрегированной информацией, а протоколы вектора пути часто используют некоторую форму расположения метрик вектора расстояния для увеличения пути при вычислении loop-free путей. Эти классификации - централизованный, вектор расстояния, состояние канала и вектор пути - важны для понимания и знакомства с миром сетевой инженерии.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59