Рейтинг
0.00

Yandex Cloud

5 читателей, 267 топиков

Как мы запустили в Яндекс.Облаке сервис распределённых очередей сообщений



Привет, меня зовут Василий Богонатов. Я один из тех, кто приложил руку и голову и вложил свою душу в сервис распределённых персистентных очередей сообщений Yandex Message Queue. Сервис вышел в общий доступ в конце мая, но внутри Яндекса он уже давно и активно используется в разных продуктах.

Сегодня я хочу рассказать читателям блога об очередях сообщений вообще и о Yandex Message Queue в частности. Сначала я хочу объяснить, что такое «распределённая персистентная очередь сообщений» и зачем она нужна. Показать её практическую ценность, механику работы с сообщениями, поговорить про API и удобство использования. Во второй половине материала мы посмотрим на техническую сторону: как в наших очередях используется Yandex Database (это надежный фундамент нашего сервиса), как выглядят наивный и улучшенный подход к построению архитектуры, какие проблемы вызывает распределённость и как их можно решить.


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

Мы немного уточним термины.

Очередь сообщений — это хранилище, которое обеспечивает размещение и чтение данных в определённом порядке.

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

Мы разобрались с понятием очереди, переходим к «распределённости» и «персистентности».
  • Распределённость в нашем случае означает наличие кластера, который хранит и обрабатывает данные и метаданные очередей, объединяя все свои узлы в единое целое с помощью вычислительной сети.
  • Персистентность подразумевает, что все сообщения в очереди записываются на диск, а писатель получает подтверждение отправки только после успешной записи.
Распределённость и персистентность не влияют на основную функциональность очереди, они обеспечивают отказоустойчивость и надёжность хранения данных. Какие виды отказов могут случиться в нашей системе, мы рассмотрим чуть позже. Однако не могу отказать в себе в удовольствии и немного раскрою карты: за всю историю существования сервиса мы не потеряли ни одного сохранённого сообщения клиента.

Подробнее
cloud.yandex.ru/blog/posts/2019/06/message-queue

Недоступность сервисов Яндекс.Облака 17 июня 2019 года



17 июня с 7:35 до 12:05 пользователи Яндекс.Облака испытывали сложности с доступом к сервисам Яндекс.Облака через консоль и API. Хотим рассказать подробнее о случившемся.

Что произошло?
В 7:35 в рамках регулярных работ по диагностике сети был перезагружен коммутатор в одной из стоек зоны доступности ru-central1-a. В 7:43 наши дежурные зафиксировали на внутренних мониторингах отсутствие доступа к сервисам через консоль или API. При этом data plane сервиса виртуальных машин Yandex Compute Cloud, сервисов управляемых баз данных и остальных сервисов работал в штатном режиме.

Дежурные инженеры определили, что причина недоступности в одном из вспомогательных компонентов внутри системы хранения метаданных Яндекс.Облака. Ошибка была локализована в 10:18, и в 11:37 сборка с исправленной ошибкой была выкачена.

В 12:05 все сервисы Яндекс.Облака вернулись в рабочее состояние.

Причины
Сервисы Яндекс.Облака хранят метаданные в высокодоступном сервисе с кодовым названием Yandex Database (YDB), который состоит из полностью независимых баз данных (по одной на каждый сервис), каждая из которых распределена между тремя зонами доступности и переживает выход любой из них из строя без потерь. Единственный компонент внутри YDB, общий для всех баз данных, — это база для хранения метаданных самой YDB и компиляции запросов к другим базам.

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

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

База метаданных спроектирована таким образом, что после сбоя штатным образом поднимается заново на любой доступной ноде и восстанавливает свое состояние с дисков из лога изменений. Обычно рестарт базы занимает незначительное время (<1c), а time-to-live (TTL) пре-компилированных запросов был установлен в несколько минут. Но из-за программной ошибки, которая бы не проявилась без вышеописанного стечения обстоятельств, база не смогла корректно восстановить свое состояние в сроки установленного TTL.

Меры для предотвращения повторения подобной ситуации в будущем:
  • Как мы уже упомянули, программная ошибка в базе метаданных была исправлена во время устранения инцидента.
  • Мы уже увеличили TTL пре-компилированных запросов до 6 часов во всех сервисах Яндекс.Облака.
  • Мы увеличиваем долговременную тестовую нагрузку на базу метаданных. В pre-production кластерах Яндекс.Облака база метаданных будет работать с принудительными сбоями.
  • Мы реализуем шардирование базы метаданных между другими базами данных.
