Adiciona o cluster ElastiCache ao aplicativo Elastic Beanstalk

2

Eu tenho uma configuração do aplicativo Elastic Beanstalk utilizando a plataforma docker. Tudo funciona perfeitamente e posso reimplantar o aplicativo usando o comando eb deploy cli. O aplicativo é configurado em um VPC personalizado (algo que mal entendo) e é acessível pela Web.

Eu quero adicionar um cluster Memcached ElastiCache ao meu aplicativo. Eu tentei criar o cluster manualmente através do console, mas eu nunca consigo me conectar a ele (não importa como eu configurei) do meu aplicativo (tentei telnet da instância do Elastic Beanstalk). Eu adicionei um diretório .ebextensions ao meu aplicativo e tentei adicionar uma diretiva para o EB criar o cluster de cache para mim. Eu tentei usar o modelo de exemplo da AWS, mas isso não funcionou. Eu tentei alterar as configurações e tentei simplificar a diretiva até os parâmetros mínimos necessários para que o EB criasse o cluster. Nada que eu esteja fazendo parece funcionar. Abaixo está o meu arquivo atual:

Resources:
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType: "cache.t2.small"
      NumCacheNodes: "1"
      Engine: "memcached"
      VpcSecurityGroupIds: 
        - sg-XXXXXXXX
      CacheSubnetGroupName: "subnet-XXXXXXXX"

Para o VpcSecurityGroupIds , tentei grupos de segurança do EC2 e grupos de segurança do VPC. Nem parece ajudar. O CacheSubnetGroupName é o id de uma sub-rede dentro do meu VPC.

É muito frustrante, pois leva 5 minutos para testar a alteração mínima, pois o EB precisa reimplantar meu aplicativo toda vez que eu tento algo novo. Qualquer ajuda seria muito apreciada.

Editar: aqui está minha última tentativa.

Resources:
  MyElastiCacheSubnetGroup:
    Type: "AWS::ElastiCache::SubnetGroup"
    Properties:
      Description: "Blah blah blah"
      SubnetIds:
        - subnet-XXXXXXXX
        - subnet-XXXXXXXX
        - subnet-XXXXXXXX
        - subnet-XXXXXXXX
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType: "cache.t2.small"
      NumCacheNodes: "1"
      Engine: "memcached"
      VpcSecurityGroupIds: 
        - sg-XXXXXXXX
      CacheSubnetGroupName:
        Ref: "MyElastiCacheSubnetGroup"

E o erro para acompanhar: Service:AmazonCloudFormation, Message:Stack named 'awseb-e-amyvnbtvps-stack' aborted operation. Current state: 'UPDATE_ROLLBACK_IN_PROGRESS' Reason: The following resource(s) failed to create: [MyElastiCacheSubnetGroup].

    
por Patrick Stephan 11.08.2016 / 17:02

2 respostas

0

A propriedade VpcSecurityGroupIds é uma lista de um ou mais grupos de segurança VPC que serão atribuídos ao cluster de cache.

Certifique-se de que um desses grupos de segurança esteja permitindo conexões na porta 11211 dos grupos de segurança da instância EC2 do seu aplicativo EB ou um CIDR que inclua as instâncias EC2 do seu aplicativo EB. Sem essa regra, todas as conexões falharão.

O CacheSubnetGroupName não é uma sub-rede VPC.

Você precisa criar um grupo de sub-redes de cache antes de criar seu cluster de cache em um VPC. Um grupo de sub-redes de cache é uma coleção de sub-redes VPC. Veja o seguinte para mais informações:

link

Você pode criar o recurso Grupo de sub-redes de cache no seu arquivo .ebextensions :

Resources:
  MyElastiCacheSubnetGroup:
    Type: "AWS::ElastiCache::SubnetGroup"
    Properties:
      Description: "Something informational"
      SubnetIds:
        - subnet-XXXXXX
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType: "cache.t2.small"
      NumCacheNodes: "1"
      Engine: "memcached"
      VpcSecurityGroupIds: 
        - sg-XXXXXXXX
      CacheSubnetGroupName: 
        Ref: "MyElastiCacheSubnetGroup"
    
por 11.08.2016 / 21:15
0

Venha descobrir, o erro foi que a conta do IAM que estava gerenciando a implantação não tinha as políticas necessárias para criar serviços do Elasticache. Uma vez eu dei ao usuário do IAM as permissões apropriadas. Começou a funcionar. Infelizmente, o erro não está muito bem definido nos Eventos do Elastic Beanstalk. Descobri que os eventos também estão listados no Cloudformation e foi aí que descobri que as permissões eram o problema.

    
por 11.08.2016 / 22:49