Мы хотели бы развернуть приложение Airflow в Kubernetes в 2 дата-центрах.
Контейнер воздушного потока Schedular генерирует DAG за каждые 1, 5 и 10 минут. Эти группы доступности баз данных - это задачи, которые будут назначены контейнеру Airflow Worker.
В процессе назначения задач сотруднику Airflow Airflow Schedular отправляет данные о задачах как в MariaDb (может рассматриваться как источник правды), так и в Redis.
В задании MariaDB может быть один из статусов 'queued
', 'running
', 'success
', 'failed
'. Когда задачи находятся в Redis, они будут в состоянии 'queued
'.
MariaDB поддерживает то же самое, когда получает задачи от Airflow Schedular. когда Redis передает определенную поставленную в очередь задачу
в рабочий контейнер, MariaDB меняет статус конкретной задачи на «выполняется», и если он завершает выполнение процесса, статус задачи в MariaDB изменится на «Успех».
Актуальная проблема:
При сбое Redis у нас есть задачи в очереди MariaDB, но мы потеряем данные в Redis. Когда k8s запускает новый сервер Redis, он теряет предыдущие задачи - здесь наступает DATA LOSS .
Что может быть решением для этого.
Можем ли мы использовать Redis Clustering - Gossip protocol
, чтобы избежать потери данных:
Если да, не могли бы вы предоставить какую-либо документацию для решения этой проблемы с использованием этого протокола.
иначе предоставьте предложения, которые подходят для моей среды и сценария.