Мы приносим свои извинения всем пользователям, кого затронул данный инцидент. Компенсации пользователям будут начислены не позднее 28 июня 2019 года согласно соглашению об уровнях обслуживания соответствующих сервисов Яндекс.Облака при обращении в поддержку.

Облако растёт: новости сервисов





Встречайте Yandex Managed Service for Kubernetes
Мы рады объявить, что в Облаке появился сервис для управления кластерами Kubernetes!
Он подходит для запуска контейнеризованных приложений микросервисов. С помощью Yandex Managed Service for Kubernetes вы также можете мигрировать ваши приложения в Облако без рефакторинга кода и разработки дополнительных инструментов.
Сейчас Yandex Managed Service for Kubernetes находится на стадии Preview — оставьте заявку на сайте, чтобы использовать его в работе.
cloud.yandex.ru/services/managed-kubernetes

Новые сервисы в Яндекс.Облаке
Yandex Message Queue
Это масштабируемое решение для обмена сообщениями между приложениями теперь доступно всем пользователям Облака.
Настройте эффективную коммуникацию между приложениями без разработки своего протокола и обработки ошибок. Приложения с очередями сообщений легче масштабируются и обладают повышенной отказоустойчивостью. Подробнее о том, как устроен сервис, читайте в нашей статье.
Создать очередь сообщений
cloud.yandex.ru/services/message-queue
cloud.yandex.ru/docs/message-queue/

Yandex Managed Service for MySQL
Наконец-то! Теперь все пользователи Яндекс.Облака могут управлять базами данных на основе одной из самых популярных СУБД — MySQL.
MySQL отлично подходит для размещения бэкенда веб-проекта или системы управления контентом (CMS).
С сервисом Yandex Managed Service for MySQL легко создавать read-реплики. Кроме того, сервис непрерывно делает снимки БД и поддерживает технологию Point-in-Time Recovery (PITR), которая позволяет восстановить БД на любой момент времени за последние 7 суток.
Развернуть кластер MySQL в Облаке
cloud.yandex.ru/services/managed-mysql
cloud.yandex.ru/docs/managed-mysql/

Yandex Data Proc
Мы запустили сервис, который помогает разворачивать кластеры Apache Hadoop и Apache Spark в Яндекс.Облаке.
Yandex Data Proc сам создаёт хосты и настраивает их по вашим параметрам. Вы сможете изменить количество и мощности хостов в любой момент. Вы также сможете загружать свои приложения и необходимые сервисы Hadoop.
Доступ к новому сервису предоставляется по заявке — заполните её на нашем сайте.
Попробовать Yandex Data Proc
cloud.yandex.ru/services/data-proc
cloud.yandex.ru/docs/data-proc/

Yandex Instance Groups
Этот компонент сервиса Yandex Compute Cloud позволяет создавать группы однотипных виртуальных машин в инфраструктуре Яндекс.Облака.
Yandex Instance Groups поможет настроить развёртывание и горизонтальное масштабирование ваших ресурсов.
Создать группу ВМ
cloud.yandex.ru/services/instance-groups
cloud.yandex.ru/docs/compute/concepts/instance-groups/

Новые возможности
Калькулятор тарифов
Создавать виртуальные машины и базы данных на основе Intel Xeon Gold (Cascade Lake) выгоднее — производительность новых процессоров выше, а цены ниже. Убедитесь в этом — рассчитайте, сколько стоит нужная вам конфигурация ВМ или БД в калькуляторе!
Например, самая популярная конфигурация виртуальной машины в Облаке с 2 vCPU, 4 RAM и диском 13 ГБ обойдётся в 1673.88 ₽ в месяц с НДС на процессорах новой линейки (вместо 1740.56 ₽). Развернуть управляемую базу данных с частичным использованием ядра (burstable) стоит от 530 ₽ в месяц.
Перейти в калькулятор
cloud.yandex.ru/prices

Список управления доступом (ACL)
Списки управления доступом в Yandex Object Storage позволяют регулировать доступы к бакетам и объектам. Этот механизм не зависит от Yandex Identity and Access Management.
По умолчанию ACL пустой. Владелец Облака может добавить в него пользователей, сервисные аккаунты или системную группу.
Узнать больше про ACL
cloud.yandex.ru/docs/storage/concepts/acl

Другие новые функциональности сервисов
Доступна возможность обновления ранее созданных кластеров ClickHouse в Облаке.
Документация cloud.yandex.ru/docs/managed-clickhouse/operations/cluster-version-update
SQL-запросы к базам данных ClickHouse в Облаке.
Документация cloud.yandex.ru/docs/managed-clickhouse/operations/web-sql-query
CName для Yandex Managed Service for MySQL.
Документация cloud.yandex.ru/docs/managed-mysql/operations/connect
Подключение к базе данных в кластере PostgreSQL с драйвером, поддерживающим только один хост.
Документация cloud.yandex.ru/docs/managed-postgresql/operations/connect
Логическая репликация для управляемой PostgreSQL в Облаке.
Документация cloud.yandex.ru/docs/managed-postgresql/operations/data-migration
Автоматическое восстановление виртуальных машин в группе.
Документация cloud.yandex.ru/docs/compute/concepts/instance-groups/autohealing

Сценарии
Мы добавили два новых сценария по управлению инфраструктурой в Yandex Object Storage и рассказали, как установить Active Directory в Яндекс.Облаке с помощью Terraform и создать образ диска с помощью Packer.
Начало работы с Packer cloud.yandex.ru/docs/solutions/infrastructure-management/packer-quickstart
Развертывание Active Directory cloud.yandex.ru/docs/solutions/infrastructure-management/active-directory

Вебинары и мероприятия
Yandex DataLens: визуализация и анализ данных в Облаке:
Посмотреть запись
Сервисы ML и AI API в Яндекс.Облаке:
Посмотреть запись
Митап Яндекс.Облака в Санкт-Петербурге 2 июля:
Регистрация events.yandex.ru/events/meetings/jul-2

Первый митап Яндекс.Облака в Санкт-Петербурге



2 июля Яндекс.Облако впервые проведет митап в Санкт-Петербурге. В этот раз мы не станем углубляться в технические подробности работы Облака, а проведем краткий ознакомительный курс.
На встрече мы расскажем о том, что представляет из себя платформа, какие сервисы уже есть в Облаке и как мы работаем с пользователями. Обязательно зарегистрируйтесь — так для вас точно найдется место в зале. При регистрации предложите свою тему для митапа — мы учтем её при планировании следующей встречи.
Встречаемся 2 июля в офисе Яндекса в Санкт-Петербурге по адресу: Пискаревский проспект, дом 2, корпус 2, литер Щ, БЦ «Бенуа». Начало регистрации в 17:30.
events.yandex.ru/events/meetings/jul-2/

Изменения в условиях использования сервисов Облака



Спасибо за работу с сервисами платформы Яндекс.Облако!
В этом письме мы собрали все изменения в Оферту, которые вступят в силу с 1 июля 2019 года.
Краткое описание изменений:
  • Изменились сроки хранения данных пользователей при приостановке и прекращении доступа к сервисам, а также процедура удаления данных (раздел 11 Оферты).
  • Установлено ограничение для доступа к сервисам для несовершеннолетних.
  • Уточнен порядок выставления счетов юридическим лицам и порядок предоставления кассовых чеков при проведении расчетов (раздел 6 Оферты)
Если у вас возникнут вопросы, пожалуйста, воспользуйтесь технической поддержкой.

Работа сервисов Яндекс.Облака восстановлена



Спешим сообщить, что в 12:05 (МСК) работа сервисов Яндекс.Облака восстановлена и теперь все сервисы работают в штатном режиме. Подробную информацию мы сообщим позднее.
Если вы ещё испытываете сложности при работе с платформой, пожалуйста, обратитесь в службу технической поддержки, написав ответ на это письмо. Наши специалисты ответят на ваши вопросы и помогут с решением проблем — по почте или через чат.

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



Сегодня, 17 июня, мы обнаружили технические проблемы в работе некоторых сервисов Яндекс.Облака. Запросы к консоли Облака, Yandex Object Storage, Yandex Message Queue, а также к API могут завершаться ошибкой. Мы уже занимаемся восстановлением работы сервисов.
Если у вас возникнут вопросы или проблемы при работе с сервисами, пожалуйста, обратитесь в службу технической поддержки, написав ответ на это письмо. Наши специалисты ответят на ваши вопросы и помогут с решением проблем — по почте или через чат.

Новые функциональности Yandex Object Storage



