16.6. 인스턴스 마이그레이션
OpenStack 및 기본 가상화 계층에서는 OpenStack 노드 간 이미지를 실시간 마이그레이션하여 인스턴스 가동 중단 없이 컴퓨팅 노드의 롤링 업그레이드를 원활하게 수행할 수 있습니다. 그러나 실시간 마이그레이션에도 상당한 위험 요소가 있습니다. 관련 위험을 이해하기 위해 실시간 마이그레이션 중에 수행되는 상위 수준 단계는 다음과 같습니다.
- 대상 호스트에서 인스턴스 시작
- 전송 메모리
- 게스트를 중지하고 디스크 동기화
- 상태 전송
- 게스트 시작
콜드 마이그레이션, 크기 조정 및 보류와 같은 특정 작업은 모두 일정량의 인스턴스 데이터를 네트워크 전반에서 다른 서비스로 전송할 수 있습니다.
16.6.1. 실시간 마이그레이션 위험 링크 복사링크가 클립보드에 복사되었습니다!
실시간 마이그레이션 프로세스의 다양한 단계에서 인스턴스 런타임 메모리 및 디스크의 콘텐츠가 네트워크를 통해 일반 텍스트로 전송됩니다. 따라서 실시간 마이그레이션을 사용할 때 해결해야 하는 여러 위험이 있습니다. 다음 완전하지 않은 목록은 이러한 위험 중 일부를 자세히 설명합니다.
- 서비스 거부 (DoS): 마이그레이션 프로세스 중에 오류가 발생하면 인스턴스가 손실될 수 있습니다.
- 데이터 노출: 메모리 또는 디스크 전송을 안전하게 처리해야 합니다.
- 데이터 조작: 메모리 또는 디스크 전송이 안전하게 처리되지 않으면 공격자가 마이그레이션 중에 사용자 데이터를 조작할 수 있습니다.
- 코드 주입: 메모리 또는 디스크 전송이 안전하게 처리되지 않으면 공격자는 디스크 또는 메모리에서 실행 파일을 조작할 수 있습니다.
16.6.2. 실시간 마이그레이션 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
현재 OpenStack에서 실시간 마이그레이션은 기본적으로 활성화되어 있습니다. 실시간 마이그레이션은 기본적으로 관리자 전용 작업이므로 사용자는 이 작업을 시작할 수 없으며 관리자만(신뢰할 수 있음) 관리자만 시작할 수 없습니다. nova policy.json 파일에 다음 행을 추가하여 실시간 마이그레이션을 비활성화할 수 있습니다.
"compute_extension:admin_actions:migrate": "!",
"compute_extension:admin_actions:migrateLive": "!",
또는 TCP 포트 49152~49261 을 차단할 때 실시간 마이그레이션이 실패 하거나 nova 사용자가 계산 호스트 간에 암호 없는 SSH 액세스 권한이 없는지 확인할 수 있습니다.
실시간 마이그레이션을 위한 SSH 구성이 상당히 잠겨 있습니다. 새 사용자(nova_migration)가 생성되고 SSH 키는 해당 사용자로 제한되며 허용되는 네트워크에서만 사용할 수 있습니다. 그런 다음 래퍼 스크립트는 실행할 수 있는 명령을 제한합니다(예: libvirt 소켓의 netcat).
16.6.3. 암호화된 실시간 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
실시간 마이그레이션 트래픽은 실행 중인 인스턴스의 디스크 및 메모리를 일반 텍스트로 전송하며 현재 기본적으로 내부 API 네트워크에 호스팅됩니다.
실시간 마이그레이션을 계속 활성화하기 위한 충분한 요구 사항(예: 업그레이드)이 있는 경우 libvirtd는 실시간 마이그레이션에 대해 암호화된 터널을 제공할 수 있습니다. 그러나 이 기능은 OpenStack 대시보드 또는 nova-client 명령에 노출되지 않으며 libvirtd의 수동 구성을 통해서만 액세스할 수 있습니다. 그러면 실시간 마이그레이션 프로세스가 다음과 같은 상위 수준 단계로 변경됩니다.
- 인스턴스 데이터는 하이퍼바이저에서 libvirtd로 복사됩니다.
- 암호화된 터널은 소스 및 대상 호스트의 libvirtd 프로세스 간에 생성됩니다.
- 대상 libvirtd 호스트는 인스턴스를 기본 하이퍼바이저에 다시 복사합니다.
Red Hat OpenStack Platform 13의 경우 권장되는 방법은 터널링된 마이그레이션을 사용하는 것입니다. 이 마이그레이션은 기본적으로 Ceph를 백엔드로 사용할 때 활성화됩니다. 자세한 내용은 https://docs.openstack.org/nova/queens/configuration/config.html#libvirt.live_migration_tunnelled 의 내용을 참조하십시오.