Русский
Русский
English
Статистика
Реклама

Блог компании dataline

Как ELK помогает инженерам по ИБ бороться с атаками на сайты и спать спокойно

22.10.2020 14:22:35 | Автор: admin
Наш центр киберзащиты отвечает за безопасность веб-инфраструктуры клиентов и отбивает атаки на клиентские сайты. Для защиты от атак мы используем файрволы веб-приложений FortiWeb (WAF). Но даже самый крутой WAF не панацея и не защищает из коробки от целевых атак.

Поэтому в дополнение к WAF мы используем ELK. Он помогает собирать все события в одном месте, копит статистику, визуализирует ее и позволяет нам вовремя видеть направленную атаку.

Сегодня расскажу подробнее, как мы скрестили ёлку с WAF и что из этого получилось.




История одной атаки: как все работало до перехода на ELK

В нашем облаке у заказчика развернуто приложение, которое стоит за нашим WAF. В день к сайту подключались от 10 000 до 100 000 пользователей, количество подключений доходило до 20 млн. в день. Из них 3-5 пользователей были злоумышленниками и пытались взломать сайт.

Обычный брутфорс формы с одного IP-адреса FortiWeb блокировал достаточно легко. Количество обращений к сайту в минуту было больше, чем у легитимных пользователей. Мы просто настраивали пороги активности с одного адреса и отражали атаку.

Куда сложнее бороться с медленными атаками, когда злоумышленники действуют не спеша и маскируются под обычных клиентов. Они используют много уникальных IP-адресов. Такая активность не выглядела для WAF как массовый брутфорс, отследить ее автоматически было сложнее. А еще был риск заблокировать нормальных пользователей. Мы искали другие признаки атаки и настраивали политику автоматической блокировки IP-адресов по этому признаку. Например, у многих нелегитимных сессий обнаруживались общие поля в заголовках http-запроса. Искать такие поля часто приходилось вручную в журналах событий FortiWeb.

Получалось долго и неудобно. В стандартной функциональности FortiWeb события записываются текстом в 3 разных журнала: обнаруженные атаки, информация о запросах и системные сообщения о работе WAF. За минуту могут приходить десятки, а то и сотни событий об атаках.

Не так уж и много, но приходится вручную лазить по нескольким журналам и перебирать много строк:


В журнале атак видим адреса пользователей и характер активности.

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


Выделенные поля помогают обнаружить медленную атаку. Источник: скрин с сайта Fortinet.

Ну и самая главная проблема разобраться в этом может только специалист по FortiWeb. Если в рабочее время мы еще могли отслеживать подозрительную активность в реальном времени, то расследование ночных инцидентов могло затянуться. Когда политики FortiWeb по какой-то причине не срабатывали, дежурные инженеры ночной смены не могли оценить ситуацию без доступа к WAF и будили специалиста по FortiWeb. Мы просматривали журналы за несколько часов и находили момент атаки.

С такими объемами информации сложно понять общую картину с первого взгляда и действовать на опережение. Тогда мы решили собирать данные в одном месте, чтобы анализировать все в наглядном виде, находить начало атаки, выявлять ее направление и метод блокировки.

Из чего выбирали


В первую очередь мы смотрели на уже используемые решения, чтобы не множить сущности без необходимости.

Одним из первых вариантов был Nagios, который мы используем для мониторинга инженерной инфраструктуры, сетевой инфраструктуры, оповещения о нештатных ситуациях. Безопасники тоже ее используют для оповещений дежурных при подозрительном трафике, но она не умеет собирать разрозненные журналы и поэтому отпадает.

Был вариант агрегировать все с помощью MySQL и PostgreSQL или другой реляционной базы. Но, чтобы вытаскивать данные, нужно было лепить свое приложение.

В качестве коллектора логов в нашей компании также используют FortiAnalyzer от Fortinet. Но в этом кейсе он тоже не подошел. Во-первых, он больше заточен для работы с межсетевым экраном FortiGate. Во-вторых, не хватало многих настроек, а взаимодействие с ним требовало отменного знания SQL-запросов. Ну и в-третьих, его использование увеличило бы стоимость сервиса для заказчика.

Вот так мы и пришли к опенсорсу в лице ELK.

Почему выбрали ELK


ELK это комплекс программ с открытым кодом:

  • Elasticsearch база данных временных рядов, которая как раз создавалась для работы с большими объемами текста;
  • Logstash механизм сбора данных, который может конвертировать журналы в нужный формат;
  • Kibana хороший визуализатор, а также достаточно дружелюбный интерфейс для управления Elasticsearch. Можно с его помощью построить графики, за которыми могут наблюдать дежурные инженеры по ночам.

Порог входа в ELK невысокий. Все основные возможности бесплатные. Что еще нужно для счастья.

Как собрали это все в единую систему


Сформировали индексы и оставили только нужную информацию. Мы загрузили все три журнала FortiWEB в ELK на выходе получились индексы. Это файлы со всеми собранными журналами за период, например, сутки. Если бы мы сразу их визуализировали, то увидели бы только динамику атак. За подробностями нужно проваливаться в каждую атаку и смотреть конкретные поля.



Мы поняли, что для начала нужно настроить разбор неструктурированной информации. Взяли длинные поля в виде строк, например, Message и URL, и распарсили их, чтобы получить больше информации для принятия решений.
Например, с помощью парсинга мы вынесли отдельно местоположение пользователя. Это помогло сразу выделить атаки из-за рубежа на сайты для российских пользователей. Блокируя все подключения из других стран, мы уменьшили количество атак в 2 раза и могли спокойно разбираться с атаками внутри России.

После парсинга стали искать, какую информацию хранить и визуализировать. Оставлять в журнале все было нецелесообразно: размер одного индекса был большим 7 Гб. ELK требовалось много времени для обработки файла. При этом не вся информация была полезной. Что-то дублировалось и занимало лишнее место нужно было оптимизировать.

Сначала мы просто просматривали индекс и удаляли ненужные события. Это оказалось еще неудобнее и дольше, чем работа с журналами на самом FortiWeb. Единственный плюс от ёлки на этом этапе мы смогли визуализировать большой промежуток времени на одном экране.

Мы не отчаивались, продолжали есть кактус изучать ELK и верили, что сумеем вытянуть необходимую информацию. После очистки индексов начали визуализировать что есть. Так мы пришли к большим дашбордам. Понатыкали виджетов наглядно и нарядно, настоящая ЁLKа!



Зафиксировали момент атаки. Теперь нужно было понять, как на графике выглядит начало атаки. Для ее обнаружения мы смотрели на ответы сервера пользователю (return codes). Нас интересовали ответы сервера с такими кодами (rc):

Код (rc)
Название
Описание
0
DROP
Запрос к серверу блокируется
200
Ok
Запрос успешно обработан
400
Bad Request
Ошибочный запрос
403
Forbidden
Отказ авторизации
500
Internal Server Error
Сервис недоступен


Если кто-то начинал атаковать сайт, менялось соотношение кодов:

  • Если ошибочных запросов с кодом 400 становилось больше, а нормальных запросов с кодом 200 оставалось столько же, значит кто-то пытался взломать сайт.
  • Если при этом запросы с кодом 0 тоже росли, значит политики FortiWeb тоже видели атаку и применяли к ней блокировки.
  • Если увеличивалось количество сообщений с кодом 500, значит сайт недоступен для этих IP-адресов тоже своего рода блокировка.

К третьему месяцу мы настроили дашборд для отслеживания такой активности.



Чтобы не мониторить все вручную, настроили интеграцию с Nagios, который с определенной периодичностью опрашивал ELK. Если фиксировал достижение пороговых значений по кодам, отправлял уведомление дежурным о подозрительной активности.

Совместили 4 графика в системе мониторинга. Теперь было важно увидеть на графиках момент, когда атака не блокируется и нужно вмешательство инженера. На 4 разных графиках наш глаз замыливался. Поэтому мы совместили графики и стали наблюдать за всем на одном экране.

На мониторинге мы следили, как меняются графики разных цветов. Всплеск красного цвета показывал, что атака началась, а оранжевый и синий графики демонстрировали реакцию FortiWeb:


Тут все хорошо: был всплеск красной активности, но FortiWeb справился и график атаки сошел на нет.

Также мы нарисовали для себя пример графика, который требует вмешательства:


Здесь мы видим, что FortiWeb повысил активность, но красный график атаки не снизился. Нужно поменять настройки WAF.

Расследовать ночные инциденты тоже стало проще. На графике сразу видно момент, когда пора прийти на защиту сайта.


Вот что иногда происходит ночью. Красный график началась атака. Синий активность FortiWeb. Атака заблокировалась не до конца, пришлось вмешаться.

Куда стремимся


Сейчас мы обучаем дежурных администраторов работать с ELK. Дежурные учатся оценивать ситуацию на дашборде и принимают решение: пора эскалировать на специалиста по FortiWeb, или политик на WAF хватит для автоматического отражения атаки. Так мы снижаем нагрузку на инженеров ИБ по ночам и делим роли в поддержке на уровне систем. Доступ к FortiWeb остается только у центра киберзащиты, и только они вносят изменения в настройки WAF при острой необходимости.

Также мы работаем над отчетностью для заказчиков. Планируем, что данные о динамике работы WAF будут доступны в личном кабинете клиента. ELK сделает ситуацию прозрачнее без необходимости обращаться к самому WAF.

Если заказчик захочет сам наблюдать за своей защитой в реальном времени, ELK тоже пригодится. Доступ к WAF мы отдать не можем, так как вмешательство заказчика в работу может повлиять на остальных. А вот поднять отдельный ELK и отдать поиграться можно.

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

Из грязи в RPKI-князи-1. Подключаем валидацию маршрутов в ВGP

10.12.2020 12:12:32 | Автор: admin

Привет! Я работаю старшим сетевым инженером в компании DataLine, занимаюсь сетями с 2009 года и успел со стороны понаблюдать, как компании подвергались атакам из-за уязвимости протокола маршрутизации BGP. Один BGP Hijacking чего стоит: пару лет назад хакеры с помощью перехвата BGP-маршрутов украли 137 тыс. долларов.

С переходом на удаленку компании организуют доступ из дома через защищенные соединения с помощью NGFW, IPS/IDS, WAF и прочих решений. Но про безопасность BGP порой забывают. Я расскажу в цикле статей, как каждый клиент сервис-провайдера может обезопасить себя с помощью RPKI средства защиты глобальной маршрутизации в сети Интернет. В первой статье на примере объясню, как это работает и как настроить защиту на стороне клиента в пару кликов. Во второй поделюсь опытом внедрения RPKI в BGP на примере маршрутизаторов Cisco.

Что важно знать про RPKI, и при чем тут холодильник

RPKI (Resource Public Key Infrastructure) это специализированная инфраструктура открытых ключей. Она помогает доказать подлинность ресурса в интернете, а также право ресурсодержателя использовать ресурсы и передавать информацию о ресурсах операторам связи.

Можно сравнить эту инфраструктуру с холодильником в общежитии или офисе. Вы получаете право пользоваться общим холодильником (интернетом), складываете еду на определенную полку (публикуете ресурсы), но обязаны определенным образом подписывать еду, чтобы ее не забрал кто-то еще.

Так и тут. RPKI использует для подписей профиль сертификата X.509 PKI, который описан в RFC3779. Операторы связи с его помощью принимают безопасные решения о маршрутизации ресурсов в сети Интернет. Чтобы увидеть, как они это делают, напомню про иерархию выделения ресурсов в интернете:

Ресурсы последовательно выделяют несколько организаций:

IANA (Internet Address Number Authority) администрация адресного пространства интернета. Интернет-ресурсы изначально принадлежат IANA, она управляет пространствами IP-адресов для доменов верхнего уровня. Она же присваивает номера для автономных систем (AS) систем IP-сетей и маршрутизаторов, которыми управляют операторы связи. Эти номера AS необходимы для маршрутизации.

RIR (Regional Internet Registry) региональные интернет-регистраторы, IANA распространяет ресурсы через них. Всего их 5 для разных регионов RIPE NCC, ARIN, APNIC, AfriNIC, LACNIC.

LIR (Local Internet Registry) локальные интернет-регистраторы, как правило, крупные сервис-провайдеры. RIR распространяет ресурсы на LIRы, которые уже распределяют их между своими клиентами.

Такая же архитектура у RPKI. После каждого распределения ресурсов создается сертификат, подписанный ключом вышестоящей организации. IANA выпускает сертификаты для доверенных RIR, а они для доверенных LIR.

Сертификаты хранятся в базе данных, по которой можно проверять достоверность информации. Базы данных расположены на публичных репозиториях RPKI у всех RIR на так называемых "точках доверия", или Trust Anchors.

Тут в игру вступают владельцы ресурсов в интернете. Чтобы подтвердить безопасность ресурсов, они создают с помощью сертификатов криптографически заверенные объекты, или ROA.

ROA (Route Origin Authorisation) это объект c цифровой подписью, который подтверждает, что конкретная AS имеет право быть источником какого-то маршрута и анонсировать его в интернете. Запись ROA имеет 3 параметра:

  • номер AS, которая является источником маршрута;

  • префикс и его длина (это IP-адрес с маской: xxx.xxx.xxx.xxx/yy);

  • максимальная длина префикса.

С помощью максимальной длины префикса указывается, может ли данная AS анонсировать более специфичный маршрут. По умолчанию это запрещено, и длина префикса равна максимальной длине. Это значит, что анонс префикса с более длинной маской будет считаться неавторизованным.

Следовательно, при проверке подлинности любой префикс можно сравнить с ROA и задать ему три состояния:

  • VALID для префикса есть ROA, и анонс маршрута совпадает по всем параметрам с референсными значениями в ROA. AS в AS_PATH совпадает с AS в записи ROA, префикс тоже как в ROA, а его максимальная длина больше или равна длине маски в анонсе.

  • INVALID для префикса есть ROA, но анонс маршрута не совпадает по одному из параметров в ROA.

  • UNKNOWN значит, что запись ROA для префикса отсутствует в Trust Anchor вашего RIR. Это возможно, если префиксы еще не завалидированы. Пока все только переходят на RPKI, многие операторы связи применяют мягкие политики и доверяют таким префиксам. При жесткой политике безопасности префикс UNKNOWN будет отклонен маршрутизатором.

Разберем проверку префикса на примере. Допустим, у меня есть префикс х.х.х.х/22, который маршрутизируется в сети Интернет и анонсируется из моей AS N. Изначально я не создал для него записи ROA. Раз запись о префиксе отсутствует в Trust Anchor, анонс префикса будет иметь статус UNKNOWN.

Далее я создал для него запись ROA c параметрами: AS N, префикс х.х.х.х/22, максимальная длина префикса /23. Теперь от имени своей AS N я могу проанонсировать апстрим-провайдерам этот префикс /22 или же две /23 подсети, которые входят в /22 подсеть. Такой анонс будет иметь статус VALID.

Если же я проанонсирую /24 от имени AS N или префикс /22 (/23+/23) от имени AS P, то такой анонс будет иметь статус INVALID. Допустим, нам необходимо проанонсировать подсеть /24 из более крупного блока адресов, который уже анонсируется в глобальную сеть. Значит, в записи ROA для более крупной подсети нужно изменить параметр максимальной длины префикса или создать для нее свой ROA.

Проверка подлинности маршрутов на маршрутизаторах происходит одним из способов:

  1. Проверка самим маршрутизатором по прямой RPKI-сессии.

  2. Загрузка на маршрутизатор готовой базы данных с локального кэш-сервера RPKI.

Первый способ требует выполнения на маршрутизаторе сложных криптографических вычислений. Он не рекомендован к использованию из-за своей ресурсоемкости для маршрутизатора.

Второй способ не требует таких больших затрат. Локальный кэш-сервер RPKI загружает в себя базу ROA со всех установленных Trust Anchors по протоколу RSYNC или RRDP и поддерживает ее в актуальном состоянии. Локальный RPKI-сервер на основе своей базы данных ROA генерирует базу данных для маршрутизатора. Каждая запись базы содержит упрощенный вариант ROA, и эта база передается на маршрутизатор по протоколу RPKI-RTR. По умолчанию это TCP-порт 8282. По этим данным на маршрутизаторе настраиваются политики для маршрутизации полученных префиксов.

Как завалидировать свои префиксы

Допустим, вы клиент сервис-провайдера. У вас есть своя AS с парой /24 блоков IP-адресов, вы пиритесь по eBGP со своим провайдером, full view от него не получаете, других пирингов у вас нет. Вам приходит письмо, что провайдер внедряет на своей стороне систему валидации префиксов на основе RPKI и просит завалидировать свои анонсы.

В этом случае вам нужно подписать ROA свои префиксы, чтобы в дальнейшем ваши ресурсы были доступны из сети Интернет.

Для регионального регистратора RIPE NCC шаги такие:

  1. Зайдем на портал RIPE в личный кабинет по адресу https://my.ripe.net. В правой части страницы перейдем в Resourses, далее в RPKI Dashboard.

    Если вы раньше никогда не заходили на эту страницу, RIPE попросит вас подписать соглашение EULA.

    Затем выбираем тип центра сертификации (Certificate Authority, CA):

    - Hosted хранить сертификат на стороне RIPE;

    - Non-Hosted хранить сертификат на своей стороне.

    Быстрее и удобнее выбрать вариант Hosted. В варианте Non-Hosted вам нужно предоставить XML-файл, сгенерированный вашим ПО центра сертификации. Система RIPE NCC сгенерирует ответный XML-файл, который нужно загрузить и использовать в своем программном обеспечении RPKI CA.

  2. В RPKI Dashboard перейдем во вкладку BGP Announncements. В нижней части экрана в меню Show выберем All.

  3. Вернемся в начало страницы и выберем все префиксы по чек-боксу рядом с надписью Origin AS. Создадим ROA по кнопке Create ROAs for selected BGP announcements.

  4. Подождем, пока сформируется стейджинг ROA. Внизу появится кнопка:

    Нажмем ее и во всплывающем меню нажмем Publish!

Все, готово! Вы успешно завалидировали свои префиксы!

Для счастливых обладателей PI-адресов RIPE подготовил отдельную инструкцию для валидации префиксов. А еще удобнее использовать Wizard от RIPE NCC: https://portal.ripe.net/rpki-enduser.

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

Если же вы сами являетесь сервис-провайдером, то лучше внедрить свою валидацию и фильтрацию маршрутов на основе RPKI.

Но об этом поговорим в следующий раз, всем пока и до встречи!

Подробнее..

Что может Citrix Session Recording решение для записи сессий на виртуальных рабочих столах

17.12.2020 12:23:08 | Автор: admin

Меня зовут Николай, и в DataLine я занимаюсь эксплуатацией стенда виртуальных рабочих столов (ВРС) на базе Citrix Vitrual Apps and Desktop. Недавно мы добавили к инфраструктуре ВРС сервис записи пользовательских сессий для двух сценариев:

  • служба ИБ по записям расследует инциденты безопасности;

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

Сегодня расскажу, как Citrix Session Recording решает эти задачи на нашем стенде, и проведу обзор его возможностей.

Кому нужно решение

Многие сотрудники технической поддержки слышат от пользователей: Я делаю то же самое, что и всегда, но иногда возникает ошибка. В этом случае запись пользовательского сеанса помогает найти плавающую проблему, которая воспроизводится случайно. Служба ИБ может записывать действия пользователей с конфиденциальными данными и быстро находить источники утечки информации. Сам факт записи может предостеречь пользователей от нарушения конфиденциальности: для этого есть специальные предупреждения:

Текст уведомления настраивается. Текст уведомления настраивается.

Citrix Session Recording регистрирует на ВРС ключевые события для ИБ и техподдержки, например: подключение внешнего хранилища, изменение конкретных файлов, запуск определенных приложений. Интересующие действия можно потом найти в привязке ко времени.

Как это устроено

Для записи сессий виртуальных рабочих столов используются несколько компонент:

Агент записи сеанса (Session Recording Agent) устанавливается на каждом виртуальном рабочем столе. Он подхватывает HDX-поток трансляцию рабочего стола, которую видит пользователь ВРС.

Сервер записи сеанса (Session Recording Server) управляет хранением файлов записи, отвечает за поиск, индексацию и цифровую подпись записей для обеспечения целостности.

База данных записи сеанса (Database) хранит метаданные по каждой сессии: ID, время, пользователи, группы пользователей, события и так далее.

В консоли политик записи (Session Recording Policy Console) администратор настраивает, какие именно события записывать, для каких пользователей или групп.

Сами файлы записи хранятся в специальном формате локально или в общем хранилище.

В плеере записи сеанса (Session Recording Player) можно найти записи и отследить на временной шкале, где какое событие зарегистрировано. Чем-то похоже на вебвизор:

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

Как альтернативу десктопному плееру можно использовать WebPlayer, в котором удобно делиться ссылками:

В WebPlayer тоже есть закладки по событиям справа: можно проматывать простои, когда пользователь ничего не делал и на экране ничего не менялось:

Администраторы могут стартовать запись сеанса в интерфейсе Citrix Director.

Какие настройки есть

Что записывается. В консоли политик администратор создает Recording policy и указывает, каких пользователей записывать и как их уведомлять об этом. Для выбранных пользователей или групп запись начнется автоматически со стартом новой сессии. Какие именно события фиксировать, настраивается в отдельной политике Event Logging policy.

Вот какие события можно фиксировать на записи:

  • установку запоминающих устройств USB,

  • запуск и окончание работы приложения,

  • переименование, создание, удаление и перемещение файлов,

  • просмотр веб-страниц,

  • самые популярные оконные действия.

При этом на записи не отображается контент внутри систем для конфколлов, например: видеоразговоры в Lync, Webex и другое выгруженное содержимое по технологии HDX Flash или Multimedia Redirection (MMR).

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

  • права администратора позволяют работать с политиками и файлами записи: просматривать, создавать, редактировать, удалять;

  • права на просмотр записей позволяют искать и воспроизводить записанные сеансы.

Где и как хранится. Для записи используется технология HDX, которая отвечает за доставку контента пользователю ВРС. Изначально технология была нужна, чтобы пользователь не замечал большой задержки между действием на физической машине и трансляцией сеанса на его личном экране. HDX-поток уже сильно сжат, так что для записи сессий агент просто подхватывает его и отправляет в хранилище. Это помогает хранить дневную активность пользователя не в гигабайтах, а в мегабайтах.

Можно дополнительно настроить политику архивирования и хранить свежие записи в основном оперативном хранилище, а старые файлы перемещать в архив. По умолчанию в архив могут перемещаться записи старше двух дней. Это предотвращает архивирование живых записей до их завершения. Во время и после архивирования клиент может автоматически перенести файлы записи к себе на сервер хранения.

В плеере записи сеанса можно просматривать файлы напрямую из основного хранилища. Если нужно воспроизвести заархивированную запись с сервера клиента, ее импортируют в хранилище восстановленных записей.

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

Мы предоставляем Citrix Session Recording как дополнительную опцию к инфраструктуре виртуальных рабочих столов на базе Citrix VDI. Буду рад ответить на вопросы повозможностям этого решения для конкретных кейсов.

