AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1086197
Accepted
JohnLBevan
JohnLBevan
Asked: 2021-12-14 08:24:14 +0800 CST2021-12-14 08:24:14 +0800 CST 2021-12-14 08:24:14 +0800 CST

Montando arquivos do Azure no serviço de aplicativo do Azure

  • 772

Resumo

Eu tenho um serviço de aplicativo do Azure executando um contêiner personalizado. Quando vinculo um caminho a um compartilhamento de Arquivos do Azure, meu contêiner para de funcionar. Olhando para os Container Issueslogs, vejo o erro: [BYOS] Custom storage volume(s) failed to initialize: [/var/LWASFiles/Sites/my-app/a3484543-39f9-45a3-816b-9524640dfd50].

Detalhe

  • Meu contêiner personalizado tem um volume definido /var/www/html/v3/uploads.

  • Estou tentando mapear isso para um compartilhamento de arquivos do Azure, que está em uma conta de armazenamento na mesma vnet que o ASE de hospedagem, com regras que permitem o tráfego entre a sub-rede do ASE e o compartilhamento de arquivos nas portas 137, 138, 138 e 445 .

  • O ASE de hospedagem é configurado com um balanceador de carga interno (ou seja, é um ASE privado).

  • A conta de armazenamento tem um ponto de extremidade privado configurado.

  • O volume é mapeado em Configurações > Configuração > Mapeamentos de caminho do Serviço de Aplicativo, usando uma chave válida e um caminho de montagem que corresponda ao caminho do volume no contêiner.

  • Antes de adicionar o mapeamento de caminho, o serviço de aplicativo é executado conforme o esperado.

  • Após adicionar o mapeamento de caminho, o contêiner não inicia / as únicas informações de exceção que consigo encontrar são nos Container Issueslogs, conforme o resumo acima.

  • Se eu remover o mapeamento de caminho, o problema persistirá, mesmo após forçar uma reinicialização. A única maneira de resolver o problema é descartar e reimplantar o serviço de aplicativo.

  • Ele se conecta com sucesso a um banco de dados MySql (banco de dados do Azure para servidores MySQL) por meio de um ponto de extremidade privado.

  • Usando dig {privateEndpointFqdn}sou capaz de provar que o endpoint privado da conta de armazenamento foi resolvido corretamente (como é o do MySQL; como seria de esperar)

  • Usando tcptraceroute {privateEndpointFqdn} {destinationPort}, posso provar que posso me conectar à conta de armazenamento na porta 445 (e ao banco de dados MySQL na porta 3306).

  • Observação: não consigo me conectar à conta de armazenamento nas portas 137, 138 ou 139, apesar de serem permitidas pelo NSG nas mesmas regras de entrada e saída usadas para 445, acima; embora eu suspeite que essas portas não sejam mais necessárias para o CIFS (eu as adicionei apenas como uma medida just-in-case depois de acertar o problema, caso fossem de alguma forma relevantes, pois foram mencionados em alguns posts).

  • Estou executando os testes acima por SSH no contêiner, para que os comandos sejam executados a partir de seu contexto. Observação: como não consigo iniciar o contêiner após adicionar o mapeamento de caminho, esses testes são realizados após a criação do serviço de aplicativo, mas antes de adicionar o mapeamento de caminho.

  • Eu aumentei WEBSITES_CONTAINER_START_TIME_LIMITpara seu valor máximo:1800

  • Meu contêiner expõe a porta 80 (ou seja, uma das portas padrão com suporte pelo Serviço de Aplicativo para contêiner); e o site funciona quando o mapeamento de caminho não existe, então esse não deve ser o problema. Também configurei WEBSITES_PORTpara 80, apenas para cinto e suspensórios.

  • WEBSITES_ENABLE_APP_SERVICE_STORAGEestá definido como false(embora eu também tenha experimentado defini-lo como true, apenas no caso de / não fazer diferença, então reverti para false).

  • Meu compartilhamento de arquivos tem vários GBs de dados. Tentei criar um compartilhamento de arquivo idêntico sem conteúdo e mapeá-lo (imediatamente após recriar o serviço de aplicativo e provar que funcionou; para garantir que meus testes não fossem afetados pela ressaca do compartilhamento de arquivo maior). Isso dá o mesmo problema com o compartilhamento de arquivos maior.

  • A imagem do meu contêiner está sendo carregada de um Azure Container Repo.

  • A imagem é baseada naubuntu:21.04

  • Eu incluí os pacotes azure-clie cifs-utils(acho que isso é necessário apenas ao executar a operação de montagem do contêiner, em vez da configuração do AppService; mas eu queria cobrir todas as suposições)

  • O ASE de hospedagem está na UK Southregião (assim como a conta de armazenamento/todos os recursos).

Observação: esta é minha primeira experiência com a execução de contêineres no Serviço de Aplicativo; então PEBKAC é definitivamente uma possibilidade.

Quaisquer sugestões ou conselhos de solução de problemas seriam muito apreciados. Obrigada.

azure
  • 0 0 respostas
  • 1523 Views

0 respostas

  • Voted
  1. Best Answer
    JohnLBevan
    2021-12-17T05:58:22+08:002021-12-17T05:58:22+08:00

    Resolvi o problema alterando a rede da conta de armazenamento de selected networks(na qual eu havia permitido pela VNet do ASE e os IPs de saída para o aplicativo Web) para all networkso portal:

    https://portal.azure.com/#@<myTentantName>.onmicrosoft.com/resource/subscriptions/<mySubscrption>/resourceGroups/<myStorageAccountsResourceGroup>/providers/Microsoft.Storage/storageAccounts/<myStorageAccountName>/networking

    Em seguida, reiniciei meu aplicativo (incluindo descartar e adicionar novamente a montagem ... não tenho certeza se isso era necessário, mas para uma boa medida):

    # stop the web app
    az webapp stop \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> 
    
    # drop the existing path mapping
    az webapp config storage-account delete \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> \
        --custom-id <path-mapping-name> \
    
    # re-add the path mapping
    az webapp config storage-account add \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> \
        --custom-id <path-mapping-name> \
        --storage-type AzureFiles \
        --account-name [Azure storage account name] \
        --share-name   [Azure storage share name] \
        --access-key   [storage access key] \
        --mount-path   [/path/to/mount within the container] 
    
    # restart the web app
    az webapp start \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> 
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve