Используемый стек технологий: Gitlab, Kubernetes, Helm, Kafka, Hazelcast, Elasticsearch, Cassandra, Ceph, Prometheus, Grafana, Clickhouse, Minio, KVM.
Решение: Проведен аудит серверов и выполнен пул следующих работ:
– когда серверы и кластер k8s был запущен, оказалось что в кластере elasticsearch на одном из трех узлов отсутствовали данные. В настройках узла elasticsearch не был убран параметр: "cluster.initial_master_nodes: elastic-0". В результате узел не мог добавиться в существующий кластер, и создавал новый из одного узла. Опцию убрали, и узел успешно присоединился к кластеру.
– появилась задача ручного управления кластерами Hazelcast. Развернут managment-center, интегрирован в кластер. Он предоставляет веб-интерфейс для ручного управления кластером. Работы успешно проведены.
– не запускалась Kafka. Причина была в исчерпании места на PV в кластере. Место добавили.
– некоторые приложения в окружениях dev и prod использовали единый кластер Kafka. Внесены изменения в helm-чарты для разделения окружений.
– по просьбе клиента был заполнен индекс в elasticsearch на основании данных из cassandra. Типы данных и структура индекса приведены к необходимым для приложения.
Результат: В рамках разовых работ сервера и кластер приведены в работоспособное состояние. Данные в кластере Hazelcast успешно восстановлены. В рамках поддержки произведены следующие дополнительные работы:- по просьбе клиента часто приходилось вручную редактировать данные в кластере cassandra, вносить изменения в схему. Поэтому было принято решение реализовать ежедневный бэкап кластеров cassandra на удаленный сервер. Восстановление данных из бэкапа cassandra уже использовалось при откате на предыдущую версию в dev-окружении.- клиентом было разработано приложение на Flask, которое позволяет удобно проводить обслуживание внутренних данных основного приложения через веб-интерфейс. Для приложения написан helm-chart, настроен CI без использования werf. Персистентные данные приложения хранятся в ceph rbd.
Еще больше подробностей в блоге