Подробнее..

Меня развели мои же коллеги как и зачем мы проводим внутренние фишинговые рассылки

24.12.2020 10:15:09 | Автор: admin
Привет! Меня зовут Саша, и уже полтора года я периодически промышляю фишингом. Только не ради наживы, а для повышения киберграмотности коллег. Такие рассылки помогают нам проверить, насколько вероятна утечка из-за человеческого фактора, кому и какое обучение порекомендовать по основам кибербезопасности. В итоге грамотность сотрудников повышается: к концу года доля попавшихся снизилась с 17% до 2%.

Это помогает проходить аудит по стандарту ISO/IEC 27001. Такая рассылка со сбором статистики и последующим обучением встраивается в систему внутреннего аудита по требованиям стандарта.

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



С чего начать


Внутренняя рассылка должна быть максимально похожей на реальное письмо: именно такого эффекта добиваются мошенники при фишинге. Нужно решить сразу несколько творческих задач:
  1. Придумать сценарий фишинга.
  2. Зарегистрировать домен, настроить почту.
  3. Создать письмо с привлекательной ссылкой.
  4. Создать правдоподобный лэндинг, где пользователи оставят свои данные.
  5. Собрать базу для рассылки. Можно сделать выборку по внутренней адресной книге. А можно собрать базу из открытых источников и проверить более уязвимых пользователей с засвеченными учетками.
  6. Сделать рассылку и собрать статистику, кто и как отреагировал.
  7. Провести обучение для пользователей по итогам.


Все этапы делаем сами, вдохновляемся примерами реальных кейсов. Сначала рассылками занимался мой коллега, а в 2020 году я подхватил задачу и сделал 3 рассылки. Расскажу историю каждой из них.

Опыт коллеги: письмо про икру


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

Не забыли добавить в текст орфографические ошибки и смайлы.

Многие стали обращаться к сотруднице лично. Предупреждать ее заранее об этом не стали, чтобы было реалистичнее. Но икра по цене 400 рублей за кг была интересна такому количеству людей, что потребовалось опровержение от Василия, директора центра киберзащиты:


Мне тогда запомнилась реакция одного из менеджеров: он перешел по ссылке в письме, ввел свои данные и только после этого осознал ошибку. Его громкий крик: Ваааася! услышали мы все.

После рассылки подготовили и разослали всем видеоинструкцию по противодействию фишингу: на что обращать внимание, как проверить ресурсы и так далее.

Рассылка от сервиса видеоконференций


C переходом на удаленку мы обнаружили рост фишинговых атак, связанных с темой COVID-19. В апреле всем сотрудникам отправили рассылку-предупреждение:


В мае решили протестировать, как усвоилась информация. Идею ковидных рассылок отмели как слишком очевидную. Придумали другой заход: в марте всем сотрудникам установили Webex систему для веб-конференций. За пару месяцев все к ней привыкли, пора проверить бдительность.

Мы посмотрели на стандартную рассылку от Webex и создали похожее письмо:


Кнопка вела на подставной домен с формой для ввода логина и пароля:

Почта пользователя сразу подставилась в приветствие и поле с логином.

После ввода пароля шел редирект на реальный ресурс Cisco, чтобы пользователь ничего не заподозрил (часто так и бывает!).

Всего мы отправили 88 писем, по ссылке перешел 21 пользователь. Ввели данные 15 сотрудников это 17% от всей рассылки. После этого снова отправили всей компании напоминание про фишинг: раскрыли карты, разобрали пример нашей рассылки, объяснили, что делать.

Было забавно, когда один из коллег в личке пожаловался мне на мою же фишинговую рассылку. Чтобы сохранить чистоту эксперимента, об учениях я умолчал. Просто ответил: да, хорошо, разберемся, спасибо за бдительность.

За лето мы отправили сотрудникам целую серию обучающих писем с примерами фишинга из нашей практики. Следующий тест решили провести осенью в предновогодний сезон.

Рассылка в честь киберпонедельника


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

В этот раз я создал отдельный домен dataline-cybermonday.ru. Взял дизайн одного популярного сайта и сверстал письмо посимпатичнее:

Для правдоподобия добавил социальные кнопки, они ведут на официальные аккаунты.

Сайт тоже получился максимально правдоподобным:


Но сотрудники стали бдительнее: логин и пароль ввели только двое.

Рассылка от мэрии Москвы


С этой рассылкой я заморочился еще сильнее и решил провести фейковый опрос жителей Москвы о новогодних праздниках. Сначала создал домен opros-mos.ru. Прототипом для письма стала муниципальная рассылка в честь Дня города. Взял из нее фото и подпись мэра, герб города, ссылки на страницы в соцсетях. Получилось очень похоже:

Стишок взял первый попавшийся на странице поиска.

Так выглядела страница для ввода логина и пароля. Тоже использовал изображения и кнопки с официального сайта:


На это письмо реагировали еще меньше: открыли письмо 14 человек, перешли по ссылке пятеро. Делаем вывод, что рассылки на нерабочие темы для пользователей корпоративной почты не так интересны.

Немного статистики и ссылок на инструментарий


Отдельно покажу, как мы считаем данные по рассылкам. Для всех писем отслеживаем, какая доля пользователей открыла письмо, перешла по ссылке и ввела свои данные. Разослать и зафиксировать данные по переходам помогает GoPhish опенсорсный фреймворк для фишинга.

Рассылку делаем не по всей компании, а по группе от 50 до 100 сотрудников, так что считаем долю от общего числа отправленных писем.

  • Открытия писем считаются по невидимой картинке в письме. Картинка уникальная для каждого сотрудника. Если пользователь прогрузил изображение, на веб-сервере увидим обращение к нему.
  • Переходы по ссылке тоже отслеживаем для каждого сотрудника. Для этого генерируем каждому уникальную ссылку.
  • Ввод данных фиксирует программа для тестирования в полях веб-страницы.


Отдельно отмечаем тех пользователей, которые сообщают в центр киберзащиты о подозрительном письме. По 4 письмам за год статистика такая:


Процент открывших письмо
Процент перешедших по ссылке
Процент тех, кто ввел данные
Процент уведомивших
Service desk
38
28
7
22
Webex
35
24
17
24
Новый год, Собянин
20
10
4
6
Wildberries
24
13
2
8


Опираясь на наш опыт, мы отточили фишинговые скиллзы и продолжаем совершенствоваться. Сейчас такие рассылки предлагаем нашим клиентам в рамках услуги по аудиту ИБ и берем на себя как работу с опенсорс-инструментами, так и создание сценариев, подготовку писем и лэндингов, обход спам-фильтров и рекомендации для пользователей.

В ближайшее время напишем про другие составляющие этого сервиса: проверку паролей и разведку по открытым источникам (OSINT).
Подробнее..

Видеорегистратор для админа зачем нам и клиентам запись сессий в Cloud-152

18.03.2021 12:07:58 | Автор: admin

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

Для расследования инцидентов мы используем не только журналы c конечных устройств, но и систему контроля действий поставщиков ИТ-услуг (СКДПУ). Она записывает все действия инженеров DataLine с Cloud-152. Это облако аттестовано по требованиям ФЗ-152 и Приказа 17 ФСТЭК России к ГИС, сертифицировано по стандарту PCI DSS и входит в область действия сертификата по ISO/IEC 27001:2013. Так что СКДПУ еще и помогает выполнять требования законов и стандартов.

Также система используется, если нужно помочь клиенту и подключиться к серверам в его информационной системе персональных данных (ИСПДн). Доступ наших администраторов к S3 и некоторым другим системам тоже контролируем через СКДПУ.

В статье покажу, за какой уровень защиты облака у нас отвечает СКДПУ, чем и как он может помочь клиентам.

Место СКДПУ в Cloud-152

Расскажу про область действия СКДПУ на таком примере: представим многоквартирный жилой комплекс. Для его защиты управляющая компания не просто поставила шлагбаум и домофоны, а оборудовала общие территории камерами и датчиками движения. Если кто-то захочет воспользоваться ключами от общедомовых помещений ради собственной выгоды, его действия отследят по записям системы видеонаблюдения.

На уровне Cloud-152 СКДПУ работает, как такая камера с датчиком:

  • в один файл идет запись всех действий на экране администратора,

  • в другой файл пишется весь ввод с клавиатуры.

Два файла синхронизируются с помощью временной метки. Это позволяет посмотреть все, что делал сотрудник во время пользовательской сессии.

На общей схеме Cloud-152 это выглядит так: облако оборудовано не только забором в виде защищенного сетевого сегмента с межсетевым экраном, но и камерами для наблюдения за каждым инженером:

Все подключения администраторов Cloud-152 идут через СКДПУ.Все подключения администраторов Cloud-152 идут через СКДПУ.

У администраторов IaaS нет прав доступа к клиентскому сегменту, только к сегменту управления. Если клиент заказывает дополнительные сервисы по администрированию, инженер тоже подключается через СКДПУ.

Мы рассматривали несколько подобных систем и выбрали СКДПУ по нескольким критериям:

  • поддерживает основные протоколы администрирования Windows, Linux и сетевых устройств

  • хорошо оптимизирована и не особо требовательна к железу;

  • небольшой объем файлов с сессиями, к примеру: восьмичасовая сессия весит 100 Мб, за год одна из групп админов израсходовала 140 Гб;

  • хорошая поддержка на российском рынке: большинство проблем решаются в первый час;

  • можно блокировать запуск определенных программ или консольных команд.

Минус лишь в стоимости лицензии и нюансах администрирования. В консоли СКДПУ есть своя логика, и к некоторым моментам нужно привыкнуть. Например, есть различия у десктопной и веб-консоли. При этом для настройки нужно знать глубоко не только саму СКДПУ, но и операционную систему.

СКДПУ имеет много возможностей по записи действий пользователя. Его можно также использовать как кейлогер, но эту функциональность нужно включать дополнительно. Если поставить нужную галочку, то пароли к целевым системам будут видны на записи. Это тоже нужно учитывать при настройке, иначе журнал сессии может скомпрометировать пароль админа.

Какие записи и как храним

Особенность СКДПУ в том, что каждое запущенное приложение пишется в отдельный файл. Если изображение на экране администратора меняется при переходе в новое приложение, СКДПУ начинает записывать новый файл. В итоге запись каждой сессии дробится на несколько тематических видео. Файлов в архиве больше, зато не нужно проматывать длинные видео в поисках нужного скрина:

На предпросмотре можно быстро найти действия с нужным окном.На предпросмотре можно быстро найти действия с нужным окном.Так выглядит журнал данных с записью ввода. Так выглядит журнал данных с записью ввода.

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

Вместе с этим журналы отправляются в нашу систему для сбора и визуализации данных на основе ELK. Сюда уведомления из СКДПУ поступают в виде записей: запущено приложение..., пользователь ввел фразу. Для определенных событий также можем настроить алерты в системе мониторинга на базе Nagios.

Когда наш сотрудник заходит в Cloud-152, он получает оповещение о записи сессии:

Улыбайтесь, вас снимают. Можно и отказаться, но тогда не зайдешь.Улыбайтесь, вас снимают. Можно и отказаться, но тогда не зайдешь.

Параллельно с этими записями мы храним журналы входа в Cloud-152 и проверяем, совпадают ли они по времени. Если кто-то попытается обойти СКДПУ, произойдет рассинхрон: система зафиксирует вход в IaaS, но не увидит запись в СКДПУ.

Записи сессий администраторов Cloud-152 хранятся не менее 360 дней. Дополнительно мы делаем резервные копии записей средствами Veeam и отправляем их на хранение в другой наш ЦОД. Бэкапы храним 30 дней.

Как используем записи

Расследуем любые нештатные ситуации. Если какой-то инцидент произошел после подключения нашего сотрудника к серверу клиента, просматриваем записи и перепроверяем корректность работы. Речь не только про ИБ, но и про любые другие проблемы.

Следим за соблюдением правил работы с оборудованием. Многие защиты и права доступа настраиваются на самом оборудовании. Например, в случае с сетевыми устройствами может использоваться протокол TACACS+: с его помощью можем ограничить доступ к оборудованию, прописать права и запретить выполнение определенных команд. Тем не менее, если кто-то из инженеров попытается совершить запрещенную команду, в СКДПУ мы увидим соответствующее событие. Как минимум, появится повод для беседы.

Отслеживаем возможные источники несанкционированного доступа. Среди записей мы обращаем внимание на такие события, как назначение прав доступа. Если инженер случайно выдаст новому пользователю слишком много прав, это может привести к инциденту. Такие моменты стоит регулярно перепроверять.

Обновляем базу знаний. Cервис полезен и для решения спорных ситуаций. Полтора месяца назад наш инженер разбирал нетиповую проблему на стороне клиента и уже успел забыть точную последовательность действий, а системные журналы перезаписались. Проблема проявилась снова. Мы подняли запись из СКДПУ и поняли, что в действиях инженера не хватало финальной проверки результата. Этот случай добавили в базу знаний и внесли изменения в регламент проверки работ.

Помогаем следить за админами клиента внутри его систем. Размещение клиента в Cloud-152 не позволяет автоматически выполнить все требования 152-ФЗ. На совести клиента остается сама ИСПДн ее тоже нужно приводить в соответствие с законом. В виртуальных машинах клиента могут работать его подрядчики: настраивать 1С, систему документооборота и т. д. За работой администраторов-аутсорсеров лучше тоже на всякий случай приглядывать. Для этого предлагаем клиентам аренду СКДПУ на месяц и более и помогаем ему настроить внутреннее наблюдение за своими администраторами.

СКДПУ подходит не только для Cloud-152. Если клиентам захочется поставить такую систему в любом другом нашем облаке, то скоро запустим новый сервис с ежемесячными лицензиями. Следите за обновлениями!

Подробнее..

Если не хватает NSX Edge как клиенты нашего облака переезжают в сервис NGFW

20.05.2021 12:07:50 | Автор: admin

Когда клиент размещает свой сайт, почту или другой сервис в нашем облаке на базе VMware, то в 90% случаев в качестве граничного устройства используется виртуальный маршрутизатор NSX Edge. Это решение выполняет для виртуального дата-центра функции межсетевого экрана, NAT, DHCP, VPN и так далее.

Но если, например, клиент привык получать на межсетевом экране расширенную аналитику по трафику и более детальный мониторинг, то в облаке ему может понадобиться межсетевой экран нового поколения (Next Generation Firewall, NGFW). К тому же, такие решения предоставляют модули IPS и IDS, антивирус и другие фишки. Для клиентов c такими запросами в качестве одного из решений мы предлагаем NGFW как сервис на базе FortiGate. В статье покажу, как и для чего мы организуем переезд в этот сервис.

Когда стоит рассмотреть NGFW как сервис

Чаще всего наши клиенты рассматривают альтернативы NSX Edge, если на уровне межсетевого экрана нужно решать дополнительные задачи:

  • обнаруживать и предотвращать вторжения с помощью модулей IPS и IDS;

  • обеспечивать дополнительную антивирусную защиту;

  • контролировать приложения, которые используют сотрудники на рабочих местах в облаке;

  • интегрировать политики безопасности с каталогами AD и IDM;

  • отслеживать и расследовать сложные атаки и инциденты с помощью продвинутой аналитики.

Вместо сервиса можно выбрать и приватное решение закупить виртуальные или физические ресурсы в частное облако под нужды заказчика. К примеру, частное решение разворачивается, если нужен межсетевой экран, сертифицированный по требованиям ФСТЭК. Но у частного варианта есть минус: если проект живет в приватном облаке долго, рано или поздно может возникнуть проблема сайзинга. Например, мы закупили для проекта заказчика межсетевые экраны с небольшим запасом, под этот объем закупили лицензии. Через несколько лет трафик вырос сильнее ожидаемого. Заказчик захотел расширить пропускную способность и уперся в пакетную политику лицензирования вендора: докупить ровно необходимое количество лицензий было нельзя.

NGFW как сервис позволяет избежать проблем с сайзингом, если предсказать рост пропускной способности нельзя. В этом случае заказчику на одном из межсетевых экранов предоставляются выделенные сетевые сегменты виртуальные домены (VDOMы). Трафик предоставляется по принципу Pay-as-you-go: заказчик платит только за ту пропускную способность, которую потребил на виртуальном домене. Количество VDOMов можно увеличивать: в сервисе за это отвечает сервис-провайдер, заказчику достаточно сформулировать запрос.

Вот как упрощенно выглядит сегментация:

Это же решение используется и в составе сервиса виртуальных рабочих столов.Это же решение используется и в составе сервиса виртуальных рабочих столов.

Еще одна причина для перехода на NGFW как сервис желание заказчика отдать администрирование на сторону. Настройка таких межсетевых экранов требует знания нюансов конкретного вендора, и не у каждого заказчика есть специалисты нужного профиля. В сервисе с администрированием заказчику не нужно самому настраивать правила и анализировать трафик и срабатывания: этим занимается сервис-провайдер. При необходимости заказчик может поправить свою политику доступа или создать NAT преобразование сетевых адресов.

Как происходит переезд

При переезде из NSX Edge есть один нюанс: у клиента поменяется внешняя адресация. Мы заранее предупреждаем об этом клиента и затем идем пошагово по нашему плану.

Перенос "как есть". На первом этапе вся защита переносится в том виде, в котором ее настроил заказчик.

  1. Общаемся с клиентом, выясняем его задачи и уточняем, какие модули NGFW нужны.

  2. Запрашиваему клиента необходимую информацию:

    • как сегментирована сеть,

    • какие VLANы используются,

    • какие типы сетей: routed, isolated,

    • как клиент выходит в интернет,

    • какая полоса пропускания,

    • как все мониторится,

    • какие NAT-трансляции используются.

    Так мы выстраиваем архитектуру будущего решения.

  3. Запрашиваем конфигурацию с оборудования заказчика либо просим доступ к Edge, чтобы выгрузить конфигурацию самим.

  4. Анализируем конфигурацию и заводим сети клиентов: создаем отдельный VDOM на FortiGate и подаем туда VLANы.

  5. Переносим все правила доступа со старого оборудования.

  6. Создаем NAT-трансляции с новыми адресами, составляем IP-план и отправляем его клиенту.

  7. Преднастраиваем VPN-туннели.

  8. Согласовываем время даунтайма во время миграции. Общее время зависит от количества VLANов.

  9. Переводим трафик с минимальным простоем. Чаще всего делаем это ночью, чтобы влияние переезда было минимальным. Тушим интерфейс на Edge и поднимаем интерфейс с таким же адресом на FortiGate. Параллельно с этим клиент меняет DNS. На каждый VLAN достаточно несколько минут.

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

Оптимизация. После переноса мы мониторим активность, наблюдаем за трафиком и собираем аналитику. Через неделю анализируем работу правил и проверяем их корректность. Какие-то могут оказаться слишком широкими или слишком узкими, они могут затенять друг друга. Если видим какие-то неработающие правила, обсуждаем с клиентом и при необходимости выключаем или корректируем их.

Тут видим, что для выбранного правила трафика вообще нет.Тут видим, что для выбранного правила трафика вообще нет.

Включение модулей безопасности. Здесь мы настраиваем модули NGFW: IPS, контроль приложений, антивирус, всю работу делаем в тесной связке с клиентом. Сначала мы создаем профили безопасности в режиме мониторинга и только наблюдаем за срабатываниями, но не блокируем их. Например, у нас начал срабатывать модуль IPS. Сначала мы смотрим, что это за трафик, и сообщаем клиенту. Решение принимаем совместно: блокировать такие срабатывания, или это легитимный трафик и срабатывание оказалось ложным. Только после совместного обсуждения включаем правила в режиме блокировки.

Так выглядит топ критичных угроз за семь дней в модуле IPS.Так выглядит топ критичных угроз за семь дней в модуле IPS.

Как решаются особые кейсы NGFW+

Иногда NGFW как сервис становится частью комплексного решения, к которому мы подключаем другие модули:

  • система управления журналами безопасности,

  • VPN-клиенты,

  • сервис защиты веб-приложений (WAF),

  • другие.

Кратко расскажу, как эти решения работают совместно.

Журналы событий FortiAnalyzer вместе с NGFW помогают видеть более детальную картину трафика. Например, есть модуль индикаторов компрометации: мы видим, что какие-то хосты ломятся на скомпрометированные IP-адреса. Этот трафик блокируется, а хосты мы проверяем антивирусом.

Отдельной политикой на NGFW можно настроить передачу трафика по syslogу в клиентскую SIEM-систему. Или можем просто передавать журналы в клиентский лог-коллектор через IPsec.

FortiAnalyzer также помогает организовать долговременное хранение журналов.

Дополнительный VPN-шлюз для доступа к внутренней инфраструктуре можно настроить с помощью FortiClient VPN. Это средство для защиты конечных точек (endpoint-защиты). С его помощью доступ на удаленный сервер настраивается определенным группам пользователей.

WAF совместно с NGFW позволяет вести на межсетевой экран уже очищенный трафик. Мы уже рассказывали, как устроен наш комплексный WAF как сервис и как мы предусмотрели в нем дополнительную защиту от DDoS и сканирование. С подключением NGFW его схема будет выглядеть так:

Клиентам с WAF мы рекомендуем ограничивать на межсетевом экране доступ к сайтам только с адресов WAF. NGFW в этой связке работает в режиме explicit proxy: запрещено все, что не разрешено.

Разрешен только трафик с WAF.Разрешен только трафик с WAF.

WAF в такой схеме отбивает все, что связано с вебом. NGFW работает и на вход, и на выход: он также контролирует выход базы данных и веб-серверов за обновлениями. Также NGFW следит за взаимодействием внутренних серверов между собой: как один сегмент сети общается с другим. Даже если какой-то внутренний сервер заразится, то сегментация сети на NGFW не позволит заразе распространиться дальше.

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

Единственный случай, когда лучше выбрать комплексный сервис в виде частного решения, необходимость сертификации NGFW или WAF по требованиям ФСТЭК. Администрировать такое решение тоже может сервис-провайдер, но это будет межсетевой экран или WAF под конкретного заказчика.

Подробнее..

На коленке агрегация VPN, или Надежная связь на ненадежных каналах

25.03.2021 14:07:14 | Автор: admin

Представьте задачу: необходимо обеспечить стабильным интернетом и покрыть бесшовным Wi-Fi здание площадью 300 м2 с возможной расчетной нагрузкой до 100 человек. На первый взгляд, "вроде изян". Но стоит добавить пару деталей, и задача усложняется:

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

  • нужно обеспечить регулярные видеотрансляции, то есть добиться стабильного интернета при единственном GSM-провайдере;

  • бюджет ограничен.

Итого: потери и отвалы от базовой станции подкрадываются в самое неподходящее время.

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

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

Схема решения вкратце

Итак, при первом столкновении с проблемой отвалов я начал с агрегации частот и убедился, что это не поможет. Смена категории LTE-модема с Cat4 на Cat6 или еще круче Cat12 давала преимущество в скорости, но в потерях и отвалах нет. Пришел к выводу, что нужен второй LTE-провайдер. При этом при переключении не должен потеряться ни один кадр и трансляция не должна отвалиться.

