euca-run-instances 명령어의 옵션중 -z 을 이용하면 되는데 몇가지 준비사항이 필요합니다.^^
아래의 예) 에서 nova:fujitsu-1 는 존이름:호스트이름 입니다.
예) euca-run-instances -k nipa_test -z nova:fujitsu-01 -t m1.tiny ami-00000006
1. nova-scheduler가 동작하고 있는 호스트의 nova.conf에 아래와 같이 추가합니다.
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
2. cactus에서는 잘 되었던것으로 기억하는데 동작하지 않아 소스를 살펴보니 diablo버그인것 같습니다.
nova/nova/api/ec2/cloud.py의 run_instances 메소드에서 아래의 부분을 수정합니다.
수정전:
availability_zone=kwargs.get('placement', {}).get('AvailabilityZone'),
수정후:
availability_zone=kwargs.get('placement',{}).get('availability_zone'),
nova-api, nova-scheduler를 재시작 한후 euca명령어를 이용 위의 예시처럼 테스트 해보시면 됩니다.
아! 참고로 위의 버그는 회사 동료인 wizksy님께서 알려주셨으며 테스트 환경은 nova diablo release입니다.
이 방법 외에서 특정 호스트 들을 disable 시켜서 enable 되어 있는 호스트에만 인스턴스를 생성할 수 있는 방법이 있는데요. 제가 자주 사용하는 방법입니다.
$ nova-manage service list | grep nova-compute
로 현재 컴퓨트 노드들을 확인 한 후,
$ nova-manage service disable <호스트네임> nova-compute
로 특정 컴퓨트 노드를 disable 시킵니다.
다음의 방법을 통해서 사용하지 않는 컴퓨트 노드들은 제외시킬 수 있습니다. ^^














때마침 특정 node에서 instance를 실행하기를 원했었는데 잘 동작하네요. 좋은 정보 감사합니다. :)