Transferência de arquivos do Puppet lenta

7

Eu tenho um mestre de marionetes e escravos em diferentes datacenters. A latência entre eles é ~ 40ms. Quando eu executo "agente de marionetes - teste" em um escravo para aplicar o manifesto mais recente, demora ~ 360 segundos para terminar.

Depois de fazer algumas pesquisas, posso ver que a principal causa da lentidão é a transferência de arquivos. Parece que demora ~ 10 segundos para transferir cada arquivo. Os arquivos são apenas pequenos (arquivos de configuração), então não consigo entender por que eles demoram tanto.

Este é um exemplo de um arquivo no meu manifesto:

file { "/etc/rsyncd.conf" :
    owner       => "root",
    group       => "root",
    mode        => 644,
    source  => "puppet:///files/rsyncd/rsyncd.conf"
}

Executando o criador de perfil de marionetes, vejo isso:

10.21s - File[/etc/rsyncd.conf]

Também parece que não consigo atualizar mais de um servidor ao mesmo tempo usando o fantoche. Se eu executar dois servidores ao mesmo tempo, então o fantoche leva o dobro do tempo.

Eu mudei o mestre de marionetes de usar webrick para mestiço, mas isso não parece ajudar. Isso está tornando a implementação de mudanças dolorosas. Uma simples alteração de configuração pode levar uma hora para ser distribuída para todos os servidores.

    
por Noodles 13.06.2012 / 04:42

4 respostas

0

Eu encontrei o problema. Parece que embora eu configure meu Apache para executar o puppetmaster através do passageiro, o arquivo de configuração nunca foi incluído no meu httpd.conf. Meu puppetmaster ainda estava executando as configurações padrão. (netstat-anp | grep 8140 mostrou que o apache não estava usando essa porta).

Depois de consertar esses problemas e ter certeza de que o Apache estava ouvindo em 8140, meus clientes de marionetes agora demoram 8 segundos para serem executados, abaixo dos 380 segundos.

    
por 19.07.2012 / 05:04
8

Aviso: Eu sou um dos desenvolvedores do Puppet.

Quando você gera arquivos com puppet:// URLs, o Puppet faz duas conexões SSL de volta ao servidor de arquivos - uma para os metadados, incluindo a soma de verificação, e outra para o conteúdo. O segundo é feito, esperançosamente como esperado, somente se o conteúdo do disco estiver desatualizado.

A própria transferência é HTTPS padrão, com nada sofisticado acontecendo, além da sobrecarga SSL e do custo de latência de duas conexões, não há motivo para que o Puppet seja tão lento.

O Puppet também verifica o arquivo em ambos os lados, o cliente e o servidor, quando se trata de verificar se está atualizado. Isso pode ser lento se o seu backing store for lento também.

Por fim, você deve verificar se o link da sua rede está lento porque está saturado ou algo assim. Não seria a primeira vez que grandes buffers levariam a uma péssima performance na rede - e alguém colocaria um modelador de tráfego no meio que fazia pings super rápidos. ;)

Além disso, sugiro que você envie um relatório de bug . Incluir os detalhes e os rastreamentos de rede seria uma grande ajuda para podermos resolver isso.

O que você descreve certamente não é normal, e não é o que esperaríamos ver em pequenos arquivos de configuração em uma rede razoavelmente rápida, como você descreve. (Além disso, não é o que os outros vêem, então claramente algo incomum está acontecendo em sua configuração.)

    
por 13.06.2012 / 04:48
3

Na minha experiência, as versões mais antigas do fantoche serializavam e DE serializavam todos os dados do FILE conforme eram transferidos. E foi particularmente ruim e transferir binários grandes (muitos megabytes).

O Sr. Pittman sugere acima que isso pode não ser mais o caso, mas você pode querer aprofundar e ver se a versão do fantoche que você está usando tem essa otimização.

Parece que a mudança foi para o fantoche 0.25 - veja o bug 583 ( link ) quando eles converteram de xlrpc para descanso.

Minha solução na época era usar o fantoche para pressionar as chaves pré-compartilhadas do rsync e usar um daemon do rsync para servir arquivos (somente leitura) para os clientes finais. O Rsync pode ser bastante eficiente e transferir e atualizar muitos dados binários.

Portanto, verifique suas versões de fantoches, mas veja também se o rsync pode funcionar como uma comparação de desempenho.

    
por 13.06.2012 / 06:14
0

Verifique o comentário que deixei no link sobre ter mais arquivos no diretório de destino.

Saludos!

    
por 26.04.2013 / 21:09