Yandex Object Storage — это универсальное решение для хранения данных. Оно предоставляет надёжный и быстрый доступ к объектам в хранилище и подходит для проектов с любыми требованиями к инфраструктуре.
Сервис отказоустойчив и легко масштабируется. Для доступа к данным вы можете использовать популярные инструменты: API Yandex Object Storage совпадает с API Amazon S3.

Мы постоянно улучшаем сервис, чтобы управлять объектным хранилищем было удобнее и проще, и уже добавили несколько новых возможностей:
  • Метод copy, предназначенный для надёжного и быстрого копирования объектов в Yandex Object Storage. Подробнее о методе copy cloud.yandex.ru/docs/storage/s3/api-ref/object/copy
  • Поддержка кеширования данных за счёт пользовательских заголовков Cache-Control (набор директив для кеширования) и Expires (срок устаревания).
  • Поддержка response-заголовков: теперь вы можете переопределять множество системных заголовков в динамике для каждого аутентифицированного запроса или в связке с pre-signed ссылками.
  • Cписки управления доступом (ALC), с помощью которых вы можете выдавать пользователям Облака, сервисным аккаунтам и системным группам разрешение на доступ к ресурсам Object Storage. Подробнее об ALC cloud.yandex.ru/docs/storage/concepts/acl

Кроме того, мы изменили значения SLA для Yandex Object Storage, подтверждая, что это высоконадёжный, доступный и отказоустойчивый сервис, который соответствует требованиям в том числе больших компаний.

cloud.yandex.ru/docs/storage/

CORS и настройка жизненного цикла в Yandex Object Storage



Мы рады представить вам две новые возможности Yandex Object Storage — универсального решения для хранения данных:

Поддержка технологии CORS.
Создавайте сложные веб-сервисы с помощью кросс-доменных запросов к объектам и регулируйте доступ к вашим данным через заголовки Origin.
Конфигурацией CORS можно управлять в консоли Облака, а также с помощью инструментов, которые взаимодействуют с Yandex Object Storage через HTTP API, совместимый с Amazon S3.
Подробнее про CORS cloud.yandex.ru/docs/storage/cors/

Настройка жизненного цикла объектов в бакете.
Вы можете в любой момент создать набор правил, которые будут управлять временем хранения объектов в ваших бакетах. Например, вы можете задать сроки для удаления файлов и определить количество дней после загрузки объекта, когда правило становится применимо.
Подробнее про жизненный цикл объектов cloud.yandex.ru/docs/storage/lifecycles/

Если у вас есть вопросы — обращайтесь в техподдержку. Это можно сделать в консоли управления, по электронной почте или в чате. Техподдержка входит в стоимость сервисов до 1 сентября 2019 года.

Разверните базу данных в Облаке



Управляемые кластеры баз данных — одно из самых популярных решений в Облаке. Выбирайте подходящий способ хранения данных, размещайте хосты кластера в разных зонах доступности — обслуживание баз и обновление СУБД Облако берёт на себя. Вы сможете выбирать схемы размещения кластера, управлять политикой резервирования БД, просматривать журналы событий и следить за ключевыми метриками по графикам.
Управляемые БД в Облаке стали выгоднее: разверните базы данных с неполным уровнем производительности хоста (burstable) с долей vCPU 5%, 20% или 50% и платите меньше. Такие БД обычно используют для тестирования и разработки. Их стоимость — от 530 ₽ в месяц с НДС.
Выберите СУБД, которая лучше всего подойдет для ваших задач:

Yandex Managed Service for PostgreSQL

NEW: Yandex Managed Service for MySQL

Yandex Managed Service for MongoDB

Yandex Managed Service for ClickHouse
  • Анализ потоков структурированных и неизменяемых событий и результатов логирования.
  • Визуализация информации и анализ событий в реальном времени.
  • Отслеживание инцидентов на сервисе.
  • Пошаговая инструкция
  • Видео-инструкция

NEW: Yandex Managed Service for Redis
  • Работа с процессами, требующими самой высокой скорости обращения к данным.
  • Настройка очередей сообщений.
  • Пошаговая инструкция

А недавно появился новый сервис в стадии превью: Yandex Data Proc — он позволяет разворачивать кластеры Apache Hadoop и Apache Spark в инфраструктуре Яндекс.Облака. Зарегистрируйтесь на вебинар, чтобы узнать о сервисе подробнее.
cloud.yandex.ru/docs/data-proc/

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