Citrix-Xen VM을 Xen-Phoenix (Bash)로 무료로 복원하는 방법
Disaster Recovery (DR) 솔루션을 위해 Citrix-Xen VM을 대량으로 복원하거나 백업이 작동하는지 테스트 해 본 적이 있습니까? HTG는 무료 bash 스크립트 인 Xen-Phoenix를 VM 복원에 사용하는 방법을 설명합니다..
사진 크레디트 : Companight cc를 통해 Ryan McCurdy
Citrix Xen의 장점 중 하나 인 "Xen-pocalypse로 Citrix Xen VM을 무료로 백업하는 방법"에서 언급 한 것처럼 많은 기능이 비어 있는 요금. 즉, "자동화 된 VM 보호 및 복구"기능을 원한다면 "고급"라이센스 비용을 지불해야합니다. 다시 말하지만, HTG에서 진정한 백업 솔루션의 가치를 일러주는 것은 아니지만 예산이 부족한 경우 이미 VM 이미지를 하이퍼 바이저에서 가져 와서 " 테스트 복원 "/"DR 새로 고침 "절차를 사용하면 Xen-Phoenix가 예산 약정을하기 전에 완벽하게 합리적인 솔루션이 될 수 있습니다.
개요
"유스 케이스": 복원이 필요한 몇 개의 VM이 있습니다. 마우스 오른쪽 버튼을 사용하여 "Xen Center"에서 가져 오는 것은 정상적으로 작동하지만이 프로세스가 자동으로 일정대로 수행되기를 원합니다. 이 Bash 스크립트는 "XE"명령을 사용하여 임무를 수행합니다. XE는 "Xen Center"에서 "마우스 오른쪽 버튼 클릭"을 자동으로 실행하는 Xen 명령 줄 인터페이스 (CLI)입니다. 우리는 "일정"부분을 제공 할 Cron의 스크립트를 호출 할 것입니다. 가장 간단한 형태로, 복원 흐름은 다음과 같습니다.
- 지우다 서버의 기존 * 모든 VM
- 백업 위치의 파일에서 VM 가져 오기.
- 모든 VM을 하나씩 활성화하고 게스트 도구 하트 비트를 찾고 모든 VM이 작동하는지 확인합니다..
- 하트 비트가 발견되거나 시간 제한에 도달하면 VM을 끄십시오..
* 모든 VM 삭제 동작을 완전히 비활성화하고 예외를 지원할 수 있습니다 (아래 참조)..
하자 균열 :)
스크립트를 얻습니다.
Xen-phoenix는 정규 git 메소드를 사용하여 github에서 자유롭게 얻을 수 있습니다. 그 말로는 아직 git에 정통하지 않으면이 링크로 zip 파일을 가져올 수 있습니다. 스크립트가 Xen 서버 중 하나에서 실행되어야하므로 실행 권한이 보존되도록 스크립트를 압축 해제해야합니다.
wget https://github.com/aviadra/Xen-phoenix/archive/master.zip
마스터 압축 풀기
위의 방법이 효과가 있지만 GIT 방법을 사용하여 향후 업데이트 혜택을 누릴 수 있습니다..
내보내기 위치
VM 내보내기를 가져올 위치를 구성해야합니다..
Citrix Xen에서 임의로 파고 들기는했지만 "/ var / run / sr-mount / % UUID %"에서 SR (Storage Repositories)을 사용할 수 있음을 발견했습니다. 여기서 UUID는 SR의 고유 식별자이며 GUI에서 얻은.
즉, 다음 "다음 -> 다음 -> 마침"마법사를 사용하여 원하는 백업 위치에 "마운트"를 생성 한 다음 스크립트에서 해당 경로를 사용할 수 있음을 의미합니다 (명령 줄에서 마운트를 망칠 수 있습니다). 이 가이드의 범위를 벗어남).
새 "마운트"를 만들려면 서버 이름을 마우스 오른쪽 단추로 클릭하고 새 SR을 선택합니다..
이 예에서는 Windows 공유에 Xen을 지정할 것이므로 "Windows 파일 공유 (CIFS)"를 선택하십시오.
다음 -> 다음 -> 완료를 완료하십시오..
SR의 UUID 얻기
SR의 UUID를 얻으려면 Xen Center에서 해당 이름을 클릭하고 "일반"탭으로 이동하십시오..
UUID를 복사하려면 마우스 오른쪽 버튼을 클릭하고 "복사"를 선택하십시오..
이 정보를 가지고 설정 파일을 편집 할 준비가되었습니다..
설정 파일 구성
Xen-phoenix 프로젝트에는 "설정"파일 템플리트가 번들로 제공됩니다. 이 템플릿은 설정을 반영하도록 편집되어야하며 스크립트에 첫 번째 인수로 전달되어야합니다.
설정 파일은 다음을 지정합니다.
- 원본 내보내기 위치 -이 시점의 가이드를 수행 한 경우 위에서 얻은대로 % UUID %를 SR로 바꾸기 만하면됩니다.
- SendEmail의 위치 - 이메일 사용을 선택한 경우 여기에서 실행 파일을 추출한 위치를 입력해야합니다.
- Verifier - 게시물 복원 확인 절차를 제어합니다. 성공한 "파일 수준 복원"은 기능적으로 VM을 의미하지는 않기 때문에 기본적으로 활성화됩니다.
- Server_prep - 사전 복원을 제어합니다. 삭제 DR 서버에있는 모든 VM의 이는 DR 서버가이 목적을위한 전용 서버라고 가정하기 때문에 기본적으로 활성화됩니다. 이 서버에서 실행중인 VM을 삭제하지 않으려면 제외되도록 구성하십시오. 이 동작이 자신의 상황에 맞지 않으면 완전히 비활성화하십시오..
- 이메일 세부 정보 - 다시 말하지만 이메일을 사용하도록 설정 한 경우 다음과 같은 세부 정보를 정의해야합니다.받는 사람, 보낸 사람, 서버 이름 / IP 및 기타 '.
- 디버깅 - 기본값은 "0"값으로 디버깅을 해제하는 것입니다.이 기능을 사용하지 않아도되지만 그래야만 문제 해결 부분에 자세한 정보가 표시됩니다..
실행
이 스크립트는 설정 파일을 첫 번째 인수로 사용하고 다른 인수는 "Chevron"으로 검색합니다 (공백으로 구분). Chevrons는 VM 내보내기의 원하는 파일 이름의 일부를 나타내는 정규 표현식을 지원하는 "문자열"입니다..
즉, 가장 단순한 형태의 Xen-phoenix 호출은 다음과 같습니다.
./Xen-phoenix.sh settings.cfg DevTools
위의 경우 스크립트와 설정 파일이있는 디렉토리 안에 있으며 스크립트에서 찾을 "Chevron"은 "DevTools"입니다. 이렇게하면 이름에 "DevTools"라는 문자열이있는 내보내기 디렉토리의 모든 파일이 가져 오게됩니다.
보다 복잡한 예제는 다음과 같습니다.
./Xen-phoenix.sh settings.cfg [Aa] [Dd] [Bb] [iI] [Dd] ev [Tt] ools
위의 예에서 "devtools"라는 단어가 포함 된 파일은 대문자 "D"와 "T"또는 대문자가 아닌 "AD"& "BI"는 물론 대문자로 표기됩니다..
스케줄링
위에서 언급했듯이 우리는 Cron을 사용하여 실행을 예약합니다. 구성을 시작하기 전에 추천 Xen 서버에 이미 설치된 SSMTP 패키지를 구성합니다. 이것은 선택적 단계이지만 그렇게하면 "역 세척 (backwash)"컬렉터가됩니다. 그런 "역류 수집가"가 있으면 스크립트가 할 수없는 일에 대해 경고 할 수 있습니다..
다음 명령을 입력하여 cron의 편집 모드로 들어갑니다.
crontab -e
위 지침을 따른 후 일요일 01:31 (1:31 AM)에 예약 된 백업을 추가하려면 다음을 입력하십시오.
31 01 * * sun /root/Xen-phoenix-master/Xen-phoenix.sh/root/Xen-phoenix-master/settings.cfg [Aa] [Dd] DB [Bb] [iD] ev [Tt ] ools
위의 내용은 스크립트 및 설정 파일이 모두 "/ root / Xen-phoenix-master /"아래에 있다고 가정합니다..
SendEmail 받기 (선택 사항)
과거에는 SendEmail perl 프로그램에 대해 작성 했으므로 여기서 다시 언급 할 필요가 없습니다. 리눅스에서 Windows에서와 같은 방식으로 작동합니다..
이메일 사용은 선택 사항이지만 스크립트는 다음 작업을 수행 할 수 있으므로 적극 권장합니다.
- 시작 및 실행 완료 알림.
- 감지하고 처리 할 수있는 오류를 경고합니다..
Xen 서버로 다운로드하여 압축을 풉니 다..
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
추출한 위치를 기록하십시오. 설정 파일에 필요합니다..
"예외 삭제"태그 정의 (선택 사항)
Xen-Phoenix는 조상 (Xen-Pocalypse)에서 페이지를 가져 와서 제어 TAG를 사용하여 VM 전체를 시스템 전체 삭제에서 세부적으로 제외 할 수있는 기능을 제공합니다. 이렇게하려면 새 "사용자 정의 필드"를 정의해야합니다..
이렇게하려면 서버 또는 VM의 속성을 엽니 다. 탐색 창에서 "사용자 정의 필드"를 선택하십시오..
위의 예 에서처럼 "사용자 정의 필드"를 처음으로 정의하는 경우 데이터를 입력 할 "Phoenix_keeper"필드가 없으므로이를 작성해야합니다. 이렇게하려면 나타나는 대화 상자에서 "Edit Custom Fields"를 클릭 한 다음 "Add ..."를 클릭하십시오.
이름이 "Phoenix_keeper"인 "Text"유형 필드를 작성하십시오..
노트 : 사용자 정의 필드의 이름은 스크립트에 "하드 코딩"되어 있으므로 관련 코드를 변경하지 않으면 위의 철자를 벗어나지 않아야합니다 (MUST).
필드가 만들어지면 다음과 같이 표시됩니다.
창을 닫습니다. 아래 그림과 같이 "Phoenix_keeper"필드를 채워야합니다..
이제이 필드에 주석을 입력하면 (임의의 주석이 수행합니다), Xen-phoenix가 삭제할 때 주석을 건너 뜁니다..
문제 해결
스크립트를 사용하기 쉽고 가능한 한 절대적으로 만들려고 많은 노력을 기울 였지만 "세상은 더 큰 실험실"입니다. 아래 정보는 문제의 원인을 확인하는 데 도움이 될 수 있습니다..
벌채 반출
모든 "로깅"은 syslog 메커니즘에서 스크립트를 실행하는 Xen 호스트에서 수집됩니다. 이것은 물론 다음과 같이 볼 수 있습니다.
less + F / var / log / messages
핵심 단어 "Xen-Phoenix"를 찾고 있습니다..
참고 : Citrix는 서버의 syslog에 대해 2 일의 보존 정책을 설정했습니다. 사후에 대한 염두에두고 싶을 수도 있습니다..
디버깅
설정 파일 세그먼트에서 언급했듯이 디버깅을 활성화하는 지시문이 있습니다. 디버깅을 사용하면 스크립트에서 자세한 로깅을 콘솔에 출력하고 관련 플래그가 설정되어 있지 않으면 전자 메일을 보내지 않고 실제로 가져 오기를 수행합니다. 가능한 플래그는 설정 파일 템플리트에 표시되며 디버깅 할 내용을 세부적으로 정의 할 수 있습니다.
당신이 디버깅을 필요로하지 않고 내 노동의 결실을 거두고 있다는 것은 내 희망이다. :)
단지 모든 가난과 증오와 거짓에 대해 생각해보십시오. 그리고 당신이 경멸하는 모든 것의 파괴를 상상해보십시오. 천천히 유골에서 피닉스가 발생할 것입니다 ...