На помощь пришла такая связка: агрегация, она же bonding, и TCP-OpenVPN-туннель поверх этого.

  • в облаке создал "сервер агрегации" виртуалку с CLOUD HOSTED ROUTER (CHR) на базе Router OS;

  • на ней поднял L2TP-сервер с включенным шифрованием IPsec;

  • поверх L2TP over IPsec создал два EoIP-туннеля;

  • EoIP-туннели агрегированы bonding-интерфейсом;

  • вишенка на торте TCP-шный OpenVPN-туннель.

Итоговая схема:

Вместо виртуальной машины в дата-центре в качестве R1 может выступать любая железка с достаточной производительностью. Например, тот же MikroTik серии CCR, компьютер, размещенный где угодно. Главное позаботиться о производительности и стабильных каналах связи, использовать схемы активного резервирования (VRRP в помощь).

Поддержка OpenVPN UDP реализована только в 7-й версии RouterOS, поэтому в этой конфигурации безальтернативно используется протокол TCP.

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

Теперь расскажу подробнее о строительстве схемы. Начнем с R1 (облачного маршрутизатора) и далее R2 (филиального).

Маршрутизатор R1

  1. Сначала берем второй белый IP в дата-центре. У меня CHR находился за Edge в облаке VMware, так что обязательно пробрасываем порты на Edge UDP 1701, 500 и 4500 NAT-T IPSec Network Address Translator Traversal. Также делаем разрешающее правило в межсетевом экране Edge.

  2. Добавляем в таблицу firewall filter разрешающее правило доступа к маршрутизатору извне для портов UDP 1701, 500 и 4500. Если у вас белые IP непосредственно на маршрутизаторе без пробросов через Edge, галочку NAT Traversal НУЖНО СНЯТЬ!

    Проверяем дефолтный IPsec-профиль:

    /ip ipsec profile set [ find default=yes ] dh-group=modp1024 enc-algorithm=3de
    
  3. Создаем профиль для L2TP-туннелей:

    /ppp profile add change-tcp-mss=no name=profile01 use-compression=no use-encryption=no use-mpls=no use
    

    и настраиваем учетные записи:

    /ppp secretadd local-address=172.16.0.1 name=l2tp_R1-R2_ISP1 password=ros7.elements.forever profile=profile01 remote-address=172.16.0.2 service=l2tpadd local-address=172.16.0.5 name=l2tp_R1-R2_ISP2 password=ros7.elements.forever profile=profile01 remote-address=172.16.0.6 service=l2tp
    
  4. Активируем L2TP-сервер и включаем шифрование IPsec:

    /interface l2tp-server server set authentication=mschap2 caller-id-type=number default-profile=profile01 enabled=yes ipsec-secret=ВАШ КРУТОЙ ПАРОЛЬ use-ipsec=yes
    
  5. Поднимаем два EoIP-туннеля поверх L2TP/IPsec-туннелей:

    /interface eoipadd keepalive=1s,5 local-address=172.16.0.1 mac-address=00:00:00:00:00:A1 name=eoip-tun1_over_l2tp_R1-R2_ISP1 remote-address=172.16.0.2 tunnel-id=1add keepalive=1s,5 local-address=172.16.0.5 mac-address=00:00:00:00:00:B1 name=eoip-tun2_over_l2tp_R1-R2_ISP2 remote-address=172.16.0.6 tunnel-id=2
    

    Обязательно указываем минимальный keepalive timeout равным 1 секунде и для каждого EoIP-туннеля указываем уникальный ID.

  6. Настраиваем bonding и назначаем на него IP-адрес:

    /interface bondingadd lacp-rate=1sec mii-interval=1ms mode=broadcast name=bonding1 slaves=eoip-tun1_over_l2tp_R1-R2_ISP1,eoip-tun2_over_l2tp_R1-R2_ISP2
    
    /ip address add address=172.16.1.1/30 interface=bonding1
    

    Тут важно заметить, что в поле mode (режим работы bonding-интерфейса) я указал broadcast, чтобы пакеты отправлялись сразу по двум тоннелям. Таким образом потеря пакета на любом из двух интерфейсов не приведет к потере пакета на bonding-интерфейсе. Остальные значения устанавливаем, как на картинке.

Активируем OpenVPN-сервер

Так как у меня OpenVPN использовался еще и для внешних подключений, то я предварительно сгенерировал сертификаты и импортировал их в CHR. На этом останавливаться подробно не буду. Создаем /ppp profile и /ppp secret для OpenVPN:

/ppp profile add change-tcp-mss=no name=profile02 use-compression=no use-encryption=no use-mpls=no use/ppp secret add local-address=172.16.2.1 name=ovpn_over_bonding1 password=ros7.elements.forever profile=profile02 remote-address=172.16.2.2 service=ovpn/interface ovpn-server serverset auth=sha1 certificate=server.crt_0 cipher=aes256 default-profile=profile02 enabled=yes keepalive-timeout=30 port=1194 require-client-certificate=yes

Обязательно прописываем в nat-таблицу межсетевого экрана правило для нашей серой филиальной сети за маршрутизатором R2, чтобы трафик выходил наружу через R1:

/ip firewall natadd action=masquerade chain=srcnat out-interface-list=WAN src-address=192.168.1.0/24

Обратный маршрут до серой сети за маршрутизатором R2 указываем через OpenVPN-туннель:

/ip routeadd check-gateway=ping distance=1 dst-address=192.168.1.0/24 gateway=172.16.2.2

Маршрутизатор R2

  1. Первым делом прописываем маршруты от одного интерфейса LTE-модема до одного белого IP-адреса дата-центра. Запрещаем в настройках межсетевого экрана в цепочке output прохождение пакетов с другого интерфейса:

    /ip routeadd distance=1 dst-address= 198.51.100.10/32 gateway=lte1add distance=1 dst-address= 198.51.100.20/32 gateway=lte2/ip firewall filteradd action=drop chain=output dst-address= 198.51.100.10 out-interface=lte2add action=drop chain=output dst-address= 198.51.100.20 out-interface=lte1
    
  2. Приводим в соответствие с R1 дефолтный конфиг /ip ipsec profile:

    /ip ipsec profile set [ find default=yes ] dh-group=modp1024 enc-algorithm=3de
    
  3. Создаем /ppp profile:

    и два L2TP/IPsec-подключения к дата-центру для каждого из провайдеров:

    /ppp profile add change-tcp-mss=no name=profile01 use-compression=no use-encryption=no use-mpls=no use/interface l2tp-clientadd allow=mschap2 connect-to= 198.51.100.10 disabled=no ipsec-secret= ros7.elements.forever keepalive-timeout=30 name=l2tp_to_R1_over_ISP1 password=ros7.elements.forever    profile=profile01 use-ipsec=yes user=l2tp_R1-R2_ISP1add allow=mschap2 connect-to= 198.51.100.20 disabled=no ipsec-secret= ros7.elements.forever keepalive-timeout=30 name=l2tp_to_R1_over_ISP2 password=ros7.elements.forever    profile=profile01 use-ipsec=yes user=l2tp_R1-R2_ISP2
    
  4. Создаем EoIP-туннели по аналогии с R1, только меняем местами local и remote IP L2TP/IPsec-линков маршрутизатора R2. Bonding-интерфейс такой же, как на R1:

    /interface eoipadd keepalive=1s,5 local-address=172.16.0.2 mac-address=00:00:00:00:00:A2 name=eoip-tun1_over_l2tp_R1-R2_ISP1 remote-address=172.16.0.1 tunnel-id=1add keepalive=1s,5 local-address=172.16.0.6 mac-address=00:00:00:00:00:B2 name=eoip-tun2_over_l2tp_R1-R2_ISP2 remote-address=172.16.0.5 tunnel-id=2/interface bondingadd lacp-rate=1sec mii-interval=1ms mode=broadcast name=bonding1 slaves=eoip-tun1_over_l2tp_R1-R2_ISP1,eoip-tun2_over_l2tp_R1-R2_ISP2/ip address add address=172.16.1.2/30 interface=bonding1
    
  5. Также импортируем сертификаты, создаем профиль:

    Настраиваем OpenVPN-клиента на R2:

    /ppp profile add change-tcp-mss=no name=profile02 use-compression=no use-encryption=no use-ipv6=no use-mpls=no use-upnp=no/interface ovpn-clientadd certificate=client.crt_0 cipher=aes256 connect-to=172.16.1.1 mac-address=00:00:00:00:00:C2 name=ovpn_over_bonding1 password=ВАШ КРУТОЙ ПАРОЛЬ profile=profile02 use-peer-dns=no user="ovpn_over_bonding1 " verify-server-certificate=yes
    
  6. Туннели загорелись волшебной буквой R, а EoIP еще и RS. OpenVPN тоже завелся. Теперь можно направлять трафик с компьютера трансляций в наш слоеный бутерброд в OpenVPN-туннель. Для этого создаем правило /ip firewall mangle и прописываем сразу новую таблицу маршрутизации:

    /ip firewall mangleadd action=mark-routing chain=prerouting dst-address-list=google_sites dst-port=1935 new-routing-mark=pc_to_stream-youtube_over_R1 passthrough=yes protocol=tcp src-address=192.168.1.1
    
  7. Создаем маршрут через наш OpenVPN-туннель с данной таблицей маршрутизации:

    /ip routeadd check-gateway=ping distance=1 gateway=172.16.2.1 routing-mark=pc_to_stream-youtube_over_R1
    

И готово!

Траблшутинг

  • При развертывании конфигурации на действующем железе нужно обязательно переключить прямой и обратный маршруты с туннелей L2TP на OpenVPN-туннель. Если, например, переключить только прямой маршрут, а обратный оставить на L2TP вместо OpenVPN, агрегация полностью работать не будет и пакеты все равно будут теряться.

  • Утилиты RouterOS в разделе /tools очень полезны при траблшутинге. Еще неплохо работает связка /tools Packet Sniffer + Wireshark.

  • Не забудьте "поиграться с mtu", чтобы достичь лучшей производительности туннелей.

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

  • Важно! Если провайдер фильтрует трафик и идет блокировка L2TP, то можно поднять другие туннели в качестве основы для EoIP, например: OpenVPN или SSTP.

  • Чтобы проверить все в деле, можно сымитировать сбой. Отключаем любой из LTE-интерфейсов или создаем потери искусственно: добавляем в межсетевой экран правило частичной блокировки пакетов и указываем при создании нового правила значение в поле random.

Что еще можно улучшить и оптимизировать

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

  • QOS хорошая штука, особенно на каналах LTE, и особенно с VoIP. Не забываем про это, чтобы остальной трафик не забил и так не слишком широкий канал.

  • Можно усилить безопасность, если ограничить подключение извне к портам для L2TP и IPsec маршрутизатора R1. Указываем белый IP LTE-провайдера с помощью firewall и адресных листов. Хоть адрес и из NAT и на нем висит не один клиент, все равно будет лучше. Так как IP динамический, то нужно включить на MikroTik функцию ip cloud, чтобы DNS-сервера всегда знали актуальный IP, технология DDNS.

Конечно же, у схемы есть коммерческие аналоги с возможностями работы из коробки, например: peplink MAX HD4 LTE и тому подобное оборудование, агрегирующие соединения. Тут бизнес сам оценивает их стоимость для себя.

Оставляю ссылки на похожие темы:

Также тем, кому интересна эта тема, рекомендую покопать в сторону MPTCP (Multipath TCP).

Подробнее..

Дата-центры высшего уровня отвечаем на часто задаваемые вопросы про Tier IV

06.08.2020 12:10:31 | Автор: admin
Неделю назад мы рассказали о планах строительства нового дата-центра Tier IV и сразу получили несколько вопросов про этот уровень в классификации Uptime Institute. Из обсуждений в чатах получился полноценный FAQ. Так что сегодня развею самые живучие слухи про Tier IV и немного расскажу, какие требования Uptime Institute мы учитываем в проекте нового дата-центра.



Что значит максимально возможный уровень, придумали что-то новенькое?

Стандартам от Uptime Institute уже больше 25 лет. Столько времени существует система классификации Tier.

Сертификация дата-центров на уровни Tier проходит по нескольким программам:
  • Сертификация проектной документации (Design Documents) аудиторы проверяют пакет проектных документов по основным инженерным системам: кондиционирование, энергоснабжение. Также изучают документы по смежным системам, например, топливоснабжению.
  • Сертификация построенного ЦОД (Constructed Facility) здесь смотрят на соответствие построенного дата-центра сертифицированному проекту и проверяют инженерные системы при полной проектной нагрузке. Когда клиентского ИТ-оборудования еще нет, нагрузку имитируем тепловыми пушками.
    Этот уровень сдают только после Design.
  • Сертификация эксплуатационной устойчивости (Operational Sustainability) тут идет комплексная оценка эксплуатационных практик. Как именно это происходит, мы уже подробно рассказывали.
    Для сертификации по этой программе нужно сначала сдать Design и Facility.

Еще есть программа Management&Operations для проверки эксплуатации. Но это несертификация, а аудит дата-центра, так что подробно останавливаться не будем.

Уровень дата-центра закладывается еще на этапе концепции и проектирования. Поэтому мы начинаем готовиться к сертификации на Tier IV на этапе проектирования здания, еще до проектирования инженерных систем.

Почему мы так много говорим про стандарты Tier?

Система Tier содержит список требований к дата-центрам разных уровней. Но там нет конкретных объяснений, как это сделать, только требования к надежности инфраструктуры. Uptime Institute пишет:
стандарты Tiers приветствуют инновационные инженерные решения и признают, что все центры обработки данных непохожи друг на друга

А значит, есть несколько вариантов, как соблюсти требования.

Мы в DataLine занимаемся практической стороной: честно смотрим на лучшие европейские ЦОДы, берем лучшие практики, с осторожностью пробуем новое и применяем это в проектировании своих дата-центров. Делимся опытом, в том числе в наших Университетах.

Вот такой опыт сертификации по стандартам Uptime Institute у нас накопился:
  • 2014 год прошли аудит Management&Operations.
  • 2015 год дата-центр NORD-4 получил сертификат Design.
  • 2016 год сертифицировали NORD-4 на Facility.
  • 2018 год у NORD-4 появился сертификат Operational Sustainability.
  • 2020 год NORD-4 подтвердил сертификат Operational Sustainability.

Что дальше:
  • 2020 год совместно с Ростелеком-ЦОД начали строительство дата-центра в Остаповском проезде и его подготовку к сертификации на Tier IV.
  • 2020 год во втором полугодии планируем сдать в Uptime Institute проект NORD-5.
  • 2021 год планируем сертифицировать NORD-5 на Tier III по программе Facility.

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

В чем основное отличие уровней?

Я уже немного рассказывал про схемы резервирования, характерные для разных Tier.

Посмотрим на сравнительную таблицу в стандарте:


Вот так уровни отличаются по минимальному числу активных компонентов, поддерживающих нагрузку (их обозначают той самой буквой N):
  • Tier I используется N минимальное количество оборудования для работы ЦОД, то есть резерва нет.
  • Tier II инженерное оборудование резервируется по схеме N+1.
  • Tier III по схеме N+1 резервируется инженерное оборудование и пути дистрибуции: кабели питания, трассы, трубопроводы.
  • Tier IV если случается единичный отказ любого оборудования, все равно остается N активных компонентов.

Но дело не только в энках, особенно в случае с Tier IV. Главное отличие Tier IV это единственный уровень с отказоустойчивостью. Он так и называется: Fault tolerant infrastructure. Также для него обязательны секционирование (или компартментализация, очень уж мне нравится это слово) и непрерывное охлаждение. Ниже посмотрим, что это значит.

Tier IV отличается от Tier III схемой резервирования оборудования 2(N+1)?

Как мы видим, никакая конкретная схема резервирования для Tier IV не указана. Как добиться N после любого отказа, каждый ЦОД решает сам. Раньше многие понимали требования Tier IV слишком буквально и предлагали сложные схемы наподобие 2N+1 или 2(N+1), чтобы уж наверняка избежать отказов. Но на практике это не обязательно.

Что такое отказоустойчивость в Tier IV? Чем отличается от Tier III?

В дата-центре Tier III мы допускаем ситуации отказа, где сотрудники должны вмешаться и переключиться вручную между резервными элементами.
В Tier IV такие переключения отсутствуют или происходят автоматически.

Что такое непрерывное охлаждение в Tier IV?

Tier III формально допускает несильное повышение температуры в машзале, когда происходит отказ оборудования и мы переключаемся между основным и резервным кондиционером или чиллером.

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

Что значит в Tier IV системы не только зарезервированы, но и защищены от физического воздействия? В чем отличие от Tier III?

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

Если мы выполним это требование, то физическое воздействие нам не страшно: даже если молоток упадет на кабель, у нас в отдельном месте сохранятся все пути дистрибуции к оборудованию.

А если случится пожар?

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

А если упадет метеорит?

Наша страна настолько сурова, что иногда случается и такое. Но все-таки ЦОД не военный объект, чтобы защищаться от подобных аварий. Очень жаль, но система Tier не рассматривает защиту от всемирного потопа, вторжения инопланетян или захвата власти рептилоидами.

Tier IV это в 2 раза дороже?

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

Для нас это первый опыт с Tier IV. Немного страшно, но мы движемся в этом направлении. Как только появятся новости, будем рады рассказать подробнее.
Подробнее..

Пусть хоть потоп, но 1С должна работать! Договариваемся с бизнесом о DR

17.09.2020 12:16:31 | Автор: admin
Представьте себе: вы обслуживаете ИТ-инфраструктуру крупного торгового центра. В городе начинается ливень. Потоки дождя прорывают крышу, вода заполняет торговые помещения по щиколотку. Надеемся, что ваша серверная не в подвале, иначе проблем не избежать.

Описанная история не фантазия, а собирательное описание пары событий 2020 года. В крупных компаниях на этот случай всегда под рукой план послеаварийного восстановления, или disaster recovery plan (DRP). В корпорациях за него отвечают специалисты по непрерывности бизнеса. Но в средних и небольших компаниях решение таких задач ложится на ИТ-службы. Нужно самому разобраться в бизнес-логике, понять, что и где может упасть, придумать защиту и внедрить.

Здорово, если ИТ-специалисту удается провести переговоры с бизнесом и обсудить необходимость защиты. Но я не раз наблюдал, как компания экономила на решении для disaster recovery (DR), так как считала его избыточным. Когда наступала авария, долгое восстановление грозило убытками, а бизнес оказывался не готов. Можно сколько угодно повторять: А я же говорил, восстанавливать сервисы все равно предстоит ИТ-службе.



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

  • Что защищаем?
  • От чего защищаем?
  • Как сильно защищаем?

Во второй части поговорим о вариантах ответа на вопрос: чем защищаться. Приведу примеры кейсов, как разные заказчики строят свою защиту.

Что защищаем: выясняем критические бизнес-функции


Лучше начинать подготовку с обсуждения плана послеаварийных действий c бизнес-заказчиком. Тут главная сложность найти общий язык. Заказчика обычно не волнует, как ИТ-решение работает. Его волнует, может ли сервис выполнять бизнес-функции и приносить деньги. Например: если сайт работает, а платежная система лежит, поступлений от клиентов нет, а крайние все равно ИТ-специалисты.

ИТ-специалист может испытывать сложности в таких переговорах по нескольким причинам:

  • ИТ-службе не до конца известна роль информационной системы в бизнесе. Например, если нет доступного описания бизнес-процессов или прозрачной бизнес-модели.
  • От ИТ-службы зависит не весь процесс. Например, когда часть работы выполняют подрядчики, а у ИТ-специалистов нет на них прямого влияния.

Я бы построил разговор так:

  1. Объясняем бизнесу, что аварии случаются со всеми, а на восстановление требуется время. Лучше всего продемонстрировать ситуации, как это происходит и какие последствия возможны.
  2. Показываем, что от ИТ-службы зависит не все, но вы готовы помочь с планом действий в зоне вашей ответственности.
  3. Просим бизнес-заказчика ответить: если случится апокалипсис, какой процесс нужно восстановить первым? Кто и как в нем участвует?

    От бизнеса необходим простой ответ, например: нужно, чтобы колл-центр продолжил регистрировать заявки 24/7.
  4. Просим одного-двух пользователей системы подробно описать этот процесс.
    Лучше привлечь на помощь аналитика, если в вашей компании такой есть.

    Для начала описание может выглядеть так: колл-центр получает заявки по телефону, по почте и через сообщения с сайта. Потом заводит их в 1С через веб-интерфейс, оттуда их забирает производство вот таким способом.
  5. Затем смотрим, какие аппаратные и программные решения поддерживают процесс. Для комплексной защиты учитываем три уровня:
    • приложения и системы внутри площадки (программный уровень),
    • саму площадку, где крутятся системы (инфраструктурный уровень),
    • сеть (про нее вообще часто забывают).

  6. Выясняем возможные точки отказа: узлы системы, от которых зависит работоспособность сервиса. Отдельно отмечаем узлы, которые поддерживают другие компании: операторы связи, хостинг-провайдеры, дата-центры и так далее.С этим можно возвращаться к бизнес-заказчику для следующего шага.

От чего защищаем: риски


Дальше выясняем у бизнес-заказчика, от каких рисков мы защищаемся в первую очередь. Все риски условно поделим на две группы:

  • потеря времени из-за простоя сервисов;
  • потеря данных из-за физических воздействий, человеческого фактора и т.д.

Бизнесу страшно потерять и данные, и время все это ведет к потере денег. Так что снова задаем вопросы по каждой группе рисков:
  • Можем ли мы оценить для этого процесса, сколько в деньгах стоит потеря данных и потеря времени?
  • Какие данные мы не можем потерять?
  • Где не можем допустить простоя?
  • Какие события наиболее вероятны и сильнее нам угрожают?

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

Как сильно защищаем: RPO и RTO


Когда понятны критические точки отказа, рассчитываем показатели RTO и RPO.

Напомню, что RTO (recovery time objective) это допустимое время с момента аварии и до полного восстановления сервиса. На языке бизнеса это допустимое время простоя. Если мы знаем, сколько денег приносил процесс, то сможем посчитать убытки от каждой минуты простоя и вычислить допустимый убыток.

RPO (recovery point objective) допустимая точка восстановления данных. Она определяет время, за которое мы можем потерять данные. С точки зрения бизнеса, потеря данных может грозить, например, штрафами. Такие потери тоже можно перевести в деньги.



Время восстановления нужно рассчитывать для конечного пользователя: в какой срок он сможет войти в систему. Так что сначала складываем время восстановления всех звеньев цепи. Здесь часто делают ошибку: берут RTO провайдера из SLA, а про остальные слагаемые забывают.
Посмотрим на конкретном примере. Пользователь заходит в 1С, система открывается с ошибкой базы данных. Он обращается к системному администратору. База находится в облаке, сисадмин сообщает о проблеме сервис-провайдеру. Допустим, на все коммуникации уходит 15 минут. В облаке база такого объема восстановится из бэкапа за час, следовательно, RTO на стороне сервис-провайдера час. Но это не окончательный срок, для пользователя к нему прибавились 15 минут на обнаружение проблемы.

