2010-11-24 9 views
1

Amazon EC2 위에 분산 시스템을 구축 할 계획입니다.Amazon EC2의 분산 시스템

각 컴퓨터의 네트워크 IP 주소 (예 : 192.xxx.x.x)를 얻으려면 어떻게해야합니까?

이렇게하면 새 노드가 시스템에 들어가면 다른 노드가 통신 할 수있는 IP 주소 목록을 제공합니다.

감사합니다.

+0

이렇게 할 수있는 프로그램을 작성할 수는 있지만 이미 존재하는 도구를 찾을 수 있습니다. 나는 http://serverfault.com/에 묻는 것을 시도 할 것입니다 – sje397

답변

0

"노드가 시스템에 들어가면"나는 그것이 어떤 포트에 연결된다고 가정합니다. 그리고 그것은 바로 IP를 얻는 곳입니다. 예 : Java :

Socket socket = serverSocket.accept(); 
InetAddress addr = socket.getInetAddress() 
System.out.println("new host with IP " + addr.getHostAddress() + " entered the system"); 

또는 시스템의 FQDN을 확인할 수 있습니다.

# bash 
nslookup `hostname --fqdn` 

# groovy 
groovy -e 'println java.net.InetAddress.getLocalHost().getHostAddress()' 

FQDN은 호스트 구성에 따라 다르지만 127.0.0.1로 해결 될 수 있습니다. 이는별로 도움이되지 않습니다.

EC2에 특정의 세 번째 옵션은 또한 AWS SDK 또는 EC2 CLI 사용할 수 있습니다으로 : 해결 된 경우는 EC2 내에서 개인 IP와 해결 공공 DNS 이름의 목록을 반환

# using CLI 
ec2-describe-instances | grep INSTANCE | cut -f4 

을 (출력을 각각 EC2 인스턴스 또는 EC2 외부의 xargs -n1 nslookup으로 파이핑하십시오. 관심있는 특수 AMI에서 시작된 인스턴스 만 표시하도록 목록을 필터링 할 수 있습니다.

1

노드를 구성하려면 chef 또는 puppet과 같은 프레임 워크를 사용하십시오. 이렇게하면 시작할 때 인스턴스를 부트 스트랩 할 수 있습니다.

Amazon EC2에서 작동하는 방식은 각 인스턴스에 user-data을 전달할 수 있다는 것입니다. 일반적으로 명령을 실행하는 일종의 스크립트입니다. 부트 스트래핑 용.

자신이 장애물의 너무 많은이를 실행하는, 내가 같은 서비스 권하고 싶습니다 경우 (도 opensource)

HTH

관련 문제