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