Дальше системному администратору надо проверить, что база корректная, подключить ее к 1С и запустить сервисы. На это необходим еще час, значит, RTO на стороне администратора уже 2 часа 15 минут. Пользователю нужно еще 15 минут: залогиниться, проверить, что нужные транзакции появились. 2 часа 30 минут общее время восстановления сервис в этом примере.
Эти расчеты покажут бизнесу, от каких внешних факторов зависит срок восстановления. Например, если офис заливают, то сначала нужно обнаружить протечку и устранить ее. Понадобится время, которое зависит не от ИТ.

Чем защищаем: выбираем инструменты для разных рисков


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

Начнем с первой группы рисков: потерь из-за простоев сервиса. Варианты решения для этой задачи должны обеспечивать хороший RTO.

  1. Разместить приложение в облаке

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

    Например, можно разместить в облаке виртуальную машину с базой данных. Приложение подключится к базе данных снаружи по установленному каналу или из этого же облака. Если возникнут проблемы с одним из серверов кластера, то ВМ перезапустится на соседнем сервере меньше чем за 2 минуты. После этого в ней поднимется СУБД, и через несколько минут база данных станет доступна.

    RTO: измеряется в минутах. Прописать эти сроки можно в соглашении с провайдером.
    Стоимость: считаем стоимость ресурсов облака под ваше приложение.
    От чего не защитит: от массовых сбоев на площадке провайдера, например, из-за аварий на уровне города.
  2. Кластеризовать приложение

    Если хочется улучшить RTO, предыдущий вариант можно усилить и сразу разместить в облаке кластеризованное приложение.

    Реализовать кластер можно в режиме active-passive или active-active. Создаем несколько ВМ, исходя из требований вендора. Для большей надежности разносим их по разным серверам и СХД. При отказе сервера с одной из БД, резервная нода принимает на себя нагрузку за несколько секунд.

    RTO: измеряется в секундах.
    Стоимость: чуть дороже обычного облака, потребуются дополнительные ресурсы для кластеризации.
    От чего не защитит: по-прежнему не защитит от массовых сбоев на площадке. Но локальные сбои будут не такими продолжительными.
    Из практики: У компании-ритейлера было несколько информационных систем и сайтов. Все базы данных располагались локально в офисе компании. Ни о каком DR не задумывались, пока офис не остался без электричества несколько раз подряд. Клиенты были недовольны сбоями на сайтах.

    Проблема с доступностью сервисов решилась после переезда в облако. Плюс к этому удалось оптимизировать нагрузку на базы данных за счет балансировки трафика между узлами.
  3. Переехать в катастрофоустойчивое облако

    Если нужно, чтобы работе не помешало даже стихийное бедствие на основной площадке, можно выбрать катастрофоустойчивое облако В этом варианте провайдер разносит кластер виртуализации уже на 2 дата-центра. Между дата-центрами происходит постоянная синхронная репликация, один-в-один. Каналы между ЦОДами зарезервированы и идут по разным трассам, так что такому кластеру не страшны проблемы с сетью.

    RTO: стремится к 0.
    Стоимость: самый дорогой вариант в облаке.
    От чего не защитит: Не поможет от порчи данных, а также от человеческого фактора, поэтому параллельно рекомендуется делать бэкапы.
    Из практики: Один из наших клиентов разработал комплексный план послеаварийного восстановления. Вот какую стратегию он выбрал:

    • Катастрофоустойчивое облако защищает приложение от сбоев на уровне инфраструктуры.
    • Двухуровневый бэкап обеспечивает защиту на случай человеческого фактора. Резервные копии делают двух видов: холодные и горячие. Холодный бэкап находится в выключенном состоянии, на его развертывание требуется время. Горячий бэкап уже готов к работе и восстанавливается быстрее. Его хранят на специально выделенной СХД. Третью копию записывают на ленту и хранят в другом помещении.

    Раз в неделю клиент тестирует защиту и проверяет работоспособность всех бэкапов, в том числе с ленты. Ежегодно в компании проводят тестирование всего катастрофоустойчивого облака.
  4. Организовать репликацию на другую площадку

    Еще один вариант, как можно избежать глобальных проблем на основной площадке: обеспечить георезервирование. Другими словами, создать резервные виртуальные машины на площадке в другом городе. Для этого подойдут специальные решения для DR: мы в компании используем VMware vCloud Availability (vCAV). С его помощью можно настроить защиту между несколькими площадками облачного провайдера или восстановиться в облако с on-premise площадки. Подробнее о схеме работы с vCAV я уже рассказывал тут.

    RPO и RTO: от 5 минут.

    Стоимость: дороже первого варианта, но дешевле, чем аппаратная репликация в катастрофоустойчивом облаке. Цена складывается из стоимости лицензии vCAV, платы за администрирование, стоимости ресурсов облака и ресурсов под резерв по модели PAYG (10% от стоимости работающих ресурсов за выключенные ВМ).
    Из практики: Клиент держал в нашем облаке в Москве 6 виртуальных машин с разными базами данных. Сначала защиту обеспечивал бэкап: часть резервных копий хранили в облаке в Москве, часть на нашей петербургской площадке. Со временем базы данных выросли в объеме, и восстановление из бэкапа стало требовать больше времени.

    К бэкапам добавили репликацию на базе VMware vCloud Availability. Реплики виртуальных машин хранятся на резервной площадке в Санкт-Петербурге и обновляются каждые 5 минут. Если на основной площадке происходит сбой, сотрудники самостоятельно переключаются на реплику виртуальной машины в Санкт-Петербурге и продолжают работу с ней.

Все рассмотренные решения обеспечивают высокую доступность, но не спасают от потерь данных из-за вируса-шифровальщика или случайной ошибки сотрудника. На этот случай нам понадобятся бэкапы, которые обеспечат нужный RPO.

5. Не забыть про резервное копирование

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

Строго говоря, бэкап это не DR. И вот почему:

  • Это долго. Если данные измеряются в терабайтах, на восстановление потребуется не один час. Нужно восстановить, назначить сеть, проверить, что включится, посмотреть, что данные в порядке. Так что обеспечить хороший RTO можно, только если данных мало.
  • Данные могут восстановиться не с первого раза, и нужно заложить время на повторное действие. Например, бывают случаи, когда мы точно не знаем время потери данных. Допустим, потерю заметили в 15.00, а копии делаются каждый час. С 15.00 мы смотрим все точки восстановления: 14:00, 13:00 и так далее. Если система важная, мы стараемся минимизировать возраст точки восстановления. Но если в свежем бэкапе не нашлось нужных данных, берем следующую точку это дополнительное время.

При этом расписание резервного копирования может обеспечить нужный RPO. Для бэкапов важно предусмотреть георезервирование на случай проблем с основной площадкой. Часть резервных копий рекомендуется хранить отдельно.

В итоговом плане послеаварийного восстановления должно быть минимум 2 инструмента:

  • Один из вариантов 1-4, который защитит системы от сбоев и падений.
  • Резервное копирование для защиты данных от потерь.

Также стоит позаботиться о резервном канале связи на случай падения основного интернет-провайдера. И вуаля! DR на минималках уже готов.
Подробнее..

Exchange Server и правила его виртуальной жизни

04.02.2021 18:19:53 | Автор: admin

Мы размещаем Exchange Server в виртуальной среде, если хотим гибко масштабироваться и более эффективно использовать ресурсы. Но если виртуализировать без оглядки на лучшие практики, можно срезаться на обидных мелочах.

Я решил собрать в одном месте опыт работы с Exchange Server в виртуальной среде и показать, как обращаться с реальными и виртуальными процессорами и памятью, а также дисками и сетью. Я не дам конкретных пошаговых рецептов, что невозможно с учетом всего многообразия инфраструктур. Но покажу несколько правил, которые выведены опытным путем и не противоречат рекомендациям вендоров.

Это статья по итогам моего выступления на Raiffeisen DGTL Communications Online Meetup 21 января.

Оговорки и ограничения

Любое решение в виртуальной среде зависит от конкретных параметров физической инфраструктуры. Как бы мы ни хотели виртуализовываться дальше, мы неразрывно связаны с особенностями конкретных физических серверов.

Поэтому в начале оговорюсь про ограничения для Exchange Server 2019. На один сервер берем 256 Гб памяти и CPU не более двух сокетов. Эти требования растут из требований к физическим серверам. Напомню, что установка Exchange Server на железо (Bare-Metal) предпочитаемая архитектура Exchange Server с точки зрения Microsoft. Если у нас четырехсокетная физическая система, то виртуальная машина не должна выходить за пределы двух сокетов по vCPU. Эти параметры установлены опытным путем большими исследовательскими командами вендоров, так что примем за аксиому.

Сначала была NUMA: правила для vCPU

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

Топология NUMA дает процессору доступ и к своей локальной памяти, и к памяти других процессоров. Изначально в распоряжении каждого процессора есть:

  • собственный банк памяти, который находится в непосредственной близости к CPU;

  • несколько уровней кэша.

Все эти ресурсы памяти вместе с процессором и называют NUMA Node. Для простоты сделаем допущение, что количество физических сокетов в нашей системе равно количеству NUMA-нод. На практике это не так, так как существует Sub-NUMA Clustering. Но в рамках данной статьи мы не будем заострять на этом внимание.

Доступ к памяти других процессоров в рамках NUMA мы обозначаем как Memory Access. Когда при сайзинге виртуальной машины мы выходим за пределы ресурсов одной NUMA-ноды, ВМ размазывается по двум нодам, их память тоже размазывается.

Подводные камни на примере сайзинга ВМ в рамках NUMA Node. Допустим, у нас есть двухпроцессорный сервер, где стоят два процессора с 20 физическими ядрами и 256 Гб памяти, по 128 Гб на каждый процессор. У нас есть виртуальная машина с 20 процессорами и 128 Гб памяти. Любой планировщик любого гипервизора по умолчанию будет стараться разместить ее в рамках одной NUMA-ноды.

Если мы докинем ресурсы процессора до 24, то машина переедет на две физические NUMA-ноды. В этой ситуации мы можем накидывать виртуальной машине до 30 виртуальных процессоров. Но если мы назначим ей нечетное количество процессоров при расположении на двух нодах, планировщик сойдет с ума, пытаясь разделить нечетное число на 2. В результате мы просядем по производительности.

Именно поэтому лучшие практики рекомендуют при сайзинге машины обращаться к таблице распределения по ядрам и NUMA-нодам. Вот пример для такой конфигурации: 4 сокета, 4 физических NUMA-ноды, 24 ядра на сокет, 96 логических потоков.

Источник: Best Practice Guide Microsoft Exchange Server on VMware vSphere, стр. 11.Источник: Best Practice Guide Microsoft Exchange Server on VMware vSphere, стр. 11.

Все становится еще интереснее, когда появляется vNUMA в ESXi.Подробнее про ее причуды мы уже писали тут.

vNUMA позволяет эмулировать физическую топологию NUMA для ВМ и принудительно располагать ВМ на NUMA-нодах. Начиная с VMware версии 6.0, vNUMA старается предоставить машине топологию в соответствии с физическими NUMA-нодами. Но все равно нужно следить, чтобы физические и виртуальные сущности совпадали. Использование vNUMA поддерживается при развертывании Exchange Server 2016/2019, но с соблюдением ограничения в 2 сокета на одну ВМ.

Нюансы многопоточности и переподписки для разных гипервизоров. Если у процессора есть SMT (Simultaneous Multithreading), то разные планировщики обращаются с ней по-разному. Планировщик VMware сначала смотрит, как расположить ВМ по физическим ядрам, и только потом смотрит на гипертрединг и распределяет все по потокам. Hyper-V же сначала старается разложить ВМ по гипертрединговым ядрам, поэтому теоретически может разместить 2 виртуальные машины в одну NUMA-ноду за счет разных потоков.

Для разных случаев пригодятся разные варианты. Так что для VMware обратим внимание на настройку приоритетов гипертрединга, а затем рассмотрим нюансы переподписки на одном хосте.

Когда важнее гипертрединг. Допустим, у нас есть восьмиядерный процессор и виртуалка VMware с восемью ядрами. В такой конфигурации она будет жить на одной NUMA-ноде. Когда мы сайзим ВМ до 16 ядер, планировщик VMware по умолчанию размещает ее на 2 нодах. Но мы можем оставить ВМ в рамках одной ноды, например, чтобы сохранить быстрый доступ к кэшу одного процессора. В этом случае включаем настройку vcpu.numa.preferHT, которая отдает приоритет потокам SMT.

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

Это становится критичным, если мы размещаем на хостах несколько виртуальных машин. Так возникает переподписка, когда суммарное число ядер всех виртуальных машин на хосте превышает количество физических ядер.

В Hyper-V у нас есть 2 вида планировщика: Classic и Core. Нас интересует работа планировщика Core: он никогда не разместит 2 ВМ с нечетным количеством vCPU на двух соседних потоках (такая защита от Meltdown and Spectre), что увеличивает переподписку в угоду безопасности. Поэтому, в случае виртуализации Exchange Server на Hyper-V следует определиться с типом шедулера. Если требования ИБ позволяют, стоит сменить Core на Classic.

Когда может помешать переподписка. При переподписке на время одного физического ядра всегда претендуют несколько виртуальных машин. Даже если мы размазали всю нагрузку по SMT-потокам, то вычислительная мощность остается прежней и делится на всех. Если для сервиса критично время доступа к процессору, рекомендуют выделить отдельный физический кластер и таким образом контролировать переподписку.

Exchange Server часто относят к критичным приложениям, поэтому его тоже рекомендуется выделять в отдельный кластер. В этом случае мы изолируем рабочие нагрузки от других виртуальных машин и не заморачиваемся с настройкой приоритетов для гипертрединга. Если же время не так критично, то допустимым уровнем переподписки считается два к одному: два ядра виртуальной машины к одному физическому ядру на процессоре.

Итак, обобщим все рекомендации по vCPU.

  • При сайзинге ВМ всегда отталкиваемся от топологии NUMA конкретного физического сервера.

  • Количество vCPU делаем кратным числу физических ядер процессора.

  • Если мы выходим за пределы NUMA Node по ядрам, не допускаем нечетного количества ядер виртуального процессора.

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

  • Хорошим тоном является изоляция Exchange server в отдельный кластер ESXi или Hyper-V.

  • Если это невозможно, используем пул ресурсов, настраиваем приоритеты процессора для этих ВМ.

  • В Hyper-V принять решение о типе шедулеров на хостах.

Правила для оперативной памяти

Здесь мы тоже зависим от топологии NUMA, потому что память и процессор неразрывно связаны. Но в случае с оперативной памятью переподписка не допускается: выделенная память должна быть статична, это входит во все рекомендации VMware и Microsoft. В Hyper-V этот вопрос решен за нас: динамическая память отключена по умолчанию. А вот с VMware все не так однозначно, остановимся на этом подробнее.

Резервирование памяти для ВМ VMware. По умолчанию память VMware ESXi будет динамической. Это значит, что гипервизор в любой момент может забрать у виртуальной машины неиспользуемую память за счет балунинга. Так повышается риск вывода памяти в SWAP: когда гипервизор заберет себе освободившуюся память, слепок памяти ВМ отправится на жесткий диск, производительность упадет. Раньше мы подробно описывали это здесь.

При этом у VMware есть опция горячего добавления памяти (Memory Hot-Add), но эта настройка отключает механизм vNUMA и все равно потребует перезагрузки. Так что не советую ею пользоваться: мы все равно получим простой и рискуем снизить производительность.

Для резервирования памяти под виртуальную машину используем Reservation Pools в режиме All Memory Locked. При этом на других хостах кластера должно быть достаточное количество оперативной памяти, чтобы при перебалансировке DRS или при перезапуске ВМ по HA виртуальная машина могла переехать/перезапуститься на новом хосте. Если же мы строим выделенный кластер под Exchange, то вопрос переподписки уже не стоит так остро.

Сайзинг памяти. При сайзинге виртуальной машины имеет смысл заранее определить предельное значение оперативной памяти.

Чтобы рассчитать ожидаемый размер загрузки, смотрим такие параметры:

  • количество почтовых ящиков,

  • размеры и количество писем,

  • количество активных баз данных и их реплик,

  • частота резервного копирования и требования к ресурсам для системы резервного копирования,

  • количество пользовательских устройств для доступа к почте.

Этот список параметров не достаточен и сильно зависит от конфигурации Microsoft Exchange.

Как отправную точку для расчетов можно использовать Exchange Calculator, если учитывать несколько его особенностей:

  • исходит из максимальных лимитов на ВМ,

  • не учитывает топологию NUMA на физических серверах,

  • закладывает 10% накладных расходов на гипервизор (в реальности эти накладные расходы не превышают пять процентов),

  • не учитывает переподписку по CPU, количество ВМ и конфигурацию гипервизоров.

Теперь обобщим рекомендации для оперативной памяти:

  • Рассчитываем память, исходя из топологии NUMA.

  • Используем 100% резервирование памяти под ВМ.

  • Не допускаем переподписку.

  • Не используем горячее добавление памяти.

  • Используем выделенный кластер для 100% резервирования памяти под сервер.

  • Оставляем минимум 20% свободной памяти на хостах для возможности маневра при балансировке ВМ.

  • Если нужно увеличить ресурсы, думаем над горизонтальным расширением DAG.

Общие правила для дисков и сети

Правила хорошего тона для дисков и сети применимы не только для Exchange, но касаются виртуализации Windows-сервера вообще. Так что объединил их в один раздел.

Рекомендации для дисковой подсистемы.

В VMware ESXi поддерживаются такие диски:

  • VMDK на VMFS6, NFS, vSAN Datastore,

  • RDM Raw Device Mapping.

Здесь же поддерживаются разные виртуальные SCSI-контроллеры:

  1. LSI Logic SAS. До vSphere 7.0 этот контроллер ставился по умолчанию для виртуальных машин Windows. Как результат, часто можно увидеть развертывания Exchange с его использованием.

    Достоинства:

    • прекрасно распознается Windows без инъекции драйверов;

    • приемлемая производительность по сравнению с AHCI SATA.

    Недостатки:

    • производительность ниже PVSCSI за счет дополнительной прослойки при передаче SCSI-команд;

    • выше нагрузка на CPU по сравнению с PVSCSI;

    • как следствие, более высокая задержка.

  2. AHCI SATA Controller. Контроллер SATA можно использовать отдельно или в дополнение к контроллерам LSI или PVSCSI для предоставления большого числа дисков для ВМ. На этом его достоинства заканчиваются.

    Недостатки:

    • выше загрузка CPU на I/O по сравнению с LSI и PVSCSI;

    • ниже общая производительность по сравнению с LSI и PVSCSI;

    • выше латенси по сравнению с LSI и PVSCS.

  3. Паравиртуальный SCSI-контроллер (PVSCSI). Контроллер PVSCSI является самым производительным контроллером по сравнению с вышеперечисленными и хорошо подходит для высокопроизводительных сред хранения.

    Достоинства:

    • производительность за счет более прозрачной передачи SCSI-команд;

    • меньше задержка и больше IOPS по сравнению с другими контроллерами;

    • снижение нагрузки на CPU в гостевой ОС (и на ESXi).

    Недостатки (если их можно так назвать):

    • гостевая кластеризация не поддерживается (нельзя отдать Shared VMDK), но это не относится ни к Exchange Server, ни к SQL Server в сценарии Always-On;

    • PVSCSI требует инъекции драйверов в Windows или ВМ, для которой мы хотим заменить LSI на PVSCSI.

    • для добавления требует выключения ВМ.

  4. NVMe Controller. Впервые появился в vSphere 6.5. Начиная с vSphere 7.0, является контроллером по умолчанию для ВМ с ОС Windows, вместо морально устаревшего LSI. Этот тип виртуального контроллера оптимизирован для работы на All-Flash массивах (SSD/NVMe). Лишен всех недостатков PVSCSI и сохраняет все преимущества. Следовательно, может рассматриваться как контроллер для баз данных Exchange. На начало 2021 года поддерживает только 15 дисков на контроллер. Этот факт стоит учитывать при планировании хранилищ баз данных Exchange Server.

Для Hyper-V рекомендации по дисковой подсистеме такие:

  • VHDX может размещаться на NTFS, ReFS, CSV, SMB3, S2D (т.е. любое поддерживаемое хранилище).

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

Общие рекомендации к сети.

  • Используем синтетические адаптеры: VMXNET3 или Synthetic Network Adapter.

  • Включаем и настраиваем RSS со стороны гостевой операционной системы, чтобы параллельно принимать и передавать данные на ВМ по ядрам vCPU. Для VMXNET3 дополнительно включаем Recv Segment Coalescing для IPv4 и IPv6.

  • Если есть возможность, используем сетевые адаптеры SR-IOV. Этот способ подойдет, если у нас жесткие требования к пропускной способности сети и нужен гарантированный канал с очень большой скоростью.Но этот пункт скорее для ВМ, которые требовательны к пропускной способности адаптеров.

  • Делаем несколько сетевых адаптеров в Exchange-сервере, чтобы использовать механизм SMB Multi-Channel. Так мы сможем не только принимать, но и отдавать несколько потоков через протокол SMB.

И в заключение несколько полезных ссылок по теме:

Подробнее..

Как восстановить NSX Edge и перенести его настройки через API

11.02.2021 12:14:32 | Автор: admin

В этой статье расскажу, как работать через API с NSX Edge. Это решение от VMware выполняет для виртуального дата-центра функции маршрутизации, Firewall, NAT, DHCP, VPN и другие. Благодаря возможностям работы через API отправка запросов к Edge становится удобнее и нагляднее, чем в командной строке.

Описанный здесь способ также решает некоторые проблемы обращения к Edge через vCloud Director. При работе через API у нас есть возможность работать с Edge напрямую через NSX или через vCloud Director, а также с помощью API обращаться к БД vCloud Director. Покажу оба варианта.

Вот наиболее интересные сценарии, когда нам пригодится использование API:

  1. Миграция Edge в другой NSX-менеджер.

  2. Восстановление Edge или части его настроек. Например, если после миграции из одного дата-центра в другой мы также переносим настройки файрвола, VPN, балансировщика нагрузки и т. п.

  3. Резервное копирование настроек. Например, если мы хотим сохранить конфигурацию Edge в формате XML и при необходимости вернуться к ней.

В описании я использую NSX-V 6.4.6 и vCloud Director 10.2, однако статья актуальна и для других версий ПО. Для всех экспериментов пользовался документацией по API отсюда.

Готовим инструмент для работы с API

Для работы с API вы можете использовать любой удобный продукт. В моем примере будем работать через Postman: чаще всего его применяют для тестирования различных API и отправки запросов на сервер. Сами специалисты VMware нередко используют его для работы с API, так что можно считать это косвенной рекомендацией вендора.

