Temos um aplicativo que está sendo executado em algumas (5 ou mais e aumentará) caixas. O hardware é idêntico em todas as máquinas e, idealmente, o software também. Eu os tenho gerenciado manualmente até agora e não quero mais (endereços IP estáticos, desativando todos os serviços necessários, instalando os pacotes necessários ...). Alguém pode equilibrar os prós e contras das seguintes opções ou sugerir algo mais inteligente?
1: Instale centos individualmente em todas as caixas e gerencie as configurações com chef / cfengine / puppet. Isso seria bom, pois eu queria uma desculpa para aprender a usar um dos aplicativos, mas não sei se essa é realmente a melhor solução.
2: Faça uma caixa perfeita e crie uma imagem. Sirva a imagem no PXE e sempre que eu quiser fazer modificações, basta reiniciar as caixas a partir de uma nova imagem. Como os caras do cluster normalmente lidam com coisas como ter endereços mac nos arquivos / etc / sysconfig / network-scripts / ifcfg *? Também usamos infiniband, e ele também se recusa a iniciar se o hwaddr estiver errado. Eles podem ser gerados corretamente na inicialização?
Estou me inclinando para a solução PXE, mas acho que o monitoramento com munin ou nagios será um pouco mais complicado com isso. Alguém tem experiência com esse tipo de problema?
Todos os servidores possuem SSDs e são rápidos e poderosos.
Obrigado, Matt.
Visão geral
De certa forma, você tem duas perguntas aqui ..
Dividi minha resposta abaixo, abordando essas duas coisas separadamente, mas elas estão intimamente relacionadas. Estou abordando as soluções de tecnologia aqui e não nenhuma das melhores práticas relacionadas, como controle de alterações.
Se isso não cobrir o escopo da sua pergunta, esclareça e terei prazer em elaborar. Essa é a base necessária, essencial para uma infraestrutura de tecnologia bem administrada.
Criando servidores
Não gosto de imagens no mundo UNIX; isso é mais uma abordagem de estilo do Windows. Até mesmo algumas pessoas do Windows parecem estar se concentrando nos scripts para compilações padrão agora.
O satélite parece estar ficando um pouco popular no mundo do RHEL. Spacewalk é a contraparte de código aberto. Você definitivamente precisa comprar a abordagem RHEL inteiramente para usá-la. Isso serve como criação de servidor e gerenciamento de configuração.
Idealmente, você desejaria estabelecer espelhos e repositórios locais em um servidor de arquivos para todo o software necessário.
Primeiro, aproveite sua automação de construção de distribuição, como o Kickstart no RHEL / CentOS. O Kickstart seria uma linha de base com variações, dependendo de suas necessidades. As compilações do Kickstart podem ser iniciadas a partir de um servidor PXE.
Para a parte mais avançada da compilação e qualquer coisa que não seja adequada para um arquivo Kickstart, você pode escrever seus próprios scripts personalizados. No entanto, você pode achar que o puppet ou o cfengine funcionam bem para você, em vez de scripts personalizados. Eu achei os scripts personalizados os mais flexíveis e não estão limitados a uma única abordagem.
Se você optar por escrever seus próprios scripts, recomendo um script principal para configuração universal. Isso seria configuração de segurança, proteção e qualquer coisa que se aplique a todas as compilações. Em seguida, um script final para finalizar a função de servidor. Por exemplo, um servidor web ou um servidor de banco de dados.
Manutenção de padrões
O que você descreve também se enquadra na manutenção de configurações. Os padrões de compilação, atualizações de software e outras coisas estão relacionadas às compilações, mas de várias maneiras separadas.
Se você optar por confiar nos pacotes do sistema, em vez de criar suas próprias construções baseadas na fonte para as funções de servidor mais importantes, muito disso poderá ser mantido com os utilitários nativos do sistema. Esse pode ser um script tão simples para executar um
for
loop na sua lista de servidores e executar umyum -y update package
.Para gerenciamento de configuração, este é o lugar onde fantoches, cfengine, e outra de gerenciamento de configuração utilitários entram em jogo. Estes são utilitários muito úteis e fornecem a base necessária sem escrever seus próprios scripts do zero.
Quando você atualiza seus padrões de configuração para seus servidores, é importante preencher isso em suas compilações de servidor padrão.
fonte
Recentemente, concluí um grande projeto para implantar um sistema centralizado de gerenciamento de criação / provisionamento e configuração em $ WORK. Estamos executando o CentOS.
Meu design, do qual realmente gosto, nos dá um processo de criação de praticamente um clique (bem, uma página da GUI da web), usando alguns scripts PHP personalizados para unir tudo por meio de uma interface da web simples, mas eficaz.
A teoria geral é:
Eu concordo que as imagens não são uma maneira Unix-y de fazer as coisas ... elas são realmente mais adequadas ao mundo do Windows, onde a instalação e configuração com script / automatizadas não é tão simples.
Você pode substituir o Puppet por qualquer outro sistema de gerenciamento de configuração que se encaixe no projeto, mas gosto da natureza declarativa do Puppet e de seu conceito de convergência.
Este sistema gera vários benefícios:
fonte
Se você seguir a rota pxe, não deixe de dar uma olhada
http://etherboot.org/wiki/index.php
O Gpxe lhe dará mais flexibilidade com os objetivos de inicialização. É muito fácil inicializar um blade aoe e não há nada como inicializar um kernel em um servidor http remoto !!!!!!!!!! :-).
Qual servidor você precisa?
É impossível criar uma imagem perfeita, pois você sempre precisará aplicar patches de segurança e atualizações de software. Se eles estão voltados para a Internet, você não pode simplesmente ignorar as correções.
No lado do pxe, você tem algumas opções, dependendo da E / S do arquivo do cluster. Basta inicializar um kernel e montar o disco remotamente sobre aoe ou iscsi.
Você também pode fazer algumas coisas muito inteligentes com cópia em imagens de gravação. É ótimo para atualizações e reversão de alterações que possam ser problemáticas.
Eu também tive sucesso usando o nfs root, usando uma solução de nfs em cluster. Você pode especificar arquivos diferentes para serem exibidos, dependendo dos endereços dos clientes.
Novamente, você deve verificar se seu (s) aplicativo (s) gosta (s) de executar o nfs. Não é adequado para todas as cargas de trabalho.
o servidor nfs cluster pode conter 192.168.0.1:/etc/hostname 192.168.0.2:/etc/hostname
portanto, todo cliente faz referência ao mesmo arquivo, mas recebe o arquivo relevante para o cliente. É uma coisa bastante impressionante, no entanto, não é simples!
Tudo isso proporcionará tempos de implementação mais rápidos se você centralizar o sistema de arquivos no armazenamento em rede. A criação de imagens de um sistema operacional em uma rede para um disco remoto leva tempo !!!!
Se você estiver usando alguma dessas soluções, verifique se possui uma camada de rede bem projetada e tolerante a falhas e se o servidor nfs / SAN está bem projetado + seguro!
Perder a conexão do seu NFS / SAN seria prejudicial à integridade do servidor. :-(
É muito fácil criar alguns scripts para o tftp / pxe controlar o processo de inicialização.
Se eu soubesse mais o que você está realmente tentando agrupar, talvez pudesse pensar em uma solução mais adequada para você.
fonte