100===Dev Ops/OpenStack

OpenStack Nova (Compute) 서비스 깊이 파헤치기 😎

블로글러 2024. 12. 18. 23:55

오늘은 OpenStack의 핵심 컴포넌트인 Nova에 대해 자세히 알아보겠습니다!

Nova란? 🤔

Nova는 OpenStack의 심장과도 같은 컴포넌트입니다!

  • 가상머신(VM)의 전체 라이프사이클 관리
  • 컴퓨팅 자원의 효율적 할당과 스케줄링
  • AWS EC2와 유사한 기능을 제공

Nova의 핵심 구성요소 🎯

1. API 서버 (nova-api)

- REST API 엔드포인트 제공
- 사용자 요청 검증 및 라우팅
- EC2 API 호환성 지원

2. Compute 서버 (nova-compute)

- 실제 VM 생성/삭제/관리 담당
- 하이퍼바이저와 직접 통신
- libvirt, VMware, Hyper-V 등 지원

3. Conductor (nova-conductor)

- DB 작업 조정
- 컴퓨트 노드와 데이터베이스 사이의 중개자
- 복잡한 작업의 오케스트레이션

4. Scheduler (nova-scheduler)

- VM 배치 결정
- 리소스 사용량 기반 최적화
- 필터링과 가중치 알고리즘 사용

Nova의 동작 방식 💫

1. VM 생성 프로세스

1. API 요청 수신 (nova-api)
2. 메시지 큐에 작업 등록
3. 스케줄러가 최적의 컴퓨트 노드 선택
4. 컴퓨트 노드에서 VM 생성
5. 네트워크/스토리지 연결

2. 설정 예시

[DEFAULT]
# 기본 하이퍼바이저 설정
compute_driver = libvirt.LibvirtDriver
virt_type = kvm

# 리소스 할당 비율
cpu_allocation_ratio = 16.0
ram_allocation_ratio = 1.5

# 네트워크 설정
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron

Nova의 고급 기능 🌟

  1. Instance 관리

    • 실시간 마이그레이션
    • 스냅샷 생성/복구
    • 리사이징 및 리빌드
  2. 리소스 최적화

    • CPU 핀닝
    • NUMA 토폴로지 인식
    • GPU 패스스루
  3. 고가용성

    • 장애 감지 및 복구
    • 자동 VM 재시작
    • 호스트 유지보수 모드

모니터링 및 트러블슈팅 ⚠️

1. 주요 모니터링 포인트

- CPU/메모리 사용률
- 디스크 I/O
- 네트워크 대역폭
- VM 상태 및 성능

2. 로그 분석

# Nova API 로그
$ tail -f /var/log/nova/nova-api.log

# Compute 로그
$ tail -f /var/log/nova/nova-compute.log

실전 활용 예시 📱

1. VM 템플릿 관리

# 인스턴스 생성
nova_client.servers.create(
    name="web-server",
    image="ubuntu-20.04",
    flavor="m1.large",
    nics=[{"net-id": network_id}]
)

2. 자동 스케일링

# 부하에 따른 자동 확장
def auto_scale(cpu_threshold):
    if get_cpu_usage() > cpu_threshold:
        create_new_instance()

마치며 🎁

Nova는 OpenStack의 핵심 중의 핵심입니다. 복잡해 보이지만, 이해하고 나면 강력한 클라우드 컴퓨팅 환경을 구축할 수 있습니다!


References:

728x90