2011-09-13 3 views
3

일부 임시 처리를 위해 새로운 ec2 호스트를 시작하기 위해 fabric 및 boto를 사용해 왔지만 언제 호스트에 연결할 수 있는지 항상 알지 못했습니다. 문제는 뭔가 준비되었을 때 ec2에게 물어볼 수 있지만 실제로는 준비가되지 않았기 때문입니다. 그것은 "활성" 새로운 ec2 호스트가 연결될 수있는시기를 알려주는 프로세스

  • 설문 조사 EC2 호스트가이 public_dns_name을 가질 때까지 있다고까지

    1. 설문 조사 EC2 :

      은 (여전히 짜증하지만) 내가 작품 최선을 눈치 챘을하는 과정입니다
    2. 는 연결

    을 수락 할 때까지 루프에서 새 호스트에 연결을 시도하지만 내가 엉덩이를했습니다는 SSH 키 쌍에 대해 알고 전에 때로는 겉으로 연결을 받아 들인다 그것으로 눈을 뜨고 암호를 묻습니다.

    시작할 때 ec2 호스트에 연결할 수있는시기를 결정하는 더 좋은 방법이 있습니까? 이 책을 훌륭하게 효율적으로 작성한 사람이 있습니까?

  • 답변

    4

    나는 # 1과 # 2에 대해서도 똑같은 일을하지만, # 3에서는 간단한 타임 아웃으로 ssh 포트 (22)에 간단한 TCP 연결을 시도하고 다시 시도하는 코드 루프가있다. 마지막으로 성공하면 5 초 후에 ssh 명령을 실행합니다.

    sshd가 시작되고 공개 ssh 키가 .ssh/authorized_keys에 추가되는시기와 순서는 실행중인 AMI에 따라 다를 수 있습니다.

    참고 : 공용 IP 주소를 DNS 이름 대신 직접 사용하는 것이 좋습니다. IP 주소는 DNS 이름으로 인코딩되므로 프로세스에 DNS 조회를 추가해도 아무런 이점이 없습니다.

    0

    EC2 자체는 인스턴스에서 SSH 연결을 수락 할 준비가되었는지를 알 수있는 방법이 없습니다. 그것보다 훨씬 낮은 수준에서 작동합니다.

    이 작업을 수행하는 가장 좋은 방법은 AMI를 업데이트하여 일종의 상태 서블릿을 작성하는 것입니다. 시작의 후반 단계에서 실행되며 모든 HTTP 요청에 상태 코드 200을 반환하는 매우 간단한 - 단지 몇 줄의 web.py 스크립트 일 수 있습니다. 서블릿이 요청에 응답 할 때까지는 모든 것이 올라와야하므로 해당 URL에 대한 지수 적 백 오프로 인스턴스를 확인할 수 있습니다.

    로드 균형 조정기 (자체 이점이 있음) 뒤에 인스턴스를 배치 한 경우이 상태 서블릿은 필수적으로 필요하며 어떤 이유로 든 인스턴스가 다운되었을 때로드 균형 조정기에 알리는 추가 이점이 있습니다. EC2에 관한 일반적인 모범 사례 일뿐입니다.

    관련 문제