Como manter um arquivo em vários servidores de produção (Windows e Linux)

3

Minha organização deseja gerenciar centralmente um arquivo Oracle TNSnames para todos os seus servidores de produção. Quando esse arquivo é alterado, eles querem poder enviar as alterações para todos os servidores que o usam com o mínimo de esforço.

Abordagens que foram consideradas:

  • Servidor de arquivos centralizado (desvantagem: se o servidor de arquivos ou a conexão de rede com o servidor de arquivos ficar inoperante, os servidores não terão acesso ao arquivo crítico)
  • Cliente Subversion em cada servidor (desvantagem: usando uma ferramenta de controle de origem em produção, complexidade adicionada)
  • Armazena uma cópia individual do arquivo em cada servidor (desvantagem: alterar o conteúdo do arquivo envolve fazer alterações em muitos servidores diferentes)

Atualizar Posso usar o DFS para fazer isso?

    
por Brien 05.07.2012 / 15:55

5 respostas

6

Esta não é uma questão da Oracle. Este é um caso de uso canônico para uma ferramenta de gerenciamento de configuração como puppet, bcfg2, cfengine, chef, etc. (desses, pelo menos o puppet tem algum suporte para gerenciar máquinas Windows, bem como unixes)

O apelo do seu ponto de vista para este caso em particular é diferente:

  1. cada máquina obtém sua própria cópia local do arquivo em questão, o que significa que, se o servidor de configuração (ou o caminho de rede para ele) desaparecer, a máquina ainda terá o arquivo; ele só não receberá nenhuma atualização até que a conexão com a nave mãe seja restaurada
  2. as alterações são automaticamente enviadas do servidor de configuração para cada caixa oracle
  3. Pouca complexidade adicional em cada máquina cliente (oracle)
  4. As alterações ocorrem em um só lugar.

A desvantagem, claro, é que isso significa que você precisa aprender sobre como executar / configurar um sistema de gerenciamento de configuração. É claro que, ao fazer isso, você provavelmente encontrará muitos, muitos mais usos para isso, tornando seu ambiente e administração mais eficientes.

    
por 05.07.2012 / 16:16
4

Como o TNSNames não é um que está bloqueado quando o servidor está em uso, tente um cron job ou uma tarefa agendada em cada servidor que atualize o arquivo a cada X minutos / horas.

Editar: a fonte de atualização deve ser um servidor de arquivos (CIFS, NFS, etc) acessível a partir de todos os servidores Oracle. Você também pode configurar o script para notificá-lo se o arquivo não for atualizado, embora uma falha simplesmente signifique nenhuma atualização em vez de um arquivo crítico ausente em seus servidores de banco de dados.

    
por 05.07.2012 / 16:02
2

Store an individual copy of the file on each server (drawback: changing the file contents involves making changes on many different servers)

Ainda assim, eu iria com isso. Escreva um script que leia uma lista de servidores para acessar, provavelmente com um método de controle de sistema operacional / login que varia com base em um campo. Alternativamente, o Puppet pode ser usado de maneira semelhante para enviar arquivos de configuração para o Linux ou o Windows. O Puppet também atualizará e registrará as alterações no arquivo.

Centralized file server (drawback: if the file server or the network connection to the file server goes down, the servers have no access to the critical file)

Você poderia colocar servidores redundantes com failover de IP, mas isso não resolveria problemas de rede. Eu não consideraria isso uma solução strong para sua tarefa de propósito único.

Subversion client on each server (drawback: using a source control tool in production, added complexity)

Você ainda precisa criar um script ou enviar uma solicitação de recebimento para cada servidor. Eu não vejo a desvantagem intrínseca de "ferramenta de controle de origem em produção", no entanto.

    
por 05.07.2012 / 16:43
1

Para os sistemas Windows, um GPO para copiar os arquivos de um compartilhamento deve funcionar. Isso fará o trabalho para o Linux também se você estiver usando Centrify, Likewise, etc.

Para o Linux, você já está usando algum tipo de sistema de provisionamento? (por exemplo, Spacewalk, RHSS) Essa seria a melhor aposta para gerenciar centralmente os arquivos de configuração.

    
por 05.07.2012 / 16:14
1

Você também pode usar o DFS para isso - isso deve corrigir a falta de redundância, contanto que a raiz DFS tenha mais de um servidor de arquivos. Você precisaria de um cliente SMB nas máquinas Linux que suportam DFS; Não sei se isso é fácil / gratuito / impossível / com bugs.

    
por 05.07.2012 / 16:35