Сразу напомню самые распространенные типы запросов:

GET получение информации из инфраструктуры, не выполняет изменения.

POST чаще всего создание нового объекта или добавление конфигурации к существующему.

PUT обновление текущего объекта, старые данные объекта затираются.

DELETE удаление объекта.

Чтобы запросы работали корректно, настроим Postman для работы с NSX-менеджером, который управляет всеми объектами Edge.

  1. Открываем Postman и настраиваем авторизацию. Выбираем тип Basic Auth, указываем логин и пароль от админской учетной записи.

  2. Настраиваем заголовки. Указываем Content-Type: application/xml

  3. Пробуем вывести список Edge командой GET https://nsx-fqdn/api/4.0/edges (где nsx-fqdn это IP-адрес или FQDN NSX-менеджера).

Получили 200 ОК, значит, все в порядке: авторизация, заголовки и другие параметры указаны верно.

Вывод этого запроса покажет длинный список Edge и базовую информацию по каждому из них. Посмотрим, как это использовать в нужном нам сценарии.

Восстанавливаем Edge целиком или его отдельные настройки

Возьмем пример, где актуальны все три сценария использования API.

Итак, у нас есть 2 NSX-менеджера, один из которых мы восстановили в изолированную сеть из бэкапа недельной давности, как описано здесь.

Обозначим оригинальный NSX-менеджер как nsx-fqdn-1, а восстановленный NSX-manager как nsx-fqdn-2. Предположим, по какой-то причине объект edge-8 был удален, и нам необходимо его восстановить.

  1. Для начала сформируем запрос на получение конфига этого Edge из восстановленного NSX. Авторизация и заголовки у нас уже настроены, необходимо только указать в запросе нужный FQDN NSX-менеджера.

    GET https://nsx-fqdn-2/api/4.0/edges/edge-8

  2. Получаем вот такую конфигурацию. Часть конфигурации изменил, чтобы избежать утечки данных.

    Конфиг целиком.
    <?xml version="1.0" encoding="UTF-8"?><edge>    <id>edge-8</id>    <version>8</version>    <description></description>    <status>deployed</status>    <tenant>88ed64d3-516d-4932-a262-9987e9779f1e</tenant>    <name>vse-test-delete-edge (877a6842-8a67-4dad-87cf-81e155c45763)</name>    <fqdn>vse-f8b2ccec-ef9b-464f-8bab-eb67e27f15c3</fqdn>    <enableAesni>true</enableAesni>    <enableFips>false</enableFips>    <vseLogLevel>info</vseLogLevel>    <vnics>        <vnic>            <label>vNic_0</label>            <name>vnic0</name>            <addressGroups>                <addressGroup>                    <primaryAddress>esxternal-ip</primaryAddress>                    <secondaryAddresses>                        <ipAddress>esxternal-ip</ipAddress>                    </secondaryAddresses>                    <subnetMask>255.255.255.192</subnetMask>                    <subnetPrefixLength>26</subnetPrefixLength>                </addressGroup>            </addressGroups>            <mtu>1500</mtu>            <type>uplink</type>            <isConnected>true</isConnected>            <index>0</index>            <portgroupId>dvportgroup-731</portgroupId>            <portgroupName>internet</portgroupName>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_1</label>            <name>vnic1</name>            <addressGroups>                <addressGroup>                    <primaryAddress>10.0.0.1</primaryAddress>                    <subnetMask>255.255.255.0</subnetMask>                    <subnetPrefixLength>24</subnetPrefixLength>                </addressGroup>            </addressGroups>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>true</isConnected>            <index>1</index>            <portgroupId>virtualwire-380</portgroupId>            <portgroupName>dvs.VCDVStest-1-5ca1ab95-ded5-4af5-bf90-96eaa70e5512</portgroupName>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_2</label>            <name>vnic2</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>2</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_3</label>            <name>vnic3</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>3</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_4</label>            <name>vnic4</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>4</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_5</label>            <name>vnic5</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>5</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_6</label>            <name>vnic6</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>6</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_7</label>            <name>vnic7</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>7</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_8</label>            <name>vnic8</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>8</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>        <vnic>            <label>vNic_9</label>            <name>vnic9</name>            <addressGroups/>            <mtu>1500</mtu>            <type>internal</type>            <isConnected>false</isConnected>            <index>9</index>            <enableProxyArp>false</enableProxyArp>            <enableSendRedirects>true</enableSendRedirects>        </vnic>    </vnics>    <appliances>        <applianceSize>compact</applianceSize>        <appliance>            <highAvailabilityIndex>0</highAvailabilityIndex>            <vcUuid>500615b5-3f65-146a-1d5c-0dce84fc60ea</vcUuid>            <vmId>vm-4274</vmId>            <resourcePoolId>resgroup-53</resourcePoolId>            <resourcePoolName>System vDC (c8a308dd-2509-48ad-ab8e-54e93938394d)</resourcePoolName>            <datastoreId>datastore-1</datastoreId>            <datastoreName>DATASTORE</datastoreName>            <hostId>host-18</hostId>            <hostName>ESXi-host</hostName>            <vmFolderId>group-v453</vmFolderId>            <vmFolderName>Service VMs</vmFolderName>            <vmHostname>vse-f8b2ccec-ef9b-464f-8bab-eb67e27f15c3-0</vmHostname>            <vmName>vse-test-delete-edge (877a6842-8a67-4dad-87cf-81e155c45763)-0</vmName>            <deployed>true</deployed>            <cpuReservation>                <limit>-1</limit>                <reservation>64</reservation>            </cpuReservation>            <memoryReservation>                <limit>-1</limit>                <reservation>256</reservation>            </memoryReservation>            <edgeId>edge-8</edgeId>            <configuredResourcePool>                <id>resgroup-53</id>                <name>System vDC (c8a308dd-2509-48ad-ab8e-54e93938394d)</name>                <isValid>true</isValid>            </configuredResourcePool>            <configuredDataStore>                <id>datastore-1</id>                <name>DATASTORE</name>                <isValid>true</isValid>            </configuredDataStore>            <configuredHost>                <id>host-18</id>                <name>ESXi-host</name>                <isValid>true</isValid>            </configuredHost>            <configuredVmFolder>                <id>group-v453</id>                <name>Service VMs</name>                <isValid>true</isValid>            </configuredVmFolder>        </appliance>        <deployAppliances>true</deployAppliances>    </appliances>    <cliSettings>        <remoteAccess>false</remoteAccess>        <userName>admin</userName>        <sshLoginBannerText>***************************************************************************NOTICE TO USERS This computer system is the private property of its owner, whetherindividual, corporate or government.  It is for authorized use only.Users (authorized or unauthorized) have no explicit or implicitexpectation of privacy. Any or all uses of this system and all files on this system may beintercepted, monitored, recorded, copied, audited, inspected, anddisclosed to your employer, to authorized site, government, and lawenforcement personnel, as well as authorized officials of governmentagencies, both domestic and foreign. By using this system, the user consents to such interception, monitoring,recording, copying, auditing, inspection, and disclosure at thediscretion of such personnel or officials.  Unauthorized or improper useof this system may result in civil and criminal penalties andadministrative or disciplinary action, as appropriate. By continuing touse this system you indicate your awareness of and consent to these termsand conditions of use. LOG OFF IMMEDIATELY if you do not agree to theconditions stated in this warning. ****************************************************************************</sshLoginBannerText>        <passwordExpiry>99999</passwordExpiry>    </cliSettings>    <features>        <nat>            <version>3</version>            <enabled>true</enabled>            <natRules>                <natRule>                    <ruleId>196609</ruleId>                    <ruleTag>196609</ruleTag>                    <loggingEnabled>false</loggingEnabled>                    <enabled>true</enabled>                    <translatedAddress>esxternal-ip</translatedAddress>                    <ruleType>user</ruleType>                    <action>snat</action>                    <vnic>0</vnic>                    <originalAddress>10.0.0.0/24</originalAddress>                    <snatMatchDestinationAddress>any</snatMatchDestinationAddress>                    <protocol>any</protocol>                    <originalPort>any</originalPort>                    <translatedPort>any</translatedPort>                    <snatMatchDestinationPort>any</snatMatchDestinationPort>                </natRule>                <natRule>                    <ruleId>196610</ruleId>                    <ruleTag>196610</ruleTag>                    <loggingEnabled>false</loggingEnabled>                    <enabled>true</enabled>                    <translatedAddress>10.0.0.3</translatedAddress>                    <ruleType>user</ruleType>                    <action>dnat</action>                    <vnic>0</vnic>                    <originalAddress>esxternal-ip</originalAddress>                    <dnatMatchSourceAddress>any</dnatMatchSourceAddress>                    <protocol>tcp</protocol>                    <originalPort>443</originalPort>                    <translatedPort>8443</translatedPort>                    <dnatMatchSourcePort>any</dnatMatchSourcePort>                </natRule>            </natRules>            <nat64Rules/>        </nat>        <l2Vpn>            <version>2</version>            <enabled>false</enabled>            <logging>                <enable>true</enable>                <logLevel>notice</logLevel>            </logging>        </l2Vpn>        <featureConfig/>        <featureConfig/>        <dns>            <version>2</version>            <enabled>false</enabled>            <cacheSize>16</cacheSize>            <listeners>                <vnic>any</vnic>            </listeners>            <dnsViews>                <dnsView>                    <viewId>view-0</viewId>                    <name>vsm-default-view</name>                    <enabled>true</enabled>                    <viewMatch>                        <ipAddress>any</ipAddress>                        <vnic>any</vnic>                    </viewMatch>                    <recursion>false</recursion>                </dnsView>            </dnsViews>            <logging>                <enable>false</enable>                <logLevel>info</logLevel>            </logging>        </dns>        <syslog>            <version>2</version>            <enabled>false</enabled>            <protocol>udp</protocol>        </syslog>        <sslvpnConfig>            <version>2</version>            <enabled>false</enabled>            <logging>                <enable>true</enable>                <logLevel>notice</logLevel>            </logging>            <advancedConfig>                <enableCompression>false</enableCompression>                <forceVirtualKeyboard>false</forceVirtualKeyboard>                <randomizeVirtualkeys>false</randomizeVirtualkeys>                <preventMultipleLogon>false</preventMultipleLogon>                <clientNotification></clientNotification>                <enablePublicUrlAccess>false</enablePublicUrlAccess>                <timeout>                    <forcedTimeout>0</forcedTimeout>                    <sessionIdleTimeout>10</sessionIdleTimeout>                </timeout>            </advancedConfig>            <clientConfiguration>                <autoReconnect>true</autoReconnect>                <upgradeNotification>false</upgradeNotification>            </clientConfiguration>            <layoutConfiguration>                <portalTitle>VMware</portalTitle>                <companyName>VMware</companyName>                <logoExtention>jpg</logoExtention>                <logoUri>/api/4.0/edges/edge-8/sslvpn/config/layout/images/portallogo</logoUri>                <logoBackgroundColor>56A2D4</logoBackgroundColor>                <titleColor>996600</titleColor>                <topFrameColor>000000</topFrameColor>                <menuBarColor>999999</menuBarColor>                <rowAlternativeColor>FFFFFF</rowAlternativeColor>                <bodyColor>FFFFFF</bodyColor>                <rowColor>F5F5F5</rowColor>            </layoutConfiguration>            <authenticationConfiguration>                <passwordAuthentication>                    <authenticationTimeout>1</authenticationTimeout>                    <primaryAuthServers/>                    <secondaryAuthServer/>                </passwordAuthentication>            </authenticationConfiguration>        </sslvpnConfig>        <featureConfig/>        <highAvailability>            <version>3</version>            <enabled>false</enabled>            <declareDeadTime>15</declareDeadTime>            <logging>                <enable>false</enable>                <logLevel>info</logLevel>            </logging>            <security>                <enabled>false</enabled>            </security>        </highAvailability>        <routing>            <version>3</version>            <enabled>true</enabled>            <routingGlobalConfig>                <ecmp>false</ecmp>                <logging>                    <enable>false</enable>                    <logLevel>info</logLevel>                </logging>            </routingGlobalConfig>            <staticRouting>                <defaultRoute>                    <vnic>0</vnic>                    <mtu>1500</mtu>                    <gatewayAddress>external-ip</gatewayAddress>                    <adminDistance>1</adminDistance>                </defaultRoute>                <staticRoutes/>            </staticRouting>            <ospf>                <enabled>false</enabled>                <ospfAreas>                    <ospfArea>                        <areaId>51</areaId>                        <type>nssa</type>                        <authentication>                            <type>none</type>                        </authentication>                    </ospfArea>                    <ospfArea>                        <areaId>0</areaId>                        <type>normal</type>                        <authentication>                            <type>none</type>                        </authentication>                    </ospfArea>                </ospfAreas>                <ospfInterfaces/>                <redistribution>                    <enabled>false</enabled>                    <rules/>                </redistribution>                <gracefulRestart>true</gracefulRestart>                <defaultOriginate>false</defaultOriginate>            </ospf>        </routing>        <featureConfig/>        <gslb>            <version>2</version>            <enabled>false</enabled>            <serviceTimeout>6</serviceTimeout>            <persistentCache>                <maxSize>20</maxSize>                <ttl>300</ttl>            </persistentCache>            <queryPort>5666</queryPort>            <logging>                <enable>false</enable>                <logLevel>info</logLevel>            </logging>        </gslb>        <firewall>            <version>6</version>            <enabled>true</enabled>            <globalConfig>                <tcpPickOngoingConnections>false</tcpPickOngoingConnections>                <enableFtpLooseMode>false</enableFtpLooseMode>                <tcpAllowOutOfWindowPackets>false</tcpAllowOutOfWindowPackets>                <tcpSendResetForClosedVsePorts>true</tcpSendResetForClosedVsePorts>                <dropInvalidTraffic>true</dropInvalidTraffic>                <logInvalidTraffic>false</logInvalidTraffic>                <tcpTimeoutOpen>30</tcpTimeoutOpen>                <tcpTimeoutEstablished>21600</tcpTimeoutEstablished>                <tcpTimeoutClose>30</tcpTimeoutClose>                <udpTimeout>60</udpTimeout>                <icmpTimeout>10</icmpTimeout>                <icmp6Timeout>10</icmp6Timeout>                <ipGenericTimeout>120</ipGenericTimeout>                <enableSynFloodProtection>false</enableSynFloodProtection>                <logIcmpErrors>false</logIcmpErrors>                <dropIcmpReplays>false</dropIcmpReplays>                <enableSnmpAlg>true</enableSnmpAlg>                <enableFtpAlg>true</enableFtpAlg>                <enableTftpAlg>true</enableTftpAlg>            </globalConfig>            <defaultPolicy>                <action>deny</action>                <loggingEnabled>false</loggingEnabled>            </defaultPolicy>            <firewallRules>                <firewallRule>                    <id>131076</id>                    <ruleTag>131076</ruleTag>                    <name>firewall</name>                    <ruleType>internal_high</ruleType>                    <enabled>true</enabled>                    <loggingEnabled>false</loggingEnabled>                    <description>firewall</description>                    <action>accept</action>                    <source>                        <exclude>false</exclude>                        <vnicGroupId>vse</vnicGroupId>                    </source>                </firewallRule>                <firewallRule>                    <id>131077</id>                    <ruleTag>131077</ruleTag>                    <name>test</name>                    <ruleType>user</ruleType>                    <enabled>true</enabled>                    <loggingEnabled>false</loggingEnabled>                    <action>accept</action>                    <source>                        <exclude>false</exclude>                        <vnicGroupId>vnic-index-1</vnicGroupId>                    </source>                    <application>                        <service>                            <protocol>icmp</protocol>                            <icmpType>any</icmpType>                        </service>                    </application>                </firewallRule>                <firewallRule>                    <id>131075</id>                    <ruleTag>131075</ruleTag>                    <name>default rule for ingress traffic</name>                    <ruleType>default_policy</ruleType>                    <enabled>true</enabled>                    <loggingEnabled>false</loggingEnabled>                    <description>default rule for ingress traffic</description>                    <action>deny</action>                </firewallRule>            </firewallRules>        </firewall>        <loadBalancer>            <version>2</version>            <enabled>false</enabled>            <enableServiceInsertion>false</enableServiceInsertion>            <accelerationEnabled>false</accelerationEnabled>            <monitor>                <monitorId>monitor-1</monitorId>                <type>tcp</type>                <interval>5</interval>                <timeout>15</timeout>                <maxRetries>3</maxRetries>                <name>default_tcp_monitor</name>            </monitor>            <monitor>                <monitorId>monitor-2</monitorId>                <type>http</type>                <interval>5</interval>                <timeout>15</timeout>                <maxRetries>3</maxRetries>                <method>GET</method>                <url>/</url>                <name>default_http_monitor</name>            </monitor>            <monitor>                <monitorId>monitor-3</monitorId>                <type>https</type>                <interval>5</interval>                <timeout>15</timeout>                <maxRetries>3</maxRetries>                <method>GET</method>                <url>/</url>                <name>default_https_monitor</name>            </monitor>            <logging>                <enable>false</enable>                <logLevel>info</logLevel>            </logging>        </loadBalancer>        <ipsec>            <version>2</version>            <enabled>false</enabled>            <logging>                <enable>true</enable>                <logLevel>warning</logLevel>            </logging>            <sites/>            <global>                <psk>******</psk>                <caCertificates/>                <crlCertificates/>            </global>        </ipsec>        <bridges>            <version>2</version>            <enabled>false</enabled>        </bridges>        <dhcp>            <version>2</version>            <enabled>false</enabled>            <staticBindings/>            <ipPools/>            <logging>                <enable>false</enable>                <logLevel>info</logLevel>            </logging>        </dhcp>    </features>    <autoConfiguration>        <enabled>true</enabled>        <rulePriority>high</rulePriority>    </autoConfiguration>    <type>gatewayServices</type>    <isUniversal>false</isUniversal>    <hypervisorAssist>false</hypervisorAssist>    <tunnels/></edge>
    
  3. Теперь на основе полученной конфигурации в виде XML создадим новый Edge. Для этого:

    • Удаляем из него данную часть

      <id>edge-8</id><version>8</version><status>deployed</status>
      
    • Меняем <name> </name>, если Edge с таким именем уже есть.

    • Если мы хотим восстановиться в другое место, меняем теги расположения

      <resourcePoolId><resourcePoolName><vmFolderId><vmFolderName>
      

      и другие.

    • С помощью тега <password> </password> вставляем пароль на Edge между тегами <userName> и <sshLoginBannerText>, например:

      <userName>admin</userName><password>Test123!test123!</password><sshLoginBannerText>
      
    • Удаляем из раздела NAT теги ruleId, ruleTag, ruleType, например:

      <ruleId>196609</ruleId><ruleTag>196609</ruleTag><ruleType>user</ruleType>
      
  4. С помощью итоговой XML выполняем команду на создание нового Edge. Для этого вставим в поле Body всю XML, укажем тип raw XML и отправим запрос.

    POST https://nsx-fqdn-1/api/4.0/edges/

Edge восстановлен под именем edge-9.

Теперь отдельно восстановим настройки.

  1. Разберемся с ситуацией, когда нам нужно отдельно добавить правила NAT. Для начала нужно понять, в каком формате Edge формирует эти правила. Можно посмотреть в общем конфиге по тегу <nat>. Но чтобы долго не искать, получим NAT-правила отдельным запросом:

    GET https://nsx-fqdn-1/api/4.0/edges/edge-9/nat/config

  2. Добавим правила NAT с помощью POST-запроса. Для этого сначала удалим теги ruleId, ruleTag, ruleType, в нашем случае:

    <ruleId>196609</ruleId><ruleTag>196609</ruleTag><ruleType>user</ruleType>
    

    И отправляем POST https://nsx-fqdn-1/api/4.0/edges/edge-9/nat/config/rules

    Пример NAT-правила:

    <natRules><natRule><action>dnat</action><vnic>0</vnic><originalAddress>esxternal_ip</originalAddress><translatedAddress>192.168.1.9</translatedAddress><loggingEnabled>false</loggingEnabled><enabled>true</enabled><description></description><protocol>udp</protocol><originalPort>80</originalPort><translatedPort>80</translatedPort></natRule></natRules>
    
  3. Важно учесть, что правила NAT через POST-запрос не перезаписываются, а добавляются заново.

    Вот что будет, если выполнить запрос дважды:

Аналогично можно выполнить операции и с настройками по другим сервисам (firewall, vpn, load balancer и другие). На будущее мы можем сохранить настройки в виде XML и хранить этот файл в качестве резервной копии.

Используем API вместе с vCloud Director. В нашем сценарии мы случайно удалили нужный нам Edge и затем восстановили его из резервной копии через API. Если Edge использовался vCloud Directorом, но был удален через NSX-менеджер, то сам объект edge-8 удалится из vCenter, а ссылка на него останется. После восстановления наш Edge получил новый id, о котором vCenter еще не знает. При попытке обратиться к сервисам через vCloud Director всплывет белый экран. Чтобы исправить это, внесем исправления в БД vCloud Director для изменения id c edge-8 на edge-9.

  1. Отправим запрос для таблицы gateway, чтобы узнать id:

    select * from gateway where name like 'test-delete-edge%'

    Получим:

    -- id=' 877a6842-8a67-4dad-87cf-81e155c45763 ' --name=' test-delete-edge' --backing-ref='edge-8'

  2. Проверяем, в каких таблицах есть упоминание об этом Edge:

    select * from global_search('edge-8')

  3. Проверяем, что выбрали нужный Edge:

    select * from gateway where id = '877a6842-8a67-4dad-87cf-81e155c45763'

  4. Обновляем id Edge и убеждаемся, что он изменен.

    update gateway set backing_ref = 'edge-9' where id = '877a6842-8a67-4dad-87cf-81e155c45763'

  5. Проверим Edge со стороны vCloud Director.

Теперь сервисы отображаются корректно.

Перенесем сервисы из одного Edge в другой

