2016-09-19 4 views
6

아파치 공기 흐름 (공식적으로 airbnb의 공기 흐름) 스케줄러를 고 가용성에 배포하는 방법은 무엇입니까?고 가용성을위한 공기 흐름 설정

분명히 고 가용성 구성에 배포해야하는 백엔드 DB 또는 RabbitMQ에 대해 묻지 않습니다.

내 주요 관심사는 스케줄러입니다. 특별히해야 할 일이 있습니까?

답변

7

조금 파고 가면서 여러 개의 스케줄러를 동시에 실행할 필요가 없다는 것을 발견했습니다. 즉, 기상 스케줄러는 높은 가용성 환경에서 사용하기에 안전하지 않습니다.

공기 흐름 팀은 DAG 데이터 구조에 잠금 메커니즘을 추가하여이 문제를 해결할 계획을 가지고 있지만 아직 구현되지 않았습니다 (2 명의 스케줄러를 검사하여 좋은 dag 인스턴스를 예약 한 것을 확인했습니다). 이 여기에 설명되어 있습니다 : https://groups.google.com/forum/#!topic/airbnb_airflow/-1wKa3OcwME

내가 리더 선거에 대한 내 자신의 코드와 사용 클러스터 도구를 사용하여 스케줄러를 포장하여 높은 availalbilty의 문제를 해결하는 방법을 발견 않았다 (나는 personanlly이 목적을 위해 영사를 사용). 이렇게하면 선출 된 마스터 만 스케줄러를 실행하고 마스터가 다운되면 슬레이브가 대신합니다.

공기 흐름 스케줄러가 현재이 문제를 직접 해결할 때까지는 적합하지 않기 때문에 고 가용성 환경에서 공기 흐름을 사용할 때 이것을 고려하십시오.

편집 - 마스터 슬레이브 솔루션에 대한 또 다른 접근법은 클러스터 관리자/스케줄러를 사용하여 항상 하나의 기류 스케줄러 인스턴스 만 사용할 수 있도록하는 것입니다. 이 접근법은 클러스터 관리자의 자기 치유 능력에 의존합니다. 예를 들어, 메소 (mesos)와 유목민 (nomad) 모두 이런 종류의 구성을지지합니다 (나는 단순하게 유목민을 선택했습니다).

+0

저는 이것을 연구 중이며 Google을 통해이 문제가 발생했습니다. Nomad와 Consul이이 모든 작업을 어떻게 수행하는지 설명하는 샘플 코드 나 블로그에 대해 블로그에 게시 했습니까? 우리는 영사를 사용하지만 유목민은 여전히 ​​우리에게 새로운 것입니다. 어떤 이유로 든 다른 노드 또는 동일한 노드에서 스케줄러를 작동시킬 수 있어야합니다. – luckytaxi

+0

블로그에 대해 블로그를 작성하지 않았습니다. 당신이 nomad를 설정한다면 서비스로 지정하고 count = 1을 사용하고 constrainst가 몇 개의 노드를 만족하는지 확인하십시오. 트릭을해야합니다. –

+0

U는 Kubernetes 또는 다른 오케스트레이션 도구를 사용할 수도 있습니다. 이것을 자기 치유라고합니다. –

1

내 개인적인 경험은 내가 10 개의 실행 (-N 10)마다 스케줄러를 다시 시작하고 possibile 할 때이 소프트웨어를 사용하는 최상의 pratices에서 발견 한 istruction을 따르는 것입니다. https://github.com/teamclairvoyant/airflow-scheduler-failover-controller 또한 모니터링을 핑하는 dag를 사용합니다. 시스템에서 스케줄러가 사라지지 않았는지 확인하십시오.

관련 문제