2012-10-08 2 views
1

나는 하나의 마스터 - 여러 슬레이브 방식으로 로 조직 된 EC2의 클러스터에서 실행해야하는 오픈 소스 툴에서 작업하고 있습니다. 나는 사물을 올바로 조직하고 가장 간단하면서도 신뢰할 수있는 방법으로 조언하는 방법이 필요합니다.EC2에서 클러스터를 설계하는 올바른 방법

은 내가 기본적으로 필요한 것은 (사용자가 수동으로 실행되는) 마스터 인스턴스에서 실행되는 코드이며 다음을 수행하십시오

가) 실행 N 슬레이브 인스턴스 (N은 사용자로부터 온)

B) 각 인스턴스가 실행되고 실행 된 후 SSH로 연결하고 무언가를 시작하십시오. 슬레이브 인스턴스가 실패 할 경우

C))) 단순히 핑 예에 의해 (살아 있다는 슬레이브 인스턴스에

D를 계속 추적 -이 종료되어 있는지 확인, 실행 또 다른 하나의 단계를 반복 B)를

전자) 사용자 종료 슬레이브 인스턴스의 신호.

모든이 매우 단순하고 간단 보인다 아직 나는 몇 가지 질문이 있습니다

1) 준비 솔루션을. 먼저 Zookeeper을 살펴 보았습니다. 그러나 나는 그 복잡성에 겁 먹었습니다. 그것은 내가 필요로하는 그런 간단한 일을 위해 과도한 것 같다. 내가 발견 한 또 다른 것은 StarCluster이다. 파이썬에서도 훌륭하다. (내 도구는 파이썬이기도하다.)하지만, 내가 필요한 것 (추적, 재방송 인스턴스 유지)을하지는 못한다. 내 질문은 : 내가 알지 못하는 간단한 도구, 라이브러리, 프레임 워크가 있습니까?

2) 또 다른 방법은 직접 구현하는 것입니다. 여기에있는 질문은 : 내가 모르는 내 문제의 함정이 있습니까? 모든 것이 간단 해 보입니다. 몇 가지 API 호출과 일부 일반 핑이 있지만 여기에 표시되지 않을 수도 있으므로 이미 작성된 도구를 사용하는 것이 정말 옳은가요?

3) 혼자서 코딩하는 경우, 문제는 CloudWatch를 사용하는지 아닌지입니다. 내부 계산 클러스터를 관리하는 데 실제로 차이가 있습니까? 아니면로드가 많은 사이트 등을 돕는 것이 더 낫습니다.

4) 간단한 아키텍처는 마스터 노드 오류로부터 보호되지 않습니다. 사용자가이를 실행 한 다음 웹 인터페이스를 통해 연결하고 클러스터를 실행하지만 마스터 노드에 장애가 발생하면 모든 것이 손상됩니다. 슬레이브는 마스터 노드의 존재를 확인하고 마스터 노드가 실패 할 경우 자신을 종료 할 수 있습니다. 이것은 헤드리스 실행 돈을 소비 클러스터에서 일부 보호를 추가하지만, 그것은 우아한 재시동의 문제를 해결하지 않습니다. 어떻게 해결할 수 있을까요?

5)이 프로젝트를 코딩하기 전에 알아야 할 중요한 내용이나 중요한 내용이 있습니까?

미리 감사드립니다.

답변

2

아마존의 자동 크기 조정을 살펴볼 수 있습니다. 분명히 이것은 EC2 인스턴스 만 처리하지만 인스턴스를 시작, 중지 및 모니터링하는 복잡성을 많이 처리합니다.

자동 크기 조정을 사용하면 하나 이상의 그룹을 만들 수 있습니다. 아마존에게 그룹 (AMI, userData, 인스턴스 유형 등)에서 더 많은 인스턴스를 생성하는 방법과 그룹에서 원하는 인스턴스의 수를 알려준다. 아마존은 필요한만큼의 인스턴스를 시작하고 실패 할 경우 대체 할 것입니다.

api를 사용하여 필요한 노드의 수를 변경할 수 있습니다 (그 당시 인스턴스가 필요하지 않은 경우 0으로 설정할 수 있음). 또는 cloudwatch 메트릭을 기반으로 할 수 있습니다. 예를 들어 SQS를 사용하여 작업을 슬레이브에 배포 한 경우 사용할 수있는 작업이있을 때 그룹 크기를 0에서 원하는 번호로 늘리거나 대기열이 비워지면 그룹 크기를 0으로 되돌릴 수 있도록 자동 확장을 구성 할 수 있습니다.

여러 개의 그룹을 가질 수도 있습니다. 예를 들어, 항상 하나의 인스턴스가있는 마스터 노드에 해당하는 그룹 (예 : 실패 할 경우 ec2가이를 대체 함)과 인스턴스가 0 인 슬레이브에 대한 두 번째 그룹 수행 할 작업이 없을 때 N 개의 인스턴스와 사용할 수있는 작업이있을 때 N 개의 인스턴스가 있습니다.

나는 python에서 EC2 apis를 사용하지 않았지만, boto가 이것을 처리하는 훌륭한 역할을한다고 들었습니다.

1

하나의 가능한 접근 방식은 PaaS - 서비스를 제공하는 플랫폼을 사용하여 필요한 많은 배관을 처리하는 것입니다.

  • 프로비저닝 VM을
  • 새로운 VM을
  • 모니터링 VM 상태로 응용 프로그램 코드를 배포하고 실패한 사람을 대체 할 새로운 VM을 시작하십시오 PaaS를 일반적으로 AT-이상을 처리합니다.
  • 당신은 PaaS를 기대하는 형식에 따라 응용 프로그램을 정의하고이를 제출해야

을 것이다 자동 확장. 나머지는 자동화되어야합니다. 여기 PaaS를 옵션의 좋은 비교가 : Looking for PaaS providers recommendations

면책 조항 : 나는, GigaSpaces의 오픈 소스 PaaS를 스택의 개발 작업, Cloudify

관련 문제