들어오는 파일을위한 라운드 로빈 많은 새 파일이 한 서버에 정기적으로

고유 한 파일 이름을 가진 많은 새 파일이 한 서버에 정기적으로 ” 1 “나타납니다 . (매일 수백 GB의 새 데이터와 마찬가지로 솔루션은 테라 바이트로 확장 할 수 있어야합니다. 각 파일의 크기는 수 메가 바이트, 최대 수십 메가 바이트입니다.)

해당 파일을 처리하는 여러 시스템이 있습니다. (수백 가지로 솔루션을 확장 할 수 있어야합니다.) 새로운 기계 를 쉽게 추가하고 제거 할 있어야합니다 .

아카이브 스토리지를 위해 각 수신 파일 복사 해야하는 백업 파일 스토리지 서버 있습니다. 데이터가 유실되어서는 안되며 들어오는 모든 파일은 백업 스토리지 서버에 전달되어야합니다.

각 파일 수신 미스트는 처리하기 위해 단일 시스템에 전달, 백업 스토리지 서버에 복사해야합니다.

수신자 서버는 파일을 보낸 후에 파일을 저장할 필요가 없습니다.

위에서 설명한 방식으로 파일을 배포하는 강력한 솔루션을 조언하십시오. 솔루션 Java를 기반으로 하지 않아야 합니다 . 유닉스 방식이 바람직하다.

서버는 우분투 기반이며 동일한 데이터 센터에 있습니다. 다른 모든 사항은 솔루션 요구 사항에 맞게 조정할 수 있습니다.


1 파일이 파일 시스템으로 전송되는 방식에 대한 정보를 의도적으로 생략했습니다. 그 이유는 오늘날 여러 가지 다른 레거시 수단 (이상하게도 scp, ØMQ를 통해)으로 파일을 타사에서 전송하기 때문입니다. 파일 시스템 수준에서 크로스 클러스터 인터페이스를 절단하는 것이 더 쉬운 것처럼 보이지만 하나 이상의 솔루션에 실제로 특정 전송이 필요한 경우 레거시 전송을 해당 전송으로 업그레이드 할 수 있습니다.



답변

찾고있는 솔루션 중 하나가 있습니다. 이 시스템을 만드는 데는 자바가 없으며 오픈 소스 비트 만 사용 가능합니다. 여기에 제시된 모델은 내가 사용하고있는 기술 이외의 다른 기술과 함께 사용할 수 있습니다.

  1. 파일은 특정 라운드 로빈 DNS 주소로 HTTP POST됩니다.
  2. 그런 다음 파일을 POST하는 시스템은 다른 한 쌍의로드 밸런서를 통해 AMQP 시스템 (여기의 Rabbit MQ)에 작업을 드롭하여 처리 워크 플로우를 시작합니다.
  3. HTTP POST를 수신하는로드 밸런서는 각각 OpenStack Swift 오브젝트 저장소 서버 그룹 앞에 있습니다.
    • 로드 밸런서에는 각각 두 개 이상의 OpenStack Swift 오브젝트 저장소 서버가 있습니다.
    • 대상이 HA 인 경우 ‘라운드 로빈은 HA가 아닙니다.’가 될 수 있습니다. YMMV.
    • 내구성을 높이기 위해 RRDNS의 IP는 개별 핫 스탠바이 LB 클러스터 일 수 있습니다.
  4. 실제로 POST를 가져 오는 오브젝트 저장소 서버는 파일을 Gluster 기반 파일 시스템으로 전달합니다.
    • Gluster 시스템은 분산 (일명 샤드) 및 복제이어야합니다. 이를 통해 어리석은 밀도로 확장 할 수 있습니다.
  5. AMQP 시스템은 첫 번째 작업을 디스패치하고 백업을 사용 가능한 처리 노드로 보냅니다.
  6. 처리 노드는 파일을 기본 스토리지에서 백업 스토리지로 복사하고 필요에 따라 성공 / 실패를보고합니다.
    • 실패 모드 처리는 여기에 표시되지 않습니다. 기본적으로 작동 할 때까지 계속 시도하십시오. 작동하지 않으면 예외 프로세스를 실행하십시오.
  7. 백업이 완료되면 AMQP는 처리 작업을 사용 가능한 처리 노드로 발송합니다.
  8. 처리 노드는 파일을 로컬 파일 시스템으로 가져 오거나 Gluster에서 직접 처리합니다.
  9. 처리 노드는 처리 제품을 보관하고 AMQP에 성공을보고합니다.

이 설정은 충분한 서버가 주어진 경우 최고 속도로 파일을 수집 할 수 있어야합니다. 충분히 큰 크기의 10GbE 수집 속도를 얻는 것이 가능해야합니다. 물론 많은 양의 데이터를 빠르게 처리 하려면 처리 시스템 클래스에 더 많은 서버가 필요합니다. 이 설정은 최대 1,000 개의 노드로 확장 될 수 있으며 그 이상으로 확장 될 수 있습니다 (그러나이 모든 작업을 수행하는 대상에 따라 얼마나 멀리 떨어져 있는지).

엔지니어링 문제는 AMQP 프로세스 내에 숨겨진 워크 플로 관리 프로세스에 있습니다. 그것은 모든 소프트웨어이며 아마도 시스템 요구에 맞게 사용자 정의되었습니다. 그러나 데이터가 잘 공급되어야합니다!


답변

전송 메커니즘이 계층 3에서 리디렉션 될 수있는 것이기 때문에 scp를 통해 파일이 도착한다는 사실을 알았으므로 프런트 엔드 서버가 존재하는 이유는 전혀 없습니다.

처리 서버 풀과 라운드 로빈 리디렉션 정책을 사용하여 LVS 디렉터 (페어)를 앞에 배치했습니다. 따라서 풀에 서버를 추가하거나 빼는 것이 매우 쉬워지고 넘어 질 프런트 엔드 서버가 없기 때문에 안정성이 향상되며 파일 가져 오기에 대한 풀 / 푸시 문제를 해결할 필요가 없습니다. 프런트 엔드가 없기 때문에 처리 서버에 대한 프런트 엔드

그런 다음 각 풀 서버는 파일을받을 때 두 가지 작업을 수행해야합니다. 먼저 보관 저장소에 파일을 복사 한 다음 파일을 처리하여 전송합니다.