2014-10-23 13 views

Antwort

9

AWS Elastic Beanstalk stellt resource configuration über den Ordner .exextensions bereit. Im Wesentlichen müssen Sie Elastic Beanstalk mitteilen, was Sie zusätzlich zu Ihrer Anwendung bereitstellen möchten. Für die Bereitstellung in einem Standard-VPC. Sie müssen

ein .ebextensions

Ordner erstellen

fügen Sie eine Datei elasticache.config

und umfassen die folgenden Inhalte.

Resources: 
    MyCacheSecurityGroup: 
    Type: "AWS::EC2::SecurityGroup" 
    Properties: 
     GroupDescription: "Lock cache down to webserver access only" 
     SecurityGroupIngress : 
     - IpProtocol : "tcp" 
      FromPort : 
      Fn::GetOptionSetting: 
       OptionName : "CachePort" 
       DefaultValue: "6379" 
      ToPort : 
      Fn::GetOptionSetting: 
       OptionName : "CachePort" 
       DefaultValue: "6379" 
      SourceSecurityGroupName: 
      Ref: "AWSEBSecurityGroup" 
    MyElastiCache: 
    Type: "AWS::ElastiCache::CacheCluster" 
    Properties: 
     CacheNodeType: 
     Fn::GetOptionSetting: 
      OptionName : "CacheNodeType" 
      DefaultValue : "cache.t1.micro" 
     NumCacheNodes: 
     Fn::GetOptionSetting: 
      OptionName : "NumCacheNodes" 
      DefaultValue : "1" 
     Engine: 
     Fn::GetOptionSetting: 
      OptionName : "Engine" 
      DefaultValue : "redis" 
     VpcSecurityGroupIds: 
     - 
      Fn::GetAtt: 
      - MyCacheSecurityGroup 
      - GroupId 

Outputs: 
    ElastiCache: 
    Description : "ID of ElastiCache Cache Cluster with Redis Engine" 
    Value : 
     Ref : "MyElastiCache" 

referenzierte aus: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-environment-resources-elasticache.html

+0

Ich habe dies und bekomme die '[Fehler: Fehler: Redis Verbindung zu 127.0.0.1:6379 fehlgeschlagen - verbinden ECONNREFUSED]'. Wahrscheinlich hat der Befehl redis-server nicht gestartet. Wie kann ich den Status von Redis überprüfen? – theChinmay

+0

@theChinmay redis wird eigenständig bereitgestellt, Ihre App soll die IP von einer Umgebungsvariable erhalten und eine Verbindung zu dieser IP herstellen anstatt zu localhost –

+0

@LucaG. Sie wissen, wie kann ich die IP oder Host in Amazon Elasticbeanstalk NodeJS App bekommen? Dank –

14

Die akzeptierte Antwort ist groß, wenn Sie mit ElastiCache (wie RDS, aber für Memcached oder Redis) "Wie ElasticCache Ressourcen Elastic Beanstalk VPC hinzufügen". Aber, wenn das, was Sie versuchen, EB zu tun ist, sagen die Bereitstellung Redis in die EC2-Instanz, in der sie Ihre App dreht nach oben, wollen Sie eine andere Konfigurationsdatei, so etwas wie this gist:

packages: 
    yum: 
    gcc-c++: [] 
    make: [] 
sources: 
    /home/ec2-user: http://download.redis.io/releases/redis-2.8.4.tar.gz 
commands: 
    redis_build: 
    command: make 
    cwd: /home/ec2-user/redis-2.8.4 
    redis_config_001: 
    command: sed -i -e "s/daemonize no/daemonize yes/" redis.conf 
    cwd: /home/ec2-user/redis-2.8.4 
    redis_config_002: 
    command: sed -i -e "s/# maxmemory <bytes>/maxmemory 500MB/" redis.conf 
    cwd: /home/ec2-user/redis-2.8.4 
    redis_config_003: 
    command: sed -i -e "s/# maxmemory-policy volatile-lru/maxmemory-policy allkeys-lru/" redis.conf 
    cwd: /home/ec2-user/redis-2.8.4 
    redis_server: 
    command: src/redis-server redis.conf 
    cwd: /home/ec2-user/redis-2.8.4 

Die andere Option ist, containerisieren Sie Ihre App mit Redis mithilfe von Docker, und stellen Sie dann Ihre App als eine Anzahl von Docker-Containern bereit, und zwar unabhängig von der Sprache, in der Sie sie geschrieben haben. Dies wird für eine Flask-App beschrieben here.

Sie können alles in einem Container stauen und auf diese Weise bereitstellen, was einfacher ist, aber nicht gut skaliert, oder Sie können AWS Elastic Beanstalk-Multi-Container-Implementierungen verwenden. Wenn Sie docker-compose verwendet haben, können Sie das Werkzeug this verwenden, um eine docker-compose.yml in das Format AWS wants, Dockerrun.aws.json, umzuwandeln.

Verwandte Themen