Qual é a melhor prática para manter um servidor linux ubuntu atualizado (construir pacotes, dist-upgrade, alt repos…)

8

Estamos executando um servidor de produção baseado no Ubuntu 9.10 Karmic Koala , o kernel está quase atualizado (2.6. 38.2-grsec-xxxx-grs-ipv6-64) mas o repositório de pacotes kármicos está agora ridiculamente desatualizado, por exemplo. Nginx é 0.7.62 - realmente buggy - enquanto o último estável é 1.0.x !!

Além disso, o Karmic acabou de chegar ao fim da vida.

Esta pergunta: Práticas recomendadas para manter os pacotes do UNIX até data? parece semelhante, mas na verdade inclui apenas algumas sugestões sobre gerenciadores de pacotes; não é nada do que eu preciso!

então as opções que eu vejo são:

  1. obtenha uma nova máquina, instale-a do zero, migre
  2. upgrade de distribuição
  3. use um repositório diferente ( launchpad / ppa / backport / fixar )
  4. crie seu próprio

As desvantagens de 1. são bastante óbvias.

No entanto, não ouso fazer um caminho de atualização dist, pois o tempo de inatividade e possíveis conseqüências catastróficas são impossíveis de prever para um servidor de produção e, atualmente, estão principalmente reconstruindo meus próprios pacotes necessários. Mas tenho certeza que talvez esteja sentindo falta de alguns.

Não está claro para mim quais são os riscos (estabilidade / compatibilidade) do uso de backports do ubuntu, além disso, nada é oficialmente fornecido para o 9.10 mais. O Launchpad é individual-builds, pergunta semelhante - quão melhor é isso do que compilar o seu próprio.

Criar pacotes parece bem, mas:  1. às vezes tenho dificuldade em reproduzir as opções corretas ./configure para reutilizar meus arquivos de configuração existentes  1. Tenho certeza de que existem muitos pacotes e dependências que agora estão bem desatualizados e são possíveis fontes de bugs

Finalmente ... e os pacotes 'antigos' em uma distribuição recente? Eu acho que não há outra maneira de reconstruí-los eu mesmo? É uma combinação de 2. e 4. finalmente, o melhor caminho?

Existe algum consenso objetivo sobre qual é a melhor maneira de fazer isso, ou razões pelas quais algumas das minhas opções estão bem / não estão bem?

Se realmente não houver, aceitarei que a pergunta seja encerrada antes de criar um tópico sem fim!

    
por Stefano 25.05.2011 / 14:49

3 respostas

4

Manter sua própria distribuição é muito trabalho. Mesmo se você mantiver os backports, em breve você será sobrecarregado por problemas de segurança para consertar e terá que baixar bibliotecas de baixo nível para continuar atualizando seu software, o que pode quebrar outras coisas (eu mantenho servidores executando distros de 6 anos de idade) não é divertido).

A atualização é geralmente uma boa solução. do-release-upgrade é bem feito, e você deve poder atualizar sem problemas (especialmente se você usou somente pacotes oficiais).

Minha solução favorita, porém, pode ser o caminho de reinstalação. Mais especificamente, seus servidores devem ser gerenciados usando um sistema de gerenciamento de configuração, como o Puppet, o Cfengine ou o Chef. Se todas as suas necessidades de configuração / pacote forem especificadas usando essa ferramenta e seus dados estiverem seguros em uma partição separada, é muito mais fácil reinstalá-la rapidamente. Você acabou de instalar uma nova distribuição sem apagar as partições de dados e, em seguida, executar a ferramenta de gerenciamento de configuração para redefinir seus pacotes / configurações. Eu acredito que esta é a maneira mais limpa de fazer, especialmente se você tiver vários servidores para gerenciar.

Se você estiver usando pacotes não oficiais, convém identificá-los antes de atualizar / reinstalar. verificação de manutenção pode ajudá-lo a identificar os pacotes que não são oficialmente mantidos pelo Ubuntu:

$ bzr branch lp:ubuntu-maintenance-check
$ cd ubuntu-maintenance-check
$ ./maintenance-check -f n

Se você quiser reinstalar, também poderá exportar a lista de pacotes instalados:

$ dpkg --get-selections > myinstall.txt

e seu banco de dados debconf:

$ debconf-get-selections > debconf.txt # from the debconf-utils package

Como nota, uma vez que você está atualmente usando o Karmic, pode não ser muito violento atualizar para o Lucid, que é uma versão LTS, ainda suportada até 2015 para os pacotes principais do servidor. Isso deve lhe dar tempo suficiente para configurar uma instalação automatizada viável para o futuro.

Quando você pergunta sobre os pacotes do Launchpad, eu suponho que você esteja falando de PPAs. Existem toneladas de diferentes PPAs. Alguns são experimentais, alguns são estáveis. Alguns são mantidos por desenvolvedores oficiais do Ubuntu, alguns são mantidos por pessoas que mal sabem como fazer um pacote corretamente. É difícil dizer, em geral, se os pacotes que você encontra nos PPAs são bons, não há regra geral. A melhor dica, neste caso, pode ser também olhar para o proprietário dos PPAs para ter uma idéia da possível qualidade de seus pacotes.

    
por 25.05.2011 / 16:25
2

Se o servidor não for exposto ao mundo e você confia totalmente em seus usuários (geralmente, isso não é uma boa ideia), então, se estiver funcionando, você pode simplesmente deixá-lo em paz.

Se, de alguma forma, estiver exposto ao mundo externo e / ou você tiver a idéia de um usuário legítimo que esteja jogando com ele de maneira ilegítima, será absolutamente necessário que você corrija e corrija o software instalado.

Nesse caso, você tem duas opções:

  1. Execute uma distribuição suportada e obtenha atualizações para o seu software ou

  2. Backport todas as correções para sua distribuição sem suporte, o que, falando francamente, não parece viável.

Eu não sou usuário do Ubuntu, então não posso comentar sobre a integralidade dos patches que você obteria através da sua opção 3, mas se você tiver alguma dúvida, eu suponho que você não terá cobertura completa.

A melhor solução é migrar para uma versão LTS do Ubuntu, que lhe dará suporte para as versões de pacotes fornecidas por algum tempo. Com o tempo, alguns dos pacotes estarão desatualizados, mas o seu ambiente terá patches de segurança e será estável (sem colisões na versão do pacote). Pela minha experiência, a estabilidade de um ambiente de trabalho conhecido geralmente é mais valiosa do que os novos recursos.

Parece que a sua posição atual não é sustentável, e você precisa se mover. A única maneira segura é obter uma segunda máquina (ou uma máquina virtual) e testar as migrações até que você tenha um procedimento bem-sucedido e repetitivo. Em seguida, aplique-a à máquina de produção. Se você usar seus backups para fazer migrações de teste, terá uma boa oportunidade de testar seus procedimentos de backup também.

    
por 25.05.2011 / 15:30
2

O único caminho real é uma atualização de distribuição. Eu posso entender que você está nervoso com isso, já que agora você estará pulando vários lançamentos à frente (11.04 acaba de ser lançado).

Eu recomendaria fazer um clone das unidades nesta máquina e, em seguida, usar um computador separado para executar com os clones e usá-lo para fazer uma série de atualizações de teste. Faça anotações de todos os problemas encontrados e repita até que você tenha um procedimento claro para todos eles. Em seguida, aplique isso ao seu servidor ao vivo.

Se você não puder pagar por qualquer tempo de inatividade, a migração será sua única saída. Esqueça a fixação e backports, que só irá mantê-lo vivo por um período limitado de tempo. E a opção "roll your own" não vale a pena ser considerada. Apenas o valor de 2 centavos.

    
por 25.05.2011 / 15:53