Autoscaling e NFS Server

3

Eu tenho um WebServer dizendo que o WS-1 e um servidor NFS dizem que o NFS-1 está configurado na AWS. O WS-1 está sendo gerenciado por um balanceador de carga elástico e também com escalonamento automático. Ele também tem um EBS montado em / var / www, que contém todo o código do aplicativo.

  • Durante o escalonamento automático, se outro WS-X for lançado, o / var / www montado no EBS também será clonado e anexado a ele também? Se não, quais são minhas opções além de hospedar código no volume root do EBS?

  • O acesso dentro do NFS é definido em base IP como 10.0.0.1/32 (rw, ...). Durante o escalonamento automático, mais instâncias serão iniciadas, como posso permitir que elas se conectem ao servidor NFS e montem o diretório compartilhado? Eu não quero dar acesso à sub-rede IP privada usando o NFS, enquanto no nível do Grupo de Segurança eu dei acesso ao servidor NFS para 0.0.0.0/0. O servidor NFS usa portas fixas como 111, 2049, 4000-4002.

por Shoaibi 08.02.2011 / 16:56

2 respostas

4

Na ampliação, o volume do EBS e seus dados não serão "clonados". Para ter esse comportamento, você deseja automatizá-lo na inicialização.

  1. Capture o instantâneo mais recente do volume do WS-1 EBS
  2. Crie e anexe o volume

Outro método, dependendo da quantidade de dados no EBS, é retirá-lo do S3.

Com o grupo de segurança, você pode permitir que qualquer servidor no app_security_group tenha acesso a qualquer servidor no nfs_server_group. Isso permitirá que você atualize dinamicamente os grupos de segurança.

Espero que isso faça sentido.

    
por 30.09.2011 / 16:05
0

Sua instância só será "clonada" se você tiver uma AMI recente (Amazon Machine Image) tirada da instância. Provavelmente haverá algumas alterações em seu sistema de arquivos desde que o snapshot foi tirado, então é uma boa idéia usar AWS userdata para criar um script Bash / CloudInit que acionará uma atualização nas áreas que serão alteradas, por exemplo base de código, mídia, etc.

As opções para atualizar determinadas áreas podem ser de (listando prós e contras):

  1. Ponto de armazenamento central no S3
    • As permissões para acessar o intervalo são gerenciadas por meio da função do IAM que você atribui às suas instâncias
    • Largura de banda de E / S rápida entre serviços da AWS
    • Tempo de atividade consistente
    • Con: A menos que você use controle de versões do intervalo , você não usa t a flexibilidade que o controle de origem oferece a você para revisões
  2. Um repositório de controle de origem (Git, Subversion) para dados de bootstrap:
    • Permite que você atualize dinamicamente seus scripts de bootstrapping por meio do controle de origem, tenha contribuições e histórico para isso, etc.
    • Con: Requer uma (potencialmente) conexão externa com o seu host Git, permissões e configuração de grupo de segurança para permitir isso
    • Con: Provavelmente um pouco mais lento que S3

Veja um exemplo de um script de bootstrapping que você poderia aplicar à sua configuração de ativação para ativá-lo para executar as tarefas de bootstrapping dinamicamente. Observe que os scripts userdata são executados como usuário root.

#!/bin/bash
# Update your packages
yum update -y
# Get/execute bootstrapping
cd /tmp
git clone ssh://your-git-server/bootstrapping-repo.git
chmod +x /tmp/your-repo/bootstrapping.sh
# Execute it
/tmp/your-repo/bootstrapping.sh
# Remove the bootstrapping script remnants
rm -rf /tmp/your-repo

Esse método permite a flexibilidade de atualizar seu "bootstrapping-repo" quantas vezes você precisar, sem ter que criar novas AMIs regularmente.

Como plano de fundo, eu uso o S3 em meus userdata para pegar chaves SSH relevantes, arquivos de host, etc., e o Git para o repositório de bootstrapping.

Também é uma boa idéia manter seus AMIs atualizados o mais regularmente possível e salvos em sua configuração de lançamento, para que as novas instâncias ativadas não precisem passar muito tempo atualizando-se. Se você faz isso manualmente de vez em quando ou escreve um script para fazer isso por meio da API ou do CLI, depende de você.

FYI : a saída dos dados do usuário e dos scripts subseqüentes chamados na inicialização da instância será registrada no arquivo /var/log/cloud-init-output.log

    
por 17.11.2014 / 02:00