Андела спонсировала этот пост.
Kubernetes — это очень мощная и надежная платформа для оркестрации контейнерных приложений, превосходно управляющая как приложениями с сохранением состояния, так и приложениями без него. Управление приложениями с отслеживанием состояния может быть сложной задачей из-за необходимости поддерживать согласованность, целостность и доступность данных.
Правильные, хорошо документированные и проверенные стратегии резервного копирования и восстановления необходимы для того, чтобы в случае аварии вы могли легко восстановить обслуживание без потери данных. Существуют разные методы резервного копирования и восстановления в среде Kubernetes, поэтому вы должны убедиться, что используемая вами стратегия соответствует вашему сценарию использования.
Я познакомлю вас с основными стратегиями и инструментами, которые можно адаптировать для выполнения резервного копирования и восстановления в среде Kubernetes для обеспечения непрерывности бизнеса.
Почему резервное копирование и восстановление необходимы для приложений с отслеживанием состояния?
Потеря данных в приложении с отслеживанием состояния может иметь катастрофические последствия. В отличие от приложений без отслеживания состояния, которые не требуют постоянного хранилища и могут быть легко масштабированы и заменены в любое время, для ваших приложений с сохранением состояния важно иметь проверенную и надежную стратегию резервного копирования и восстановления. Примеры приложений с отслеживанием состояния включают в себя:
- Базы данных: MySQL, MongoDB и PostgreSQL.
- Кэши памяти: Redis, RabbitMQ.
- Системы хранения: Elasticsearch, Cassandra.
Понимание рабочих нагрузок Kubernetes с отслеживанием состояния
StatefulSet в Kubernetes — это объект API рабочей нагрузки, используемый для управления приложениями с отслеживанием состояния. StatefulSet предоставляет модулю возможность поддерживать фиксированную идентификацию, уникальную сетевую идентификацию, постоянные тома (PV) и заявки на постоянные тома (PVC). StatefulSet упрощает получение идентификаторов каждого модуля, что, в свою очередь, упрощает выполнение резервного копирования и восстановления базы данных.
Стратегии резервного копирования для приложений Kubernetes с отслеживанием состояния 1. Снимки томов
Kubernetes предоставляет стандартизированный способ копирования содержимого тома в определенное время без создания совершенно нового тома. Снимки томов удобны и эффективны, когда администраторы баз данных хотят быстро восстановить предыдущее состояние. Это также может быть полезно, когда необходимо выполнить обслуживание кластера Kubernetes. Резервное копирование будет выполнено перед выполнением действия, а администратор выполнит восстановление после выполнения действия.
Как использовать снимки тома: Kubernetes имеет встроенную поддержку управления снимками томов через API моментальных снимков Container Storage Interface (CSI), который легко интегрируется с хранилищем в облачных средах.
- В AWS используйте AWS EBS.
- В Azure используйте моментальные снимки управляемых дисков Azure.
- В Google Cloud Platform (GCP) используйте постоянные снимки диска.
Инструменты создания снимков тома, на которые стоит обратить внимание:
- Velero — популярный инструмент с открытым исходным кодом, используемый для резервного копирования, восстановления и миграции ресурсов Kubernetes, таких как PVC и PV. Он также выполняет запланированное резервное копирование и интегрируется с основными поставщиками облачных услуг.
- Вы также можете настроить задание cron Kubernetes. Создайте ресурс задания cron Kubernetes, который планирует регулярные задачи для выполнения команд rsync. Инструмент rsync синхронизирует или создает резервную копию данных с физического лица в резервное хранилище, например внешнее хранилище, облачное хранилище или другое физическое хранилище.
2. Резервные копии на уровне приложения
Приложения с отслеживанием состояния (особенно базы данных) требуют постоянного регулярного резервного копирования. Простое копирование данных может привести к их повреждению, поэтому для резервного копирования лучше использовать встроенный инструмент базы данных.
Инструменты резервного копирования базы данных, на которые следует обратить внимание:
- PostgreSQL: используйте pg_dump.
- MySQL: используйте mysqldump.
- Используйте Velero для регулярного резервного копирования.
3. Инкрементное и дифференциальное резервное копирование
В случаях, когда база данных очень велика, будет полезно выполнить инкрементное и дифференциальное резервное копирование. Инкрементное и дифференциальное резервное копирование позволяет создавать резервные копии только изменившихся данных, что экономит время, пропускную способность и хранилище.
- Инкрементные резервные копии: фиксируйте изменения, произошедшие с момента последнего резервного копирования.
- Дифференциальные резервные копии: фиксируйте изменения, произошедшие с момента последнего полного резервного копирования.
Инструменты инкрементального и дифференциального резервного копирования, на которые стоит обратить внимание:
- Restic поддерживает эффективное и зашифрованное инкрементное резервное копирование.
- BorgBackup можно использовать для резервного копирования томов Kubernetes на узле.
4. Внешние и многорегиональные резервные копии
Чтобы предотвратить возникновение единой точки сбоя в расположении базы данных и защититься от сбоев расположения базы данных, храните резервные копии вне офиса или в нескольких регионах. Чтобы хранить резервные копии в облаке, вы можете попробовать:
- Амазонка S3: S3 — это надежный и масштабируемый сервис объектного хранения, который может реплицировать данные в другие регионы.
- Облачное хранилище Google: Облачное хранилище GCP интегрируется с сервисами GCP, хранит любые объемы данных и извлекает их так часто, как вам удобно.
- Хранилище BLOB-объектов Azure: Он интегрируется со службами Microsoft Azure и обеспечивает масштабируемое и экономичное объектное хранилище в облаке.
Стратегии восстановления приложений Kubernetes с отслеживанием состояния
Существует очень много стратегий, которые можно адаптировать для восстановления данных в приложении с отслеживанием состояния.
1. Восстановление из снимков тома
Следующие методы можно использовать для восстановления снимков тома из среды Kubernetes. Вам также необходимо проверить целостность моментального снимка тома перед попыткой восстановления.
- Используйте Velero для восстановления тома.
- Используйте ресурсы Kubernetes для восстановления VolumeSnapshot в новый PV.
2. Восстановление на уровне приложения
Используйте встроенный инструмент, предоставляемый базой данных, для выполнения восстановления базы данных. Вы можете использовать эти инструменты только для восстановления резервных копий, созданных с помощью того же инструмента (например, если для резервного копирования MySQL использовался mysqldump).
Инструменты восстановления для конкретных баз данных:
- PostgreSQL: используйте pg_dump.
- MySQL: используйте mysqldump.
- Используйте Velero для регулярного резервного копирования.
3. Полное восстановление Kubernetes с помощью Velero
Velero может выполнять резервное копирование и восстановление ресурсов Kubernetes. Вы можете использовать Velero для восстановления ресурсов Kubernetes, таких как StatefulSets, ConfigMaps, секреты Kubernetes, PV и PVC.
После того, как все ресурсы будут успешно восстановлены, вы можете повторно подключить PV.
Рекомендуемые рекомендации по резервному копированию и восстановлению
При разработке стратегии резервного копирования и восстановления убедитесь, что она включает следующие рекомендации:
- Выполняйте регулярное запланированное резервное копирование и придерживайтесь политик хранения.
- Организуйте периодическое тестирование (восстановление резервных копий) резервных копий для проверки их целостности и подлинности. Это можно автоматизировать и создавать отчеты для анализа.
- Отслеживайте и отправляйте оповещения о сбоях резервного копирования. Вы можете использовать такие инструменты, как Nagios или Datadog, для мониторинга резервного копирования.
- Задокументируйте процедуры восстановления.
- Используйте шифрование резервных копий в целях безопасности.
Инструменты автоматизации аварийного восстановления
Следующие инструменты можно использовать для автоматизации резервного копирования и восстановления в среде Kubernetes.
- Velero — это инструмент с открытым исходным кодом для резервного копирования и восстановления рабочих нагрузок Kubernetes. Он также поддерживает облачное хранилище и снимки.
- Stash — это собственное решение аварийного восстановления Kubernetes для резервного копирования и восстановления томов и баз данных в Kubernetes.
- Ark — это инструмент с открытым исходным кодом, созданный Heptio для резервного копирования и восстановления кластеров и физических объектов Kubernetes. Ark позволяет вам выполнять резервное копирование всего или части ресурса в вашем кластере Kubernetes, включая PV, развертывания, теги и многое другое.
Заключение
Очень важно проводить регулярные тренировки по аварийному восстановлению (DR) для обеспечения непрерывности бизнеса в аварийной ситуации. Вы также можете выполнять регулярные действия, такие как хаос-инженерия, которая будет моделировать сбои и проверять процесс восстановления вашей инфраструктуры, в вашем кластере Kubernetes.
Реализуя стратегию процесса резервного копирования и восстановления, соответствующую вашему варианту использования, используя StatefulSets, снимки PV и PVC; использование решений для резервного копирования, таких как Velero; и поддерживая политику резервного копирования и восстановления, вы можете гарантировать, что ваши приложения с отслеживанием состояния останутся устойчивыми к потере или повреждению данных.
Разработанная стратегия резервного копирования и восстановления не только снижает риск, связанный с потерей данных, но также повышает общую надежность и надежность ваших приложений, управляемых Kubernetes. Это будущие инвестиции в настройку вашей инфраструктуры, гарантирующие бесперебойную работу даже в случае непредвиденных сбоев.
Хотите глубже погрузиться в возможности Kubernetes? Ознакомьтесь с руководством Анделы «Создание масштабируемого конвейера CI/CD для Kubernetes с помощью GitHub и Argo CD» и продолжайте свое путешествие по Kubernetes.
Andela предоставляет крупнейшую в мире частную рыночную площадку для талантов удаленных технологий, управляемую платформой на базе искусственного интеллекта для управления полным жизненным циклом найма по контракту. Andela помогает компаниям масштабировать команды и быстрее реализовывать проекты в специализированных областях: разработка приложений, искусственный интеллект, облако, данные и аналитика. Узнайте больше Последние новости от Анделы ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Адетокунбо Иге — технолог Andela, частного глобального рынка талантов. Опытный инженер по платформам и сертифицированный ведущий специалист по обеспечению непрерывности бизнеса по стандарту ISO 22301, он обладает богатым опытом в разработке программного обеспечения, управлении корпоративными приложениями, серверной инфраструктуре… Подробнее от Адетокунбо Иге