Montando um contêiner de blob do Azure em uma função de VM do Linux

1

Eu já fiz uma pergunta sobre esse assunto, mas agora prefiro reescrevê-lo do zero, porque fiquei muito confuso na época.

Atualmente, tenho um Linux XS VM Role no Azure. Eu basicamente quero criar um serviço de hospedagem autogerenciado e evoluído usando VMs em vez de funções Web mais caras do Azure. Também quero aproveitar o balanceamento de carga (entre funções de VM) e a replicação geográfica (de funções de armazenamento), garantindo que os "arquivos da Web" dos clientes estejam localizados em um local definido e gerenciável.

Uma maneira que encontrei de "montar" uma unidade no Linux VM é descrita aqui e envolve a montagem de um VHD na máquina virtual. Pelo que pude aprender, o VHD é armazenado de forma confiável em uma função de armazenamento e é bloqueado exclusivamente pela VM que o utiliza. Uma vez que o VM Role tenha seu drive, eu posso formatar a partição para qualquer tamanho que eu quiser. Eu não quero isso!

Gostaria que cada site hospedado tivesse seu próprio diretório de blob e, em seguida, cada função VM replicada / com balanceamento de carga para rw fosse montada como no NFS que o diretório blob para ler arquivos HTML e de script. O banco de dados é obviamente cortesia da Microsoft:)

A minha pergunta é

É possível realmente mount um armazenamento de blob em um diretório no Linux FS? É possível no Windows Server 2008?

    
por usr-local-ΕΨΗΕΛΩΝ 05.09.2012 / 20:30

3 respostas

4

Recentemente, a Microsoft lançou Pastas compartilhadas do Azure

Estas são montagens CIFS / SAMBA no Linux. Portanto, o link acima é a resposta correta desde maio de 2014

    
por 01.07.2014 / 09:25
4

Primeiro, alguns esclarecimentos, para ajudar você a se confundir ainda mais.

  • Suas instâncias do Linux são consideradas Máquinas Virtuais . Estes são diferentes da função de VM existente. O primeiro é um vhd que você gerencia em sua conta de armazenamento e suporta várias variantes do sistema operacional. O último é algo que você cria localmente, carrega no Windows Azure (no armazenamento não gerenciado por você) e, em seguida, cria uma ou mais instâncias dessa função de VM (que funciona de maneira semelhante às funções da Web / trabalhador). Só queria esclarecer, como você se refere a sua VM linux como "VM Role".
  • Funções da Web (ou funções de trabalho, ou Funções de VM), não são mais caras que as Máquinas Virtuais. Todos eles são medidos a uma taxa por hora, por núcleo, a um preço de tabela de US $ 0,12 / hora (ou US $ 0,02 / hora para XS).
  • Armazenamento é um serviço, não um papel. As "funções" Web / worker / vm são essencialmente modelos (ou scaffolding) para o código que é executado nas instâncias da máquina virtual, além do código que você implementa. O armazenamento é um serviço acessível por REST.

Ok, tendo dito tudo isso: As instruções que você encontrou sobre a montagem de uma unidade em uma Máquina Virtual linux mostram como fazer as coisas através do portal (e você pode fazer a mesma coisa com scripts de linha de comando). Você pode montar até 16 unidades no total (2 por núcleo e 1 em um XS). Cada unidade montada é tratada como um sistema de arquivos inteiro.

Se você quiser que cada Máquina Virtual tenha sua própria unidade, você pode montar a (s) unidade (s) apropriada (s) para cada (novamente, até 16 por Máquina Virtual). Quando uma unidade é montada, essa Máquina Virtual tem acesso de gravação exclusivo à unidade (sem compartilhamento de unidade). Isso é independente do sistema operacional: a mesma restrição no Win28K, Linux ou até mesmo uma função web / worker / vm. Então: No modelo em que cada máquina virtual serve apenas um site , isso ajuda. No modelo em que cada máquina virtual serve todos os sites , isso não ajuda muito com o que você está tentando fazer. Então ...

Se você tem tráfego de balanceamento de carga entre duas Máquinas Virtuais e ambos precisam acessar o mesmo conteúdo estático (por exemplo, conteúdo do site), uma coisa a considerar: Armazenar conteúdo estático diretamente em um blob (como zip / tar ) ou série de bolhas em um recipiente. Então, na inicialização (ou algum tipo de sinal), faça com que a (s) Máquina (s) Virtual (s) baixem o (s) blob (s) para o armazenamento local. Esse método fornece um local central para você armazenar seu conteúdo da web. Você também pode armazená-los em uma unidade do Azure, mas eu realmente não vejo o valor em fazê-lo: você deve se preocupar em obter instantâneos somente leitura da unidade e montá-los instantâneo. Parece muito trabalho extra, ao invés de pegar arquivos do armazenamento de blobs.

A propósito: As operações de cópia serão estranguladas pelo tamanho da Máquina Virtual. A largura de banda da rede na Máquina Virtual é de 100 Mbps por núcleo, mas para XS, apenas 5 Mbps. Dependendo da quantidade de dados que você copiaria do armazenamento de blobs para o disco local, isso pode parecer um pouco lento com o XS. Ah, e a largura de banda entre o armazenamento de blobs e sua máquina virtual é gratuita dentro do mesmo centro de dados.

Espero que isso responda à sua pergunta ...

    
por 07.09.2012 / 16:00
0

Possível resposta (ainda a ser avaliada quanto à viabilidade)

Uma opção pode ser fuse file system. Eu encontrei um sistema de arquivos REST para o FUSE e o @David Makogon apenas confirmou o meu pensamento de que o armazenamento de blobs não era mais do que um REST serviço

    
por 07.09.2012 / 20:33