Иногда с Edge требуется работать напрямую через vCloud Director, но и здесь Postman может пригодиться. Рассмотрим сценарий переноса сервисов через API vCloud Director с сохранением адресации:

  1. Открываем Postman.

  2. Настраиваем авторизацию:

    Autorization: Basic Auth - administrator@system

  3. Затем выполняем GET https://vCD-fqdn/api/versions

    Проверяем, отработал ли запрос и смотрим на версии api.

  4. Добавляем заголовок с этой версией:

    Accept application/*+xml;version=35.0

  5. Теперь перейдем на авторизацию по токену. Сначала получим токен с помощью запроса POST https://vCD-fqdn/api/sessions

    Берем отсюда: X-VMWARE-VCLOUD-ACCESS-TOKEN.

  6. Поменяем тип авторизации на Bearer Token и вставим значение X-VMWARE-VCLOUD-ACCESS-TOKEN.

  7. Выполняем запрос GET https://vCD-fqdn/api/admin, чтобы убедиться, что авторизация по токену работает.

  8. Открываем Powershell и выполняем connect-ciserver vCD-fqdn

    Далее: Get-OrgVdc OrgVDCName| Get-EdgeGateway EdgeName

    Копируем ссылку после Href.

    Href: https://vCD-fqdn/api/admin/edgeGateway/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  9. Возвращаемся в Postman и получаем исходный конфиг с помощью этой ссылки:

    GET https://vCD-fqdn/api/admin/edgeGateway/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  10. Создаем тело запроса на основе полученной конфигурации. Для этого берем такую шапку:

    <?xml version="1.0" encoding="UTF-8"?><EdgeGatewayServiceConfiguration   xmlns="http://personeltest.ru/away/www.vmware.com/vcloud/v1.5">
    

    и дальше копируем то, что было между тегами <EdgeGatewayServiceConfiguration></EdgeGatewayServiceConfiguration>

    Например:

    <?xml version="1.0" encoding="UTF-8"?><EdgeGatewayServiceConfiguration   xmlns="http://personeltest.ru/away/www.vmware.com/vcloud/v1.5">            <GatewayDhcpService>                <IsEnabled>false</IsEnabled>            </GatewayDhcpService>            <FirewallService>                <IsEnabled>true</IsEnabled>                <DefaultAction>allow</DefaultAction>                <LogDefaultAction>false</LogDefaultAction>            </FirewallService>            <NatService>                <IsEnabled>true</IsEnabled>                <NatRule>                    <RuleType>SNAT</RuleType>                    <IsEnabled>true</IsEnabled>                    <Id>196609</Id>                    <GatewayNatRule>                        <Interface href="http://personeltest.ru/aways/fqdn-vcd/api/admin/network/xxxxxx" name="network" type="application/vnd.vmware.admin.network+xml"/>                        <OriginalIp>10.0.0.0/24</OriginalIp>                        <TranslatedIp>external-ip</TranslatedIp>                    </GatewayNatRule>                </NatRule>            </NatService>            <GatewayIpsecVpnService>                <IsEnabled>false</IsEnabled>            </GatewayIpsecVpnService>            <StaticRoutingService>                <IsEnabled>true</IsEnabled>            </StaticRoutingService>            <LoadBalancerService>                <IsEnabled>false</IsEnabled>            </LoadBalancerService></EdgeGatewayServiceConfiguration>
    

    Если на Edge меняются портгруппы, необходимо в теге <Interface/> заменить сети из старого Edge на сети из нового Edge, куда переносим сервисы:

    <Interface href="http://personeltest.ru/aways/fqdn-vcd/api/admin/network/xxxxxx" name="network" type="application/vnd.vmware.admin.network+xml"/>
    
  11. Добавим новую конфигурацию POST-запросом. Для этого вставим полученную XML в Body в формате raw для пустого Edge. Добавляем заголовок content-type application/vnd.vmware.admin.edgeGatewayServiceConfiguration+xml

    В сам запрос вставляем ссылку на нужный Edge, добавив к url /action/configureServices, например:

    POST https://vCD-fqdn/api/admin/edgeGateway/XXXX/action/configureServices

Конфигурация перенесена.

Этим же способом можно автоматизировать процесс сбора конфигурации. Так можно собирать XML для каждого Edge с помощью скриптов, опрашивающих api. Еще одна отдельная тема открытие доступа к БД vCloud Director, а также некоторые операции с БД. Если интересно узнать об этом подробнее, пишите, расскажу отдельно.

Подробнее..

Гуляем по новому дата-центру Ростелеком-ЦОД в Санкт-Петербурге

25.02.2021 12:15:55 | Автор: admin

Сегодня отправимся в Калининский район Санкт-Петербурга и со всех сторон посмотрим на дата-центр "Ростелеком-ЦОД", который запустился в декабре 2020 года. Новый ЦОД построили "с нуля" недалеко от корпусов завода ЛОМО по адресу: ул. Жукова, 43 (не путать с проспектом Маршала Жукова!).

Пять лет назад здесь было заброшенное строительство мазутохранилища (любим строить на территориях старых заводов). Сейчас на петербургской площадке заказчики уже арендовали первые стойки и заработали облачные сервисы DataLine.

Несколько фактов про ЦОД

  • Общая площадь: 4 266 кв м.

  • Общая емкость: 792 стойко-мест.

  • 4 машинных зала, до 198 стоек каждый.

  • Проектная мощность: 7 400 кВт.

  • Соответствует стандарту Tier III.

Из истории

Перспективную территорию в Санкт-Петербурге заметили еще в 2016 году. Когда-то давно здесь хотели построить мазутохранилище для ТЭЦ, но в конце 1980-х строительство забросили, и площадка так и оставалась невостребованной.

Зато этим местом интересовались киношники. В огромных резервуарах стояла вода, в них проходили подводные съемки для петербургских фильмов.

В 2018 году здесь начался демонтаж.

Хроники расчистки площадки.Хроники расчистки площадки.

Затем площадку дренировали и подготовили почву к строительству. Так как местность оказалась болотистой, фундамент дополнительно укрепили с помощью бетонной плиты на глубине 8 метров.

В 2019 основное строительство завершилось, а в 2020 началось самое интересное: монтаж инженерных систем. Мы немного следили за процессом и делились наблюдениями в соцсетях по хештегу #дневникстройки заглядывайте по ссылке, если тоже любите стройку.

Посмотрим, что появилось на месте стройплощадки.

Так эта же площадка выглядела в июле и в октябре 2020 года. Так эта же площадка выглядела в июле и в октябре 2020 года.

Физическая безопасность

Добраться до дата-центра в Санкт-Петербурге удобнее всего по улице Чугунной. На общественном транспорте можно доехать до ст. м. "Выборгская" и сесть на маршрутку К-283 до остановки "Чугунная, 46". Вход и въезд через ворота со стороны ул. Чугунной.

На территории дата-центра действует пропускная система: заранее заказываем пропуск и на входе предъявляем охраннику паспорт. Водителям на своем авто также нужно указать номер машины.

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

Вся прилегающая территория хорошо просматривается благодаря видеокамерам.

Нас уже заметили.Нас уже заметили.

Внутрь здания дата-центра проходим через турникет мимо еще одного поста охраны. Здесь оборудован "наблюдательный пункт": охранники видят трансляцию со всех внутренних и внешних камер наблюдения.

Машинные залы

На первом этаже симметрично расположены 2 независимых модуля. В каждом из них по 2 машинных зала с собственными энергоцентром и хладоцентром.

Так на схеме выглядит половина дата-центра. Вторая половина такая же.Так на схеме выглядит половина дата-центра. Вторая половина такая же.

Нужный машзал легко найти по навигации на стенах. Залы назвали в честь островов Санкт-Петербурга:

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

Внутри каждого машинного зала можно разместить до 198 стоек от 5 кВт. Например, этот зал пока пустой, но скоро стойки отправятся на свои места.

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

Стойки в залах расставлены по принципу горячих и холодных коридоров. Оборудование выбрасывает нагретый воздух в горячий коридор и забирает охлажденный воздух из холодного коридора через перфорированные плитки фальшпола. В каждом холодном коридоре поддерживается температура 232 градуса и влажность 3070 %.

Приоткроем плитку фальшпола в холодном коридоре.Приоткроем плитку фальшпола в холодном коридоре.

Несущая способность фальшпола до 2 тонн на квадратный метр. Такая поверхность выдержит легковой автомобиль, например, Hyundai Solaris. Под фальшполом проходят все основные коммуникации инженерных подсистем. Например, эти желтые трубы отвечают за подачу огнетушащего газа в случае пожара:

Такие же желтые трубы расположены под потолком. При пожаре в зал через распылители поступит специальный огнетушащий газ.

Каждый коридор между стойками просматривается с двух сторон с помощью камер видеонаблюдения.

Энергоснабжение

Cистема энергоснабжения в дата-центре зарезервирована по схеме 2N. В ЦОДе 2 отдельных энергоцентра в каждом модуле.

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

Каждый модуль оборудован источниками бесперебойного питания (ИБП) и дизельными генераторными установками (ДГУ). Все ИБП тоже зарезервированы по схеме 2N. То есть к каждой стойке подходят 2 независимых ввода бесперебойного электропитания.

Ряд ИБП Vertiv (ex-Liebert) в энергоцентре.Ряд ИБП Vertiv (ex-Liebert) в энергоцентре.

Если питание от одного городского ввода пропадает, ИБП автоматически передадут его нагрузку на аккумуляторные батареи (АКБ).

Стеллажи c батареями в помещении АКБ.Стеллажи c батареями в помещении АКБ.

Дата-центр может работать от АКБ до 10 минут. Этого времени хватает для запуска ДГУ. Именно ДГУ отвечают за гарантированное энергоснабжение: даже если весь город обесточен, ДГУ обеспечивают бесперебойную работу оборудования в ЦОДе.

ДГУ марки MTU 16V4000 DS2250 мощностью 1965 кВт.ДГУ марки MTU 16V4000 DS2250 мощностью 1965 кВт.

Установки тоже зарезервированы по схеме 2N: трех ДГУ уже достаточно для питания четырех машзалов, а в дата-центре их 6. Система спроектирована таким образом, что зарезервированы не только ДГУ, но и трассы.

Во время работы ДГУ довольно сильно вибрируют. Чтобы вибрация не влияла на основной фундамент, все ДГУ установлены на отдельное бетонное основание.

Каждый дизельный двигатель потребляет примерно 300 литров в час. Топливохранилище ДГУ рассчитано на 25,2 куб. м. При максимальной проектной загрузке ЦОДа ДГУ могут работать в аварийном режиме 12 часов без дозаправки. В рабочем режиме и при нормальной загрузке гораздо больше.

Один бак топливохранилища вмещает 12,6 куб. м, всего таких баков два.Один бак топливохранилища вмещает 12,6 куб. м, всего таких баков два.

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

Если же запасы начнут истощаться, топливо для дозаправки подвезут за 6 часов. Все сроки прописаны в контракте с поставщиком, предусмотрены премии за быстрое выполнение заказа. Заправка на работу дизеля не влияет.

Для топливозаправщика на территории ЦОДа оборудована специальная площадка. На месте заправки поставщик подключается к трубопроводу, открывает задвижки и насосы автоматически начинают работу.

Холодоснабжение

Охлаждение оборудования обеспечивает чиллерная схема холодоснабжения с этиленгликолем в качестве теплоносителя. На крыше работают чиллеры и охлаждают циркулирующий в трубах гликоль. В двух хладоцентрах на первом этаже находятся насосы, расширительные баки, разводка всех труб и оборудование для управления системой. А в машинных залах, помещениях АКБ, энергоцентре и телеком-аппаратных установлены внутренние блоки кондиционеров.

Все элементы зарезервированы по схеме N+1. Это значит, что выход из строя любого из элементов не повлияет на работу системы: нагрузка распределится между оставшимся оборудованием.

Общая схема системы холодоснабжения.Общая схема системы холодоснабжения.

В каждом машинном зале установлено 8 прецизионных кондиционеров Vertiv PCW PH136EL. 4 из 8 кондиционеров в зале с функцией пароувлажнения.

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

К обратной магистрали подключены расширительные баки: они ограничивают колебания давления из-за разницы температур.

Бак оборудован манометром: если давление выходит за рабочие пределы, срабатывает предохранительный клапан.Бак оборудован манометром: если давление выходит за рабочие пределы, срабатывает предохранительный клапан.

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

Циркуляционные насосы в одном из хладоцентров.Циркуляционные насосы в одном из хладоцентров.

Трубы на крышу идут через вентиляционные камеры на втором этаже.

Отличить "горячий" и "холодный" контур можно по цвету стрелок.Отличить "горячий" и "холодный" контур можно по цвету стрелок.

На крыше установлены 6 чиллеров Vertiv FD4130-LN. Чиллеры окружены звукоизолирующими панелями. Дата-центр расположен в стороне от жилых кварталов, но так мы точно уверены, что шум не выйдет за пределы промзоны.

Таких секций на крыше две.Таких секций на крыше две.

Здесь же на крыше находятся аккумулирующие баки. В них хранится охлажденный этиленгликоль на случай отказа электропитания чиллеров. Если городское электропитание пропадает, во время перехода на ДГУ часть чиллеров перезапускается. Для выхода на рабочую мощность чиллерам нужно до 5 минут, а баков хватит на 6 минут.

Аккумулирующие баки и трубы оклеены теплоизоляционным материалом K-Flex и защищены от физического воздействия металлическим кожухом. Аккумулирующие баки и трубы оклеены теплоизоляционным материалом K-Flex и защищены от физического воздействия металлическим кожухом.

Пожарная безопасность

Дата-центр оборудован газовой станцией пожаротушения. Отсюда трубы расходятся по всему дата-центру: в нашей системе пожаротушения 16 направлений. Система зарезервирована по схеме 2N. Всего здесь стоит 24 баллона, на каждое направление тушения предусмотрен основной и резервный запас огнетушащего вещества. Внутри баллонов находится хладон-227еа, этот газ безопасен для ИТ-оборудования в ЦОДе.

Если в помещении возникает дым, система автоматической пожарной сигнализации отправляет сигнал от датчиков пожарообнаружения. Сигналы поступают в диспетчерскую, где сидят дежурные инженеры. Здесь расположен контрольно-индикационный блок, где сразу загорается табло "ТРЕВОГА" или "ПОЖАР". Если сработали оба датчика, в дата-центре запустится система оповещения.

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

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

Такие же кнопки есть и около эвакуационных выходов.Такие же кнопки есть и около эвакуационных выходов.

Мониторинг

В систему мониторинга стекаются сигналы от всего инженерного оборудования. Инженеры круглосуточно отслеживают основные показатели работы: состояние систем энергоснабжения и кондиционирования, климат в каждом зале, физическую безопасность. Для наблюдения за многими параметрами в центре мониторинга оборудована видеостена. У дежурных в диспетчерской также стоит отдельный монитор для слежения за системой. Здесь можно "провалиться" внутрь и посмотреть состояние оборудования и его параметры.

Все показатели систем мониторинга со всех площадок сводятся в единый ситуационный центр в Москве.

Телеком

В дата-центр независимыми маршрутами заведены 2 телеком-ввода от магистралей "Ростелекома".

Также на площадке есть операторы со своей оптикой: Северен-Телеком, ОБИТ, Комфортел. Еще здесь работает Филанко и скоро появится Авантел. Дата-центр готов принять любого телеком-провайдера, удобного клиенту.

Одна из кроссовых.Одна из кроссовых.

На площадке обеспечивается надежная сетевая связность с другими дата-центрами группы "Ростелеком-ЦОД".

Вспомогательная инфраструктура и быт

Для транспортировки оборудования предусмотрено несколько зон погрузки и разгрузки. Вот один из заездов с пандусом:

Так выглядит зона разгрузки внутри:

Не забыли и про бытовые удобства. На кухне почти все готово, скоро здесь появится еще и гарнитур с удобными ящиками для хранения посуды:

Команда дата-центра весь 2020 год готовила новую площадку для комфортной работы коллег и клиентов, несмотря на пандемию.Строительство и эксплуатация дата-центра организованы по нашим единым стандартам, за качество отвечала петербургская часть большой команды "Ростелеком-ЦОД".

Будем рады видеть вас в гостях! Приезжайте в Санкт-Петербург знакомиться и на экскурсию.

Подробнее..

Статистика и ЦОД откуда берутся 5 кВт на стойку и почему это немало

04.03.2021 12:16:30 | Автор: admin

В новостях про запуск дата-центров вы обязательно встретите упоминание мощности в киловаттах на стойку. За последний год наша объединенная команда DataLine и Ростелеком-ЦОД запустила 4 дата-центра, и мы каждый раз сталкивались с комментариями в соцсетях и вопросами в чатах:

Суть всех вопросов: Почему средняя мощность 5 кВт на стойку? Как так, 21-й век, 21-й год, а цифра не меняется? Это слишком мало.Суть всех вопросов: Почему средняя мощность 5 кВт на стойку? Как так, 21-й век, 21-й год, а цифра не меняется? Это слишком мало.

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

Представим, что у нас 10 котиков (а мы знаем примеры, когда и 100 котиков бывает). Самый маленький котик ест 1 кг корма, средний 3, а самый крупный вообще 10. Мы не покупаем каждому по 10, а подсчитываем общий расход корма на всех и планируем покупки из среднего значения. Так же, ну или почти так же со стойками.

Как мы считаем киловатты на стойку и причем тут котики

Показатель средней мощности на стойку помогает провайдеру еще на этапе проектирования спланировать основные ресурсы: электричество, холод и место. В случае с котиками такие ресурсы тоже есть: корм, вода и туалет.

Этот вид планирования называют capacity management (можете так и передать своим пушистым). Мы уже рассказывали о нем раньше в другой статье. Напомню, что основной принцип такого планирования электричество, холод и место в дата-центре должны заканчиваться одновременно. Мы не можем допустить использование какого-то ресурса вхолостую и потому следим, чтобы все расходовалось равномерно. С закупками для котов бывает похожая ситуация: оптимальнее покупать корм и наполнитель сразу, еще и скидку от зоомагазина получить.

Когда мы проектируем новый ЦОД, то сначала планируем самый неэластичный ресурс, который нельзя добавить потом. Чаще всего это место: у нас есть площадка определенного размера, на которой мы не можем разместить бесконечное число стоек. Выясняем площадь, расставляем на ней оборудование, потом планируем мощность для него. Иногда бывает и наоборот, но в этом контексте не так важно. В самом конце расставляем холод, с ним проще всего.

Так выглядит план на этом этапе: пока все стойки одинаковые. Так выглядит план на этом этапе: пока все стойки одинаковые.

Чтобы подвести достаточно электричества к каждой запланированной стойке, нужно знать ее потребление. Возникает вопрос, как предсказать мощность стоек. Тут есть 2 варианта дата-центров:

  • Если это корпоративный ЦОД, то требования компании могут включать любое количество высоконагруженных стоек. Например, недавно мы спроектировали для заказчика зал со стойками более 15 кВт.

  • Если это коммерческий ЦОД с множеством независимых заказчиков, нужно оценить реальные потребности рынка.

Во втором случае нам помогает наша статистика. Вот уже 13 лет мы ежеминутно собираем данные по потреблению наших 5000 стоек.

График среднего потребления всех стоек DataLine за год.График среднего потребления всех стоек DataLine за год.

В статистику входят компании из разных отраслей. У кого-то уходит 7 кВт на стойку, у кого-то 3 кВт. Мы считаем среднее арифметическое по потреблению и смотрим динамику за последние годы. Сейчас в среднем получаем 4 кВт на стойку. Рост потребления с 2010 года составляет не больше 100 ватт на стойку в год. Так что для нового дата-центра мы закладываем небольшой запас и получаем те самые 5 кВт на стойку.

Знатоки статистики скажут, что среднее арифметическое не единственный способ узнать центральную тенденцию. И будут правы. Среднее арифметическое не сработает, если у нас есть высоконагруженные стойки, которые существенно сдвинут среднее в свою сторону. Обратимся к таким случаям.

Как статистика учитывает исключения из правила

Основной контраргумент в споре про 5 киловатт примерно такой: Если я поставлю в стойку 3 блейд-корзины, они будут потреблять существенно больше 5 кВт, и что тогда? Давайте разбираться с точки зрения статистики и реальной практики.

Начну с теоретической статистики. Прожорливые стойки намного больше среднестатистической называют выбросом. Для статистики это выглядит так:

Чтобы среднестатистическая стойка отражала реальную ситуацию в машзале, из совокупности рекомендуют убирать 510 % экстремально больших и экстремально маленьких значений и считать усеченное среднее. Так в статистике очищают выборку от исключительных случаев.

Значит, при проектировании мы всегда должны учитывать долю нестандартных стоек у заказчиков. Сейчас кажется, что мы все чаще видим в наших дата-центрах оборудование для high-performance computing с потреблением в районе 25 кВт. Но, по сухой статистике, это все еще пара десятков серверов на зал: как раз вписываются в те самые 10 % выброса.

Допустим, у нас в машинном зале стоит 198 стоек со средним потреблением 5 кВт. Добавим пару стоек в 25 кВт и посчитаем среднее:

(1985+225)/200 = 5,2

5,2 кВт, совсем небольшая разница. Но если таких мощных стоек будет уже 10 (около 5 %), то среднее значение отклонится на целый киловатт:

(1985+1025)/208 =5,96

При этом типичная стойка в этом зале по-прежнему будет потреблять 5 кВт.

На практике эти подсчеты не означают, что мы не учитываем потребности заказчиков с нестандартными стойками. В прошлый раз мы уже показывали, что спокойно размещаем стойки на 8, 11, 15 кВт с соблюдением нескольких правил. Стараемся ставить их в такие места, где с охлаждением точно не будет проблем. Если же у заказчика много высоконагруженных стоек, выделяем для них особые ряды и залы с дополнительным охлаждением. В некоторых новых дата-центрах мы сразу проектируем отдельные залы со стойками повышенной мощности под особые запросы.

Что будет, если планировать стойки с большим запасом

Теперь посмотрим внимательнее на проектирование 3 ресурсов в дата-центре. Что будет на каждом этапе планирования, если мы решим сделать запас больше одного кВт на стойку?

Итак, мы начали проектировать ЦОД от здания: берем общую площадь, вычитаем место под офисную часть и вспомогательные помещения. Понимаем размер машинных залов и прикидываем количество стоек: с учетом всей инфраструктуры исходим из 6 кв. м на стойку. Получившиеся стойки умножаем на планируемую среднюю мощность. Допустим, берем на стойку 6 кВт.

Если мы строим ЦОД в столице, его емкость составит не меньше 1 0002 000 стоек. Итого, 9 000 кВт вместо 7 500 для усредненных 1,5 тысяч стоек. Добавим к этому 30 % на тепло. Уже 11 700 кВт, а не 9 750. Смотрим, есть ли у нас столько подведенной мощности, или нужно докинуть электричества.

Дальше распределяем электричество по нескольким точкам отсечки на схеме электроснабжения:

Стандартная схема энергоснабжения дата-центров DataLine.Стандартная схема энергоснабжения дата-центров DataLine.

Посмотрим на мощность самой стойки, которая определена PDU (справа). Дальше по схеме справа налево идет мощность зального щита ЩР. Затем следует мощность щита распределения от ИБП (ЩИБП). Дальше ИБП, и так доходим до ГРЩ. Каждое из этих устройств имеет свою мощность, необходимо распределять нашу нагрузку в этих пределах. Для стоек помощнее нам понадобятся дополнительные ИБП и вообще оборудование помощнее это снова дополнительные расходы.

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

Итого, каждый лишний киловатт приведет к дополнительным затратам на электричество, оборудование для электроснабжения и холодоснабжения. Вся лишняя стоимость по нескольким статьям размажется по всем стойкам нового дата-центра. Но цена за киловатт для заказчика растет не линейно. На каких-то масштабах каждый новый киловатт в 2 раза дороже предыдущего из-за дополнительных затрат на инфраструктуру. Стоимость инфраструктуры растет пропорционально росту мощности, эффекта масштаба здесь уже нет. Зачастую дешевле взять две стойки по 5 кВт, чем одну на 10 кВт.

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

Всегда ли заказчику нужно больше 5 кВт в стойке

Когда к нам приходит новый заказчик со стойками больше 5 кВт, наш дизайн-центр должен подготовить проект. Задача ответственного инженера согласовать проект с точки зрения соответствия запросам заказчика. В идеальном сценарии заказчик берет свои требования из реальной статистики: У меня на другой площадке работает точно такое же оборудование и оно потребляет те самые 7-8 заявленных киловатт. Но такое бывает нечасто. Чаще есть примерный список оборудования, которое будет установлено в дата-центре.

Нередко бывает, что в спецификации на серверное оборудование мощность считают по мощности блоков питания и затем закладывают запас 30 %. Получается, что нагрузку рассчитали на бумаге. Но в реальности инженеры никогда не грузят свою систему на 100 %. Реальный коэффициент спроса с сервера будет максимум 80 %, так что искусственный запас будет лишним. Такие расчеты мы корректируем, обсуждаем и согласовываем с заказчиком.

Для понимания общей картины наши инженеры копают еще глубже и анализируют нагрузку с точки зрения задач системы. В сервере несколько потребителей электричества: процессор, память, диски, кулеры. Больше всего ресурсов требует CPU. Например, у сервера со средним потреблением 11,2 кВт на процессор уходит 800900 Вт. При этом далеко не все нагрузки требуют максимальной утилизации процессора. Если мы говорим о среднестатистических задачах вроде файловых шар, почты, системы хранения данных, терминальных серверов или веб-серверов, то загрузка CPU составит 2030 %. Серьезную нагрузку на процессор стоит планировать в случае баз данных: там мы легко можем дойти до 8090 %.

Про 5 кВт с точки зрения ИТ мы говорили с моим коллегой Андреем Будреевым в нашем последнем выпуске подкаста Разговоры из-под фальшпола. Заодно обсудили будущее процессоров с точки зрения экологии заглядывайте на огонек и делитесь своими прогнозами.

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

Подробнее..

Проверка двигателя на прочность как мы тестируем динамические ИБП

11.03.2021 12:11:09 | Автор: admin

Привет, Хабр! Меня зовут Виктор, я главный инженер-энергетик в мегаЦОДе "Удомля". Мои коллеги уже показывали, как мы организуем гарантированное электропитание дата-центра с помощью ДГУ и регулярно проверяем их работоспособность. Но кроме ДГУ есть другое оборудование, которое может одновременно обеспечить гарантированное электроснабжение и бесперебойное питание. Речь о дизельных динамических ИБП (ДИБП). Такие установки стоят в нашем мегаЦОДе, и мы уже немного рассказывали про их устройство в экскурсии по дата-центру.

Сегодня покажу, как мы проводим тестирование дизельных двигателей ДИБП, чтобы быть уверенными в их надежности.

Немного про устройство ДИБП

ДИБП совмещает функции нескольких устройств в одном: один блок заменяет систему из ДГУ, статических ИБП и аккумуляторных батарей. Правда, и ревут они сильнее: уровень шума от классических ДИБП сравним с шумом от перфоратора.

Помещение ДИБП. Не рекомендую появляться здесь без средств защиты слуха.Помещение ДИБП. Не рекомендую появляться здесь без средств защиты слуха.

Схема электроснабжения с ДИБП строится немного по-другому. Городское электропитание с понижающих трансформаторов идет двумя независимыми маршрутами в распределительное устройство низкого напряжения (РУНН). А оттуда через ДИБП электричество поступает сразу на ИТ- и инженерное оборудование. Если питание от города пропадет, ДИБП мгновенно примет всю нагрузку на себя.

Cхема электроснабжения мегаЦОДа Удомля.Cхема электроснабжения мегаЦОДа Удомля.

У нас в Удомле стоят дизель-роторные источники бесперебойного питания Euro Diesel. В таких ДИБП дизельный двигатель с помощью электромагнитного сцепления соединяется со статогенератором переменного тока. Этот генератор состоит из аккумулятора кинетической энергии и синхронной обратимой электрической машины.

Электромашина может работать в режиме электродвигателя и генератора. Пока ДИБП работает на городском питании, электромашина работает как двигатель и запасает в аккумуляторе кинетическую энергию. Если городское питание пропадает, накопленная энергия высвобождается в обратном направлении и позволяет электромашине обеспечивать электроснабжение дата-центра. Эта же энергия запускает дизель и помогает ему выйти на рабочую частоту. Дизель запускается за одну минуту, и затем уже он обеспечивает питание дата-центра и накопление энергии в аккумуляторе.

Вот так вкратце выглядит схема переключения:

Годовое техническое обслуживание ДИБП на ЦОДе "Удомля" разделено на этапы и проводится несколько раз в течение года. Такой поэтапный график помогает нам сократить простой ДИБП на время обслуживания. Отдельно обслуживаем электрическую часть: проверяем электромагнитное сцепление, проводим обслуживание аккумулятора кинетической энергии и обратимой синхронной электрической машины. Отдельно проверяем и тестируем дизельный двигатель ДИБП. Такое годовое ТО дизеля мы провели в феврале, расскажу о нем подробнее.

План тестирования дизельного двигателя

В тестировании дизеля участвуют наши инженеры службы эксплуатации и инженеры вендора. Во время ТО мы контролируем несколько параметров:

  • проверяем резиновые шланги и натяжение ремней генератора,

  • проверяем температуру замерзания и уровень охлаждающей жидкости,

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

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

  • замеряем остаточную емкость и напряжение АКБ,

  • меняем фильтры и масло в двигателе,

  • проводим тест дизельного двигателя ДИБП при нагрузке мощностью 100 %.

Благодаря такой программе теста мы не только гарантируем, что ДИБП не подведет в критический момент, но и параллельно контролируем работу систем вентиляции и топливоснабжения.

Тестовый пуск двигателя ДИБП проводится при стопроцентной нагрузке. Когда мы в прошлый раз рассказывали про тестирование ДГУ, то показывали вариант тестирования с реальной нагрузкой. Двигатель ДИБП мы будем обслуживать и тестировать под эквивалентной нагрузкой. Создадим ее с помощью нагрузочных модулей: эти электромеханические устройства моделируют нагрузку нужной мощности.

Такой способ тестирования наиболее рационален для нашего случая. Во-первых, мы не зависим от сторонних нагрузок. ЦОД это живой организм, и количество ИТ-нагрузок может меняться. Во-вторых, проведение теста не влияет на клиентское оборудование и инженерные системы. Даже если во время теста что-то пойдет не так, электроснабжение клиентского оборудования и инженерных систем ЦОДа не пострадает.

Подготовка к тестированию

Оповещение. За 7 календарных дней до начала ТО служба технической поддержки предупреждает о работах клиентов ЦОДа и службу эксплуатации. Обязательно указываем время и последовательность тестирования. На 6 установленных ДИБП у нас отводится 6 дней.

Заказ нагрузочных модулей. До начала ТО в ЦОД поставляются расходные материалы и нагрузочные модули. Мы используем 2 модуля, по 1 мВт каждый.

Переключение ДИБП и подключение нагрузки. Мы начинаем ТО с остановки ДИБП и подключения модулей. Все переключения производятся на двух щитах ДИБП: управления и силовом.

Щит управления оборудован сенсорной панелью и позволяет управлять работой ДИБП с помощью автоматических переключателей, которые находятся внутри силового щита. Специальные ключи на панели управления позволяют менять режимы работы.

Сенсорная панель на щите управления ДИБП. Сенсорная панель на щите управления ДИБП.

Подключение нагрузочных модулей происходит один раз, так как все силовые панели ДИБП связаны между собой токопроводом. Позже мы будем подавать нагрузку на каждый ДИБП с помощью автоматических переключателей на силовой панели ДИБП.

Регламентные работы перед тестовым пуском

Первые этапы по плану ТО нужно выполнить при выключенном генераторе. Поэтому сначала выведем установку в ремонт.

  1. Перейдем к панели управления ДИБП. На дисплее слева мы видим, чтопитание ИТ-оборудования и инженерных систем ЦОДа идет по стандартной схеме. На схеме обозначены автоматические выключатели в цепи: QD1, QD2 включены, QD3 отключен.

    Справа видим ключ в положении "Нагрузка защищена". Это означает, что бесперебойная работа всего оборудования под защитой ИБП. Электромашина работает в режиме электродвигателя, аккумулятор накапливает кинетическую энергию, все хорошо:

  2. Справа при помощи верхнего ключа переводим режим работы на механизм обходного пути, или байпас (о нем уже рассказывали в одной из статей). С его помощью запитанное от ДИБП оборудование сразу переводится на питание от города в обход установки, а генератор отключается от сети. Теперь на схеме мы видим, что выключатели QD1 и QD2 отключены, QD3 включен:

  3. Чтобы никто случайно не включил установку и не поставил под угрозу выполнение регламентных работ, мы переводим выключатели QD1, QD2 в ремонтное положение на силовой панели ДИБП:

После остановки накопителя и генератора проводим регламентные работы по плану тестирования: проверяем ремни, жидкости, фильтры, все системы и агрегаты.

Панель управления остановленного ДИБП.Панель управления остановленного ДИБП.

Тестовый пуск двигателя ДИБП под нагрузкой

После всех манипуляций по плану ТО переходим к заключительной стадии тесту дизельного двигателя под нагрузкой 100 %.

  1. На силовом щите ставим выключатели QD1, QD2 обратно в рабочее положение. Ключ управления переводим в положение "УПРАВЛ. ЧЕРЕЗ HMI". Кнопки на сенсорной панели станут активны.

  2. Включаем машину в режиме "БАЙПАС-RUN". Видим на схеме, что QD1 включен, QD2 выключен.

    Теперь генератор получает питание от городской сети и работает как электродвигатель, раскручивая аккумулятор кинетической энергии. ИТ-оборудование и инженерные системы ЦОДа получают питание по байпасу через QD3.

  3. Переводим ДИБП в режим тестирования: открываем щит управления и устанавливаем переключатель "TEST KS" в положение 1.

    В режиме теста выключатель QD2 блокируется. На экране панели появляется надпись "РЕЖИМ ТЕСТА KS".

  4. Следующий шаг подключение нагрузочных модулей к шинам генератора.

    В самом начале мы подключили нагрузочные модули к щиту. Теперь включаем нагрузку при помощи автоматов QDL в силовых панелях ДИБП. Проводим эту операцию в ручном режиме: закатываем выключатель QDL в рабочее положение, разблокируем его ключом, взводим пружину и включаем.

  5. Чтобы запустить двигатель ДИБП, проводим тестовый отказ сети. Нажимаем кнопки "ОТКАЗ СЕТИ" и "FORCE" на панели управления.

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

    ДИБП работает в режиме генератора. ДИБП работает в режиме генератора.
  7. Теперь поднимаем нагрузку до необходимых значений. Для этого используем переключатели на панелях нагрузочных модулей. На панели управления ДИБП видим, что этот параметр достиг 1764,1 кВт.

    Смотрим на работу ДИБП под нагрузкой.Смотрим на работу ДИБП под нагрузкой.

Двигатель работает в этом режиме около 2 часов. Во время теста мы контролируем несколько параметров ДИБП:

  • температуру подшипников,

  • скорость вращения валов,

  • давление масла,

  • воздух в помещении и температуру жидкостей,

  • заряд батареи.

Все параметры отображаются на дисплее. Все параметры отображаются на дисплее.

Также контролируются электрические параметры: частота, мощность и напряжение.

Фиксация результатов и переключение обратно

После испытаний мы в обратной последовательности отключаем нагрузочные модули, выводим ДИБП из тестового режима и переводим ключ на панели управления в положение "НАГРУЗКА ЗАЩИЩЕНА". Сценарий переключения отработан, никакие перебои в электроснабжении помешать работе дата-центра не должны.

По результатам испытаний в протоколах указываем все полученные параметры. ДИБП переходит на следующий круг проведения ТО по годовому графику.

Подробнее..

Почему виртуалки на вырост начинают тормозить, и что с этим делать новичку

27.05.2021 14:07:09 | Автор: admin

Клиенты все чаще мигрируют в облака в погоне за гибкостью: здесь намного проще добавить диск, память и процессоры, если чего-то не хватает. Но иногда новички обнаруживают, что добавление ресурсов перестает помогать. Скорость работы не растет, а с бэкапом и восстановлением начинаются проблемы.

Сегодня вместе с @kvolodin мы расскажем, почему бесконечное увеличение ресурсов ВМ может вредить пользователям и как спланировать рост производительности очевидными, но действенными способами. Статья полезна тем, кто переехал или планирует переезд в облако и еще знакомится с нюансами облачной среды.

Очевидные причины: ограничения железа и бэкапов

Сейчас в нашем облаке добавление ресурсов сверх лимита можно ограничить на уровне софта. Если кто-то попробует выйти за пределы, сразу получит сообщение в интерфейсе Cloud Director:

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

Много лет назад мы предоставили клиенту квоту в 20 ТБ и предупредили про ограничение на диск в 16 ТБ. Резервное копирование данных делали с помощью Veeam Backup&Replication. Когда клиент вышел за пределы диска в 16 ТБ, все задачи на создание бэкапов просто зависли. Veeam не успевал забэкапить большую ВМ и на всякий случай оставлял неполный снэпшот, а затем создавал новый. Дерево снэпшотов стало расти слишком быстро, общая производительность диска тоже упала. Пришлось полночи заново создавать дерево снэпшотов, а затем переносить данные на диски поменьше.

В те времена от подобных инцидентов нас защищал мониторинг. Мы сразу видели непорядок на дашбордах и обращали внимание клиента на проблему. Трудность была в том, что в случае IaaS сами виртуалки оставались ответственностью клиента. Инженеру клиента нужно было самому пересоздавать ВМ, иногда с большим трудом.

Клиенту выделили квоту в 40 ТБ на СХД, а для диска ВМ прописали ограничение в 20 ТБ. Администратор клиента создал ВМ в 30 ТБ и разметил все дисковое пространство одним диском. Техподдержка обнаружила проблему, сообщила клиенту, что нужно пересоздать ВМ с дисками меньшего размера, но администраторы долго не выходили на связь.

В это время данные начали записываться на созданный диск большими темпами. Пока на СХД было свободное место, мы увеличивали размер дата-стора и ждали ответа от клиента. Но если бы расширять дата-стор дальше было невозможно, клиенту пришлось бы рисковать данными. Нужно было бы создать новый диск и перегнать данные на него. Миграция такой большой ВМ могла потребовать несколько дней, и оставалась вероятность неудачного переезда.

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

Но даже если физический лимит не превышен, могут возникнуть другие трудности.

Неочевидная работа гипервизора

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

У клиента регулярно возникали пиковые периоды активности. Раз в месяц нагрузка на системы увеличивалась и требовала больше процессоров. Клиент решил не отключать эти процессоры после пика, а оставить их про запас. Но в период низкой активности производительность упала и не давала выполнять рутинные задачи. Дело в том, что гипервизор отодвинул недозагруженные системы на второй план. Так работает планировщик: если ВМ не требует ресурсов, то в очереди она спускается ниже.

Клиенту облака по умолчанию доступна только информация из диспетчера задач и монитора ресурсов. Бывает и так, что на ОС клиент видит загрузкучасти ядер на 100%. В это же время мы на гипервизоре видим, что часть ядер не используется, потому что приложение не рассчитано на многопоточность. В таких ситуациях парадоксальным образом помогает именно уменьшение ресурсов до необходимого и достаточного уровня. После этого гипервизор лучше распределяет небольшие ВМ в очередях.

Некорректный сайзинг приложения в облаке

К сожалению, переезд приложения с физических хостов не всегда возможен в лоб. Даже если все работало на физических 24 процессорах, столько же процессоров в облаке не всегда решают проблему.

Один из клиентов перед переездом на новое железо решил временно разместить в облаке виртуальную АТС. Мы заглянули в документацию вендора и обнаружили явную несовместимость с vCloud Director. Производители АТС изначально не гарантировали стабильную работу своего приложения в облачной среде. Тем не менее, нашим инженерам удалось настроить работу софта с помощью нескольких хитростей. Клиент спокойно работал в облаке, пока не дождался поставки собственного железа. Но если быон захотел внести изменения в настройки, возникли бы трудности.

У крупных производителей софта несовместимость с облаком сразу прописана в документах. Менее очевидно дело обстоит с самописным ПО.

Клиент заказал виртуальную машину для переезда собственного приложения в облако. Через пару месяцев работы софт начал сильно тормозить. При аудите выяснилось, что объемные файлы по умолчанию сохраняются в одну директорию и нагружают файловую систему. За несколько месяцев там накопились уже миллионы файлов, и для решения проблемы понадобилась новая архитектура с несколькими хранилищами.

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

Например, бывают ситуации, когда пользователь привык к быстрой работе на ноутбуке с высокочастотными процессорами, а в облаке сталкивается с низкой скоростью. Характеристики Enterprise-железа в дата-центре рассчитаны на долгосрочную работу в режиме 24/7 и не допускают пограничных состояний. Если такой пользователь разгонял процессоры на своем ноутбуке до опасного максимума, то в облаке он не сможет добиться тех же скоростей от похожего процессора.

Случается и так, что приложение рассчитано на высоконагруженную базу, но размещается в облаке на SATA-дисках. Клиент видит загрузку процессоров и увеличивает ресурс CPU, не подозревая проблемы именно с дисками.

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

Один из клиентов хранил в своей базе данные трекинговой системы за три года такой срок хранения был предусмотрен нормативом. После переезда в облако удалось разделить хранилище на холодное и горячее. Редко используемые данные перемещались на медленные и дешевые холодные диски, а востребованная информация оставалась на быстрых дисках в горячем хранилище.

Подозрительная активность на ВМ

Когда снижение производительности подкрадывается постепенно, то переход на более производительные диски может и правда решить проблему. Если же загрузка ресурсов выросла резко, скорее всего, дело в шифровальщике или залетном майнере криптовалюты.

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

Откуда берутся лимиты на ресурсы в облаке

Ограничения на диск

  1. Есть технические ограничения СХД. Яркий пример: блочный том многих моделей NetApp не может быть более 16 ТБ.

  2. Мы как провайдер провели тесты производительности СХД и рассчитали оптимальный размер дата-стора.

  3. Инфраструктура резервного копирования лучше справляется с бэкапом нескольких мелких объектов, чем одного большого.

Ограничения на CPU и память

  1. Ограничен размер физического хоста, на котором располагаются ВМ клиентов.

    При размере хоста 144 vCPU и 2 TБ памяти ВМ большего размера не получится создать при всем желании. (Cпасибо, кэп!)

  2. Для оптимального обращения к памяти мы учитываем особенности работы мультипроцессорных систем. Мы уже рассказывали об этом в статье про первую виртуальную машину.

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

  3. С помощью некоторых лимитов мы можем управлять виртуальной платформой и предоставлять предсказуемый сервис с соблюдением SLA.

Ограничения на IOPS

В облаке также встречаются клиенты, у которых намного выше среднего параметры IOPS: количество операций ввода/вывода. Чаще всего это происходит в трех случаях:

  1. Клиент решил протестировать выделенные мощности на больших нагрузках.

  2. У клиента наблюдается аномальная нагрузка, например, из-за некорректной работы самописного софта или вирусов.

  3. Клиент установил высокопроизводительное приложение.

На любой из этих случаев мы задаем ограничения потребляемых дисковых мощностей, опираясь на результаты нагрузочного тестирования СХД. Сейчас можем ограничить каждый диск фиксированным значением IOPS или исходить из IOPS на ГБ.

Как новому клиенту вписаться в лимиты и обеспечить производительность

  1. При планировании переезда в облако ознакомиться с документацией на ПО. Некоторые производители софта сразу указывают, что их приложение не работает в облачной среде.

  2. До переезда протестировать работу приложения в облачной инфраструктуре. Большинство провайдеров позволяют клиентам брать пробный период и запускать синтетические тесты.

  3. Не стесняться обращаться в техподдержку. Инженеры могут оценить производительность со стороны гипервизора и дать рекомендации.

  4. Расти маленькими шагами: увеличить диски намного проще, чем резко их уменьшить. Увеличивать процессоры тоже лучше постепенно, начинать с одного ядра.

  5. Расти не вертикально, а горизонтально. Например, не добавлять 8 процессоров на одну ВМ, а создать 4 ВМ по 2 процессора на каждой. Вдобавок это уменьшит площадь отказа.

  6. Ставить виртуальные машины на внутренний мониторинг. В этом случае клиент может выбрать наиболее важные показатели работы ВМ и быстро получать оповещения об их состоянии. Это позволит вычислять неочевидные проблемы, которые не заметны на общем мониторинге.

Подробнее..

Найти 15 инженеров за две недели карантина

01.10.2020 12:15:50 | Автор: admin
Привет, Хабр!

Я работаю эйчаром в DataLine, в том числе курирую набор дежурных инженеров в службу технической поддержки. Мы уже рассказывали о важности этой позиции для компании. Дежурным инженерам мы доверяем проверку оборудования в дата-центре и работу с клиентами на первой линии. На этой должности новички набираются опыта и пополняют технические отделы: эксплуатации, виртуализации, сети, киберзащиты и другие. Для нас дежурка это первая ступень карьерной лестницы.

Весна-2020 принесла сразу 2 трудности: самоизоляцию и быстрый рост компании. Нам нужно еще больше дежурных для новых дата-центров, но привычными способами набирать уже не получается.

Сегодня расскажу, как мы с коллегой Александрой искали лучших инженеров на расстоянии и, самое главное, нашли.



Что было до: групповой отбор, экскурсии, экзамен

Раньше все дежурные инженеры перед подписанием договора проходили отбор в 2 этапа: групповое собеседование и вводное обучение.

На групповое собеседование мы приглашали 1215 человек. Кандидаты знакомились с компанией и будущими коллегами, а потом решали несколько кейсов. В мире ИТ многие скептически относятся к таким собеседованиям. Но для нас формат полезен по трем причинам:
  • Мы быстрее находим нужное количество своих. Это стартовая позиция: набираем сразу по 510 человек среди студентов и выпускников технических вузов. Меньше смотрим на резюме с опытом работы, больше оцениваем мотивацию и интерес к нашей сфере.
  • На примере кейсов кандидаты примеряют роль на себя. Каждый получает ситуацию из жизни и проигрывает ее в группе. Сразу понятно: теряется человек или нет, комфортно ли ему взаимодействовать с разными людьми.
  • Из новичков формируется самостоятельная команда дежурных. Все знакомятся еще на отборе и быстрее адаптируются, появляется взаимная поддержка и дух соревнования.

Собеседование занимало 6 часов почти целый рабочий день. Но в результате сразу набиралась готовая группа на обучение.

Вводное обучение длилось 3 дня. Мы проводили экскурсию по дата-центру, знакомили с обязанностями дежурного инженера и давали практические задания, например, подключить оборудование. Будущие инженеры могли проявить себя в деле и проверить мое-не мое.
В конце кандидаты сдавали экзамен по теории и практике. Если результат не менее 70% от максимального количества баллов добро пожаловать на оплачиваемую стажировку. К обучению подключали руководителей отделов: так можно сразу найти интересных кандидатов в одну из смежных технических групп.

К моменту зачисления на стажировку новички уже знали, что их ждет и чего они хотят от работы. Большинство использовали эту позицию для старта карьеры в ИТ и многие дорастали до ведущих инженеров и руководителей.

Какие сюрпризы принес 2020


Долгий режим ожидания

После введения локдауна мы приостановили набор в дежурку и ждали, пока ситуация не прояснится. Но строить новые ЦОДы мы не перестали, так что летом понадобилось уже 15 дежурных инженеров для новых площадок. Стало понятно, что нам не избежать собеседований в режиме социальной дистанции.
Чтобы не потерять в эффективности, нужно было решить несколько непростых задач в новом формате:
  • оставить кейсы, чтобы кандидаты могли продемонстрировать взаимодействие в команде;
  • показать наши ЦОДы, где предстоит работать;
  • познакомить будущих инженеров с руководителями, которые находятся на разных площадках;

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

Индивидуальные собеседования мы не рассматривали: это бы в несколько раз увеличило объем работы у руководителей, специалистов HR-службы и преподавателей курса.

Первый онлайн-набор: неразбериха вместо кейсов

В июне мы объявили новый набор дежурных инженеров в онлайне. Собеседование запланировали в Cisco Webex: мы используем эту систему для удаленных совещаний внутри компании. Как это выглядело в нашей голове:
  1. Приглашаем от 20 до 30 человек на групповое собеседование. Всем кандидатам уходит письмо со ссылкой на виртуальную комнату Webex.
  2. Проводим презентацию компании и знакомимся с участниками.
  3. Просим кандидатов разделиться по виртуальным комнатам коллег и решаем кейсы в группах по 4-6 человек.

Реальность подвела. Знакомство с кандидатами в общей комнате затянулось. Чтобы выслушать 25 человек подряд со всеми техническими накладками потребовалось больше часа. К концу собеседования мы уже с трудом воспринимали информацию.

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

Хорошей находкой для таких оргмоментов стал Telegram. Мы заранее добавляли номера кандидатов в контакты для быстрой связи. Для кейсов мы вывесили в общий чат списки кандидатов по комнатам: Вы заходите по ссылке в комнату Екатерины, вы оставайтесь в комнате Александры. Но все равно люди путались, терялись, подключались не туда.

Чат пригодился и на вводном обучении. Преподаватель проводил занятие в Webex и отправлял в Telegram записи лекций и дополнительные материалы, отвечал на вопросы. Экскурсию по ЦОДу заменили на видеотур и сэкономили день обучения. Конечно, получилось не так живо, как на экскурсии. Зато можно перейти по ссылкам и посмотреть в удобное время.

Финальный экзамен проводили в Webex. Старший инженер площадки оставался в своей персональной комнате, а 15 человек подключались по очереди. Без накладок тоже не обошлось. У всех новичков была одна и та же ссылка если перепутаешь время, попадешь на чужой экзамен. Для экзаменатора нагрузка была высокой. В какой-то момент наш Антон даже стал радоваться прогульщикам.

К концу первого набора мы стали искать замену Webex, чтобы удобно поделить всех на группы и никого не перегрузить.

Второй онлайн-набор: безличные квадратики

В июле мы проанализировали наш опыт и кое-что улучшили:
  • подключили к набору больше наших сотрудников, чтобы сделать несколько потоков на собеседовании и обучении.
  • сменили площадку и перешли на корпоративный аккаунт в Zoom. Там было удобнее одной кнопкой делить кандидатов на 4-5 сессионных залов.

Так мы сразу сократили время онлайн-собеседования с 4 часов до 2.

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

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

А еще первое время мы не требовали от кандидатов подключения с камерой. Но когда один из созвонов почти полностью состоял из безликих квадратиков, мы добавили и это требование в письмо. Иначе было сложно понять, кто что говорит, запомнить людей.

Онлайн-обучение провели в два потока. Учебную группу поделили между двумя старшими инженерами, они же принимали экзамен. Перед экзаменом ребятам давали выходные на подготовку и заранее составляли расписание сдачи. Так никто не ждал своей очереди и просто подключался в назначенное время. Нервотрепки стало меньше.

Во второй раз все прошло быстрее: мы объявили набор 10 июля, а уже 27 июля к нам на стажировку вышли пятеро инженеров. В третий набор за 2 недели удалось принять уже 15 дежурных инженеров.

Что из этого получилось


  1. Меньше времени на отбор. Время собеседования мы сократили с 6 часов в офлайне до 2 часов в Zoome. Сроки обучения уменьшились с 3 дней до 2.
  2. Формат удобнее для кандидатов. Не нужно тратить время на дорогу и освобождать несколько дней на прохождение всех этапов. Стало проще вписывать собеседования и занятия в расписание. Особенно были довольны те, кто уже работал и хотел перейти к нам.
  3. Больше людей доходят до конца обучения. Если раньше на курс приходило 13 человек из 20 приглашенных, то в онлайне не приходит всего пара человек. Даже если время обучения неудобное, можно посмотреть в записи, подготовиться за выходные и сдать экзамен.

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


Ответ на оффер от кандидата.

После трех потоков у нас появились работающие онлайн-инструменты: письма, сценарии работы с чатом, алгоритм собеседования и обучения в Zoome. Сейчас мы упаковали этот продукт и используем наработки совместно с командой Ростелеком-ЦОД. Планируем набирать дежурных уже в наши новые совместные ЦОДы. Спойлер: следующий такой набор пройдет уже в Санкт-Петербурге.

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

Нейронки с нуля, или Как мы делали помощника для наших диспетчеров техподдержки

23.07.2020 12:09:17 | Автор: admin
Привет, Хабр!
Меня зовут Александр Соловьев, я программист компании DataLine.

Хочу поделиться опытом внедрения модных нынче нейронных сетей в нашей компании.
Все началось с того, что мы решили строить свой Service Desk. Зачем и почему именно свой, можно почитать моего коллегу Алексея Волкова (cface) тут.

Я же расскажу о недавнем новшестве в системе: нейросеть в помощь диспетчеру первой линии поддержки. Если интересно, добро пожаловать под кат.



Уточнение задачи

Головная боль любого диспетчера службы поддержки нужно быстро принять решение, кому назначить входящий запрос клиента. Вот какие бывают запросы:
Добрый день.
Я правильно понимаю: чтобы расшарить календарь на определенного пользователя, нужно на ПК пользователя, который хочет поделиться календарем, открыть доступ к своему календарю и вписать почту пользователя, которому он хочет дать доступ?

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

Инструкции диспетчеров описывают решение для большинства типичных запросов. Например, к простым заявкам относится предоставление доступа в дата-центр. Но вот заявки на обслуживание включают множество задач: установку ПО, анализ ситуации или сетевой активности, выяснение деталей по тарификации решений, проверку всевозможных доступов. Иногда из запроса сложно понять, кому из ответственных отправить вопрос:
Hi Team,

The sites were down again for few minutes from 2020-07-15 14:59:53 to 2020-07-15 15:12:50 (UTC time zone), now they are working fine. Could you please check and let us know why the sites are fluctuating many times.

Thanks

Бывали ситуации, когда заявка уходила не тому подразделению. Запрос брали в работу и затем переназначали на других исполнителей или отправляли обратно диспетчеру. Это увеличивало скорость решения. Время на решение запросов прописано в соглашении с клиентом (SLA), и мы несем ответственность за соблюдение сроков.

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

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

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

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

Сначала я думал отделаться дешево и сердито и попробовал подход с ключевыми словами. Мы составили словарь ключевиков в ручном режиме, но этого оказалось недостаточно. Решение справлялось только с простыми заявками, с которыми как раз и не было проблем.

За время работы нашего Service Deska у нас накопилась солидная история заявок, на основе которой можно распознавать похожие входящие запросы и назначать их сразу на правильных исполнителей. Вооружившись гуглом и некоторым количеством времени, я решил углубиться в изучение вариантов решения.

Изучение теории

Оказалось, что моя задача классическая задача классификации. На входе алгоритм получает первичный текст заявки, на выходе относит его к одному из заранее известных классов то есть, подразделений компании.

Вариантов решений нашлось великое множество.
Это и нейронная сеть, и наивный байесовский классификатор, метод ближайших соседей, логистическая регрессия, дерево решений, бустинг и еще много-много всяких вариантов.

Пробовать все методики не хватило бы никакого времени. Поэтому я остановился на нейронных сетях (давнохотел попробовать поработать с ними). Как оказалось впоследствии, этот выбор вполне себя оправдал.

Итак, я начал погружение в тему нейросетей отсюда. Изучил алгоритмы обучения нейросетей: с учителем (supervised learning), без учителя (unsupervised learning), с частичным привлечением учителя(semi-supervised learning) или с подкреплением(reinforcement learning).

В рамках моей задачи подошел метод обучения с учителем. Данных для обучения хоть отбавляй: over 100k решенных заявок.

Выбор реализации

Для реализации выбрал библиотеку Encog Machine Learning Framework. К ней идет доступная и понятная документация с примерами. К тому же реализация под Java, что мне близко.

Кратко механика работы выглядит так:
  1. Предварительно настраивается каркас нейросети: несколько слоев нейронов, соединенных связями-синапсами.

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

Я попробовалразличные примеры фреймворка, пришло понимание, что с цифрами на входе библиотека справляется на ура. Так, хорошо работал пример с определением класса ирисов по размеру чаши и лепестков (Ирисы Фишера).

Но у меня-то текст. Значит, буквы нужно как-то превратить в цифры. Так я перешел к первому подготовительному этапу векторизации.

Первый вариант векторизации: по буквам

Самый простой способ превратить текст в цифры это взять алфавит на первом слое нейросети. Получаются 33 буквы-нейрона: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЭЮЯ.
Каждой присваивается цифра: наличие буквы в слове принимаем за единицу, а отсутствиесчитаем нулем.
Тогда слово привет в такой кодировке будет иметь вектор:


Такой вектор уже можно отдать нейросети для обучения. Ведь это число 001001000100000011010000000000000 = 1216454656

Углубившись в теорию, я понял, что анализировать буквы нет особого смысла. Они не несут никакой смысловой нагрузки. Например, буква А будет в каждом тексте заявки. Считайте, что этот нейрон всегда включен и на результат никакого влияния не окажет. Как и все остальные гласные. Да и в тексте заявке будет большинство букв алфавита. Такой вариант не подходит.

Второй вариант векторизации: по словарю

А если взять не буквы, а слова? Скажем, толковый словарь Даля. И считать за 1 уже наличие слова в тексте, а отсутствие за 0.

Но тут я уперся в количество слов. Вектор получится очень большой. Нейронка с 200k нейронов на входе будет считаться целую вечность и захочет много-много памяти и процессорного времени.Надо делать свой словарь. К тому же в текстах есть ИТ-специфика, которую Владимир Иванович Даль не знал.

Я снова обратился к теории. Для сокращения словаря при обработке текстов пользуются механизмами N-грамм последовательности из N элементов.

Идея в том, чтобы входной текст разбить на некоторые отрезки, составить из них словарь и в качестве 1 или 0 скормить нейросети наличие или отсутствие фразы в исходном тексте. То есть вместо буквы, как в случае с алфавитом, за 0 или 1 будет принята не просто буква, а целая фраза.

Самыми популярными являются униграммы, биграммы и триграммы. На примере фразы Добро пожаловать в ДатаЛайн расскажу о каждой из методик.
  1. Униграмма текст разбивается на слова: добро, пожаловать, в, ДатаЛайн.
  2. Биграмма разбиваем на пары слов: добро пожаловать, пожаловать в, в ДатаЛайн.
  3. Триграмма аналогично по 3 слова: добро пожаловать в, пожаловать в ДатаЛайн.
  4. N-грамма ну вы поняли. Сколько N, столько и слов подряд.
  5. Также иногда используют символьные N-граммы. Текст делится не на слова, а на последовательность букв. Например 4-символьная N-грамма выглядела бы так: добр,о по, жало, вать и т. д. Но тут получится очень большой словарь.

Я решил ограничится униграммой. Но не просто униграммой слов все равно получалось многовато.

На помощь пришел алгоритм Стеммер Портера, который использовался для унификации слов еще в 1980 году.

Суть алгоритма: убрать из слова суффиксы и окончания, оставляятолько базовую смысловую часть. Например, слова важную, важны, важные, важный, важным, важных приводим к базе важн. То есть вместо 6 слов в словаре будет одно. А это значительное сокращение.

Дополнительно я убрал из словаря все цифры, знаки пунктуации, предлоги и редко встречающиеся слова, дабы не создавать шума. В итоге на 100k текстов получился словарь в 3k слов. С этим уже можно работать.

Обучение нейросети

Итак у меня уже есть:
  1. Словарь из 3k слов.
  2. Векторизованное представление словаря.
  3. Размеры входного и выходного слоев нейросети.
    По теории на первом слое (входном) предоставляется словарь, а финальный слой (выходной) количество классов-решений. У меня их 44 по количеству подразделений компании.



Для обучения нейросети осталосьвыбрать совсем немного:
  1. Метод обучения.
  2. Функцию активации.
  3. Количество скрытых слоев.

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

Итак, я взял эталонную выборку заявок в 11k и делал расчет нейросети с различными параметрами:
  1. На 10k я обучал нейронную сеть.
  2. На 1k проверял уже обученную сеть.

То есть на 10k мы строим словарь и обучаемся. А затем показываем обученной нейросети 1k неизвестных текстов. В итоге получается процент ошибки: отношение угаданных подразделений к общему числу текстов.

В итоге я добился точности на неизвестных данных около 70%.

Опытным путем выяснил, что обучение может продолжаться бесконечно, если выбраны неверные параметры. Пару раз нейронка уходила в бесконечный цикл расчета и знатно подвешивала рабочую машинку на ночь. Чтобы не допустить этого, для себя я принял ограничение в 100 итераций или пока ошибка сети не перестанет уменьшаться.

Вот какие параметры получились в итоге:

Метод обучения. Encog предлагает выбрать из нескольких вариантов: Backpropagation, ManhattanPropagation, QuickPropagation, ResilientPropagation, ScaledConjugateGradient.

Это разные способы определения весов у синапсов. Какие-то из методов работают быстрее, какие-то точнее, подробнее лучше почитать в документации. Мне подошел Resilient Propagation.

Функция активации. Она нужна для определения значения нейрона на выходе в зависимости от результата взвешенной суммы входов и порогового значения.

Выбирал из 16 вариантов. Проверить все функции у меня не хватило времени. Поэтому рассматривал самые популярные: сигмоид и гиперболический тангенс в различных реализациях.

В итоге остановился на ActivationSigmoid.

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

На этом эксперименты закончил. Можно готовить инструмент к продуктиву.

В продакшен!

Дальше дело техники.
  1. Прикрутил Spark, чтобы можно было общаться с нейронкой по REST.
  2. Научил сохранять результаты расчета в файл. Не каждый же раз пересчитывать при перезапуске сервиса.
  3. Добавил возможность вычитывать актуальные данные для обучения напрямую из Service Desk. Ранее тренировался на csv-файлах.
  4. Добавил возможность пересчета нейросети, чтобы прикрутить пересчет к планировщику.
  5. Собрал все в толстый jar.
  6. Попросил у коллег сервер помощнее разрабской машины.
  7. Задеплоил и зашедулил пересчет раз в неделю.
  8. Прикрутил кнопку в нужное место Service Desk и написал коллегам, как этим чудом пользоваться.
  9. Сделал сбор статистики по тому, что выбирает нейронка и что выбрал человек (статистика ниже).


Вот так выглядит тестовая заявка:


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


Получился такой интеллектуальный помощник для диспетчера.

Для примера статистика с начала года.
<

Есть еще совсем молодая нейросеть, сделанная по тому же принципу. Но там данных еще мало, она пока набирается опыта.


Буду рад, если мой опыт поможет кому-нибудь в создании своей нейросети.
Если есть вопросы, с удовольствием отвечу.
Подробнее..

Убрать ковер и еду. Чек-лист перед онлайн-собеседованием

03.12.2020 10:23:07 | Автор: admin
Привет,Хабр! Меня зовут Саша Сухомлинова, и в DataLine я занимаюсь подбором сотрудников: инженеров дата-центра, системных администраторов, разработчиков, специалистов финансового блока, топ-менеджеров.

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

С переходом в онлайн я насчитала топ-5 мелочей, о которых постоянно забывают. Делюсь чек-листом подготовки к собеседованию на удаленке, который помогает не отвлекаться от главного опыта и профессионализма сотрудников.

Учесть все мелочи нам поможет Полина:

Знакомьтесь: Полина одна из тех, кто прошел онлайн-собеседование на даче в самоизоляции с нестабильным интернетом. Она покажет, какие ошибки бывают чаще всего.

Протестировать связь, оборудование и платформу


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

Как не надо: Один кандидат в инженеры общался с нами из подъезда по плохой гарнитуре. Каждое слово отзывалось эхом, вся команда собеседующих напрягалась и переспрашивала. Пришлось собирать всех заново, чтобы кандидат подключился из другого места и с другой гарнитурой.

Что делать:
  • узнайте у HR, какая платформа используется для собеседований;
  • если это популярный мессенджер или соцсеть, посмотрите, уместен ли ваш неофициальный аккаунт или лучше создать рабочий вместо ckakalka или айфон тюбик;
  • если нужно, заранее установите программу-клиент на свое устройство;
  • пройдите проверку звука и видео на платформе: убедитесь, что камера определилась и выбран верный источник звука;
  • протрите камеру;
  • договоритесь с HR о созвоне за 5 минут до собеседования. За это время вы успеете сориентироваться на конференц-платформе и настроитесь на общение, а не решение технических проблем. Если такой возможности нет, протестируйте платформу с другом;
  • придумайте вариант, как подключиться, если интернет упадет. Например, со смартфона через мобильный интернет;
  • не выбирайте для общения гулкие и шумные места.



Выбрать нейтральный фон


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

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

Была и забавная ситуация, когда кандидат общался из кафе. За его спиной висел телевизор, на экране дамы с голыми ногами танцевали канкан. Кандидат этого не заметил, а я не могла отвести взгляд от кордебалета.

Иногда некомфортные обстоятельства наоборот помогают. Было интервью, когда у кандидата за спиной бегал ребенок в костюме Человека-Паука. Но наш собеседник сразу выложил багаж и прокомментировал, что сейчас карантин, ребенок сидит дома. Мы обсудили, как бывает тяжело работать с детьми дома, это разрядило обстановку.

Что делать:
  • выберите нейтральное место для общения с работодателем;
  • проверьте, как выбранный фон смотрится в кадре: иногда магниты на холодильнике или ковер на стене (все еще бывает!) при съемке отвлекают внимание;
  • не забудьте отключить оповещения в мессенджерах, чтобы не отвлекаться на push-уведомления;
  • попросите окружающих по возможности не вести параллельных разговоров, которые могут попасть в эфир;
  • если ситуация безвыходная, можно сразу предупредить об этом.



Проверить освещение и ракурс


При общении со смартфона люди часто ставят телефоны вниз. Получается не самый удачный ракурс, снизу вверх. Если источник света вверху, то лицо остается в тени, а мы видим только нимб от лампы вокруг человека.

Как не надо: Иногда кандидаты не находят стационарного места и держат телефон в руках. Человек жестикулирует, изображение на экране трясется, это отвлекает от темы обе стороны.

Что делать:
  • установите телефон на подставку;
  • камеру ноутбука или ПК установите на уровне глаз;
  • не ставьте камеру против света.



Не забыть про уместный внешний вид


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

Как не надо: Некоторые кандидаты надевают сверху рубашку и галстук и оставляют домашнюю одежду внизу (все как в мемах). Но почему-то именно во время собеседования приезжает какая-нибудь доставка. Человек встает из-за стола, и работодатель узнает о нем больше, чем хотелось бы.

Что делать:
  • выберите что-то однотонное и нейтральное, чтобы рисунок на ткани не рябил и не отвлекал внимание;
  • проверьте, как вы смотритесь в кадре в сочетании с фоном. Ковер или холодильник за спиной испортит впечатление от официального лука, а сильное сжатие изображения превратит все в кашу из цветных пикселей;
  • заодно проверьте аватарки в мессенджерах.



Убрать еду


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

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

Что делать:
  • уберите из кадра посуду и еду;
  • не жуйте во время собеседования;
  • кружке с надписью BOSS предпочтите прозрачный стакан или бутылку с водой;
  • если боитесь, что в горле пересохнет, можно явно это проговорить: Извините, от волнения пересыхает в горле, сделаю пару глотков.



Напоследок


Конечно, если человек профи, никакой бабушкин ковер или чашка со смешным принтом не станет поводом для отказа. Все мы люди, HR не звери, и одна из наших задач создать атмосферу для знакомства без стресса.
  • Не стесняйтесь просить помощи HR. Мы часто сами предлагаем поменять наклон камеры, гарнитуру, место. Если выбранная платформа не сработает, всегда есть запасные варианты, чтобы продолжить интервью.
  • Сообщайте о возможных проблемах заранее так вы проявите уважение к собеседнику и избавитесь от волнения из-за бытовых трудностей.
  • Используйте преимущества онлайна, чтобы справиться со стрессом. Рядом с ноутбуком можно оставить шпаргалку с важными моментами, которые вы хотели рассказать и спросить. Для успокоения нервной системы советуют заземлиться поставить ноги на пол и надавить ступнями вниз, опереться на стул, дышать животом. В онлайне большая часть этих приемов скрыта от собеседников, особенно если отключить микрофон.

Если не забывать об этих мелочах, выше шанс, что все увидят ваш профессионализм, а не что-то лишнее.
Подробнее..

Вебинар DataLine Безопасное хранение корпоративных документов и совместная онлайн-работа 14 апреля

02.04.2021 12:23:26 | Автор: admin

Разберем доступные на рынке решения для организации хранения документов и расскажем о возможностях сервисов на базе open-source решения Nextcloud. Вебинар будет интересен тем, кто ищет безопасное для компании и удобное для сотрудников решение для хранения корпоративных файлов и совместной работы над документами.

В программе:

  • Удобно, но небезопасно, и наоборот: сетевой диск, публичные облачные хранилища и диски.

  • Open-source решение Nextcloud.

  • Разворачиваем Nextcloud самостоятельно.

  • Сервис DataLine на базе Nextcloud: возможности, которые сложно получить в варианте on-premise.

  • Не просто хранилище: платформа для совместной работы на базе Nextcloud.

  • Кейсы и демонстрация основных модулей решения Nextcloud.

Начало вебинара в 11.00. Продолжительность 1 час. Участие бесплатное, но нужно зарегистрироваться.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru