Pagina inicial » como » Como fazer backup de VMs do Citrix Xen gratuitamente com o Xen-Pocalypse (Bash)

    Como fazer backup de VMs do Citrix Xen gratuitamente com o Xen-Pocalypse (Bash)

    Você já precisou fazer backup de suas Máquinas Virtuais (VMs) Citrix Xen, mas não quis quebrar o banco fazendo isso? HTG tem apenas o script bash para você com Xen-pocalypse.

    Imagem por h.koppdelaney, Stuck in Custom e Hotfortech.

    Uma das coisas boas no Citrix Xen é que muitas de suas características são livre de cobrança. Com isso dito, se você quiser o recurso “Proteção e recuperação automatizada de VMs”, terá que começar a pagar pela licença “Advance”. Mesmo assim, você está pagando apenas pelos backups em nível de disco, que não são suficientes para muitos tipos de cargas de trabalho, como Active directory, Databases & Etc. Para superar isso, você pode querer o “Live memory snapshot e revert”, que pode salvar estado da máquina, incluindo o conteúdo da RAM. No entanto, esse recurso faz parte das edições "Enterprise" e "Platinum", que são ainda mais caras. Não estamos descartando o valor de um verdadeiro software de backup, mas se você estiver com um orçamento apertado e não se incomodar com o tempo de inatividade para a operação de backup, talvez o Xen-Pocalypse seja uma solução perfeitamente razoável. antes de você fazer o compromisso de orçamento.

    visão global

    O “caso de uso”: você tem algumas VMs que exigem um backup. O “desligar uma VM e exportá-la como um arquivo” do “Xen Center” usando os cliques da direita funciona bem, mas você quer que esse processo aconteça automaticamente e em um cronograma. Este script Bash usa o comando "XE" para executar suas tarefas. O XE é a interface de linha de comando (CLI) do Xen, equivalente automática para a emissão dos “cliques certos” no “Xen Center”. Nós estaremos chamando o script de Cron, que irá fornecer a parte "agendamento". Em sua forma mais simples, o fluxo de backup é:

    • Desligue a VM de destino.
    • Exportar a VM como um arquivo para o local de backup.
    • Se a VM foi ativada, antes do backup ser iniciado, ela será ativada novamente.

    Vamos começar a quebrar :)

    Obtenha o script

    O Xen-pocalypse pode ser livremente obtido do github, usando os métodos regulares do git. Com isto dito, se você ainda não conhece o git, você pode pegar o arquivo zip com este link. Como o script precisa ser executado em um de seus servidores Xen, você deve extraí-lo para que as permissões de execução sejam preservadas.

    wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
    descompacte o mestre

    Embora o acima funcione, é aconselhável usar o método GIT, para que você possa se beneficiar de futuras atualizações.

    Obter o SendEmail (opcional)

    Nós escrevemos sobre o programa perl SendEmail no passado, então não há necessidade de reiterar aqui. Basta dizer que funciona da mesma maneira no Linux como no Windows.

    Embora a ativação do email seja opcional, é altamente recomendável, pois o script poderá:

    • Informe-o quando começou e terminou a corrida.
    • Alertá-lo de quaisquer erros que ele foi capaz de detectar e manipular.
    • Informar sobre desqualificações de backup devido a problemas de espaço. (Esse comportamento pode ser desabilitado se não desejado)

    Faça o download para o servidor Xen e extraia.

    wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
    tar xvzhf sendEmail-v1.56.tar.gz

    Observe o local onde você o extraiu. Você precisará disso para o arquivo de configurações.

    Definindo Tags

    O Citrix Xen oferece a capacidade de configurar “Campos personalizados” para recursos de filtragem. Vamos criar os campos e depois preenchê-los com as informações usadas pelo Xen-Pocalypse. O Xen-Pocalypse reconhece 3 TAGs de controle que designam o nome da tag para backup e as relações pai para filho. Se você não pretende usar o método de entrada de arquivo, você DEVE criar pelo menos o campo de nome da marca de backup..

    Para fazer isso, abra as propriedades do servidor ou até mesmo de uma VM. No painel de navegação, selecione "Campos personalizados".

    Se esta é a primeira vez que você define um relacionamento (como no exemplo acima), você não terá campos para inserir dados, então você precisa criá-los. Para fazer isso, clique em “Edit Custom Fields” na caixa de diálogo que aparece, clique em “Add…”

    Crie três (3) campos do tipo "Texto". Um será chamado “BackupTAG” e os outros “Pai” e “Filhos”.

    Nota: Os nomes dos campos personalizados foram "codificados" no script, por isso você NÃO deve se desviar da grafia acima, a menos que você altere o código relevante também.

    Depois que todos os campos forem criados, você deverá ver:

    Feche a janela. Agora você deve ter os campos “BackupTAG”, “Pai” e “Filhos” para preencher, como na imagem abaixo.

    Agora tudo o que você precisa fazer é designar quais VMs pertencem ao que “BackupTAG”.
    Por exemplo, na empresa em que o script foi desenvolvido, tínhamos VMs que deveriam ser armazenadas semanalmente na quinta e sexta-feira, uma programação para nossas VMs de produto da Atlassian e algumas que deveriam ter backup apenas mensalmente. Então, nossa visão geral parecia:

    Onde, por exemplo, “semanalmente-sex” foi o texto que inserimos no “BackupTAG” “Custom Field”. Puro né? :)

    Pais e filhos (opcional)

    A verdadeira beleza desse script é que ele suporta relacionamentos “pais” e “filhos”. Ou seja, é possível definir uma lista de VMs "filhas" que seriam desativadas e submetidas a backup antes do pai, e que esses filhos só serão reativados quando o pai concluir seu backup e tiver sido devolvido. em. Isso é útil em casos em que desligar a VM pai fará com que o serviço no filho fique indisponível. Tal coisa significaria que o serviço na VM filha estaria indisponível duas vezes, uma para o processo de backup da criança e outra para o pai / mãe. Criar este relacionamento supera esse problema.

    Por exemplo, todas as nossas VMs Atlassian usaram uma única VM DataBase (DB), que também foi configurada para backup. Portanto, observando que a VM do DB é um “Pai” para as outras VMs, uma ordem adequada de desligamento -> backup -> inicialização, pode ser assegurada.

    No momento da redação deste artigo, esta função tem algumas ressalvas:

    1. Os nomes das VMs que devem ter esse relacionamento não podem conter espaços. Você terá que remover espaços de seus nomes de VM, pois eles serão delimitados por espaço, como no exemplo abaixo.
    2. Só pode haver um pai. Designar mais de um não é nem mesmo planejado, para não mencionar o teste.

    Para criar esse relacionamento, vá para as propriedades da VM. Se este é um “pai”, escreva quem são seus filhos e se é um “filho”, escreva quem é seu pai. Por exemplo:

    Nota: Não designar um Pai para um filho pode fazer com que o filho seja iniciado antes que seu pai esteja pronto e pode fazer com que seja feito o backup duas vezes.

    O método FILE (Opcional)

    Por razões históricas, o Xen-pocalypse também suporta a obtenção da lista de backups de VMs como um arquivo de texto. Enquanto o "código" ainda está lá, a funcionalidade é gravemente inferior ao método TAGs e, portanto, não é recomendado. Com isso dito, se você preferir usar o método list por algum motivo, as seguintes restrições se aplicam:

    1. Os nomes das VMs não podem conter espaços ou caracteres especiais.
    2. Pode haver apenas um nome de VM por linha.
    3. Linhas em branco não são permitidas.

    Para gerar a lista, copie o nome da VM no centro do Xen ou execute em um host Xen:

    xe vm-list | grep name-label | awk 'print $ 4' | ordenar

    Copie a lista acima em um arquivo de texto normal.

    O local do backup

    Enquanto aleatoriamente bisbilhotando no Citrix Xen, descobri que os Repositórios de Armazenamento (SRs) estão disponíveis para uso em “/ var / run / sr-mount /% UUID%” onde o UUID é o identificador exclusivo do SR, que pode ser obtido a partir da GUI.

    Isso significa que podemos usar o assistente regular "Próximo -> Próximo -> Concluir" para criar a montagem no local de backup desejado e fazer com que o script use esse caminho (como se estivesse atrapalhando a montagem na linha de comando), mas fazendo então está além do escopo deste guia.

    Para criar uma nova “montagem”, clique com o botão direito do mouse no nome do servidor e selecione Novo SR.

    Neste exemplo, vamos apontar o Xen para um compartilhamento do windows, então escolha “Windows File Sharing (CIFS)”:

    Complete o Próximo -> Próximo -> Concluir.

    Obter o UUID do SR

    Para obter um UUID do SR, basta clicar no seu nome no Xen Center e ir para o separador “General”.

    Para copiar o UUID, basta clicar com o botão direito e escolher "copiar".

    Com esta informação em mãos, você está pronto para editar o arquivo de configurações.

    Configurar o arquivo de configurações.

    O projeto Xen-Pocalypse vem com um modelo de arquivo de “configurações”. Este modelo deve ser editado para refletir sua configuração e passado como o primeiro argumento para o script. O arquivo de configurações designa o seguinte:

    O método para obter as VMs para backup - O método padrão é TAGs. Você pode mudar isso para FILE, mas isso não é recomendado.

    A localização do destino de backup - Se você seguiu o guia até este ponto, você só tem que substituir o% UUID% com o SR como foi obtido acima.

    A localização do SendEmail  - Se você optou por ativar o E-mail, você precisa inserir onde você extraiu o executável perl aqui.

    Detalhes do email - Novamente, se você tiver ativado o email, precisará definir detalhes como: Para, De, Nome do servidor / IP e etc..

    Compressão - Isso é definido como "Não" por padrão, porque, embora a ativação produza um arquivo de backup menor, ele também fará com que o procedimento de backup seja executado por um período consideravelmente mais longo.

    Verifique o espaço livre no destino - Isso fará com que o script verifique se o backup da VM não fará com que o espaço livre do local do backup fique abaixo de 10 GB. Isso é feito para garantir o backup da maior quantidade de VMs em vez de apenas uma VM muito grande. O cálculo é feito usando o total bruto do tamanho do disco de todos os HDs associados à VM.

    Depuração  - O padrão é ter a depuração desativada com o valor “0” (zero). Você não precisa ativar isso, mas se fizer isso, mais informações serão observadas no segmento de solução de problemas..

    Execução / Agendamento

    Em sua forma mais simples, uma invocação de Xen-pocalypse seria semelhante a:

    ./Xen-backup.sh settings.cfg semanal-sex

    Onde no caso acima, estamos dentro do diretório que contém o script e o arquivo de configurações. O "Tag" que o script irá procurar é "weekly-sex".

    Como mencionado acima, usaremos o Cron para agendar a execução. Antes de entrarmos na configuração, é altamente recomendado que você configure o pacote SSMTP já instalado no seu servidor Xen. Embora este seja um passo opcional, isso lhe dará um coletor de backwash. Ter um tal "coletor de backwash" pode alertá-lo de coisas que o script não é capaz de.

    Entre na edição do cron mais, emitindo:

    crontab -e

    Se você seguiu as instruções acima e deseja adicionar um backup agendado para sexta-feira às 18:01 (18:01), insira o seguinte:

    01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg semanal-sex

    O acima é correto supondo que o seu script e arquivo de configurações estão em “/ root / Xen-pocalypse-master /”.

    Solução de problemas

    Embora tenha me esforçado muito para tornar o script mais fácil de usar e o mais seguro possível, “o mundo é um laboratório maior”. As informações abaixo podem ajudá-lo a determinar qual é a origem de seus problemas.

    Progresso

    Você pode querer usar esse forro para rapidamente “observar” todas as tarefas em andamento, para ver se elas realmente estão progredindo ou se estão realmente presas..

    while [-e / dev / null]; faça para VM em "$ (xe lista de tarefas | grep uuid | awk 'print $ 5')"; do xe task-param-get param-name = progresso uuid = $ VM; sleep 1; feito; feito

    Para parar de assistir, use Ctrl + C para travar o "loop while".

    Exploração madeireira

    Todo o "registro" é coletado pelo host Xen executando o script no mecanismo syslog. Isso, claro, pode ser visto com:

    menos + F / var / log / messages

    Você está procurando a palavra chave “Xen-pocalypse”.

    Nota: A Citrix definiu uma política de retenção de dois (2) dias para o syslog de seus servidores. Você pode querer manter isso em mente para postmortems.

    Depuração

    Conforme observado no segmento do arquivo de configurações, há uma diretiva para ativar a depuração. A habilitação da depuração fará com que o script libere o registro de log detalhado no console e o impeça de enviar e-mails e realmente executar as exportações, a menos que os sinalizadores relevantes também sejam definidos. Os possíveis sinalizadores são observados no modelo de arquivo de configurações e permitem que você defina granularmente o que deseja depurar.

    É minha esperança que você não tenha precisado de nenhuma depuração e esteja colhendo os frutos do meu trabalho :)


    Impulso, meu homem, você está prestes a se tornar o número um decepticon ...