如何在AWS ElasticBeanstalk上安装和配置Redis?有谁知道如何编写.ebextension脚本来实现它?
答案 0 :(得分:25)
如果您使用的是ElastiCache(如RDS,但适用于Memcached或Redis),则接受的答案非常好。但是,如果您要做的是告诉EB将Redis配置到EC2实例中,它会在其中旋转您的应用程序,您需要一个不同的配置文件,例如this gist:
redis_build
重要提示:命令按名称按字母顺序执行,因此,如果您选择的名称与redis_config_xxx
,redis_server
,docker-compose
不同,请确保他们按照你期望的方式执行。
您的另一个选择是使用Docker将您的应用程序与Redis进行容器化,然后将您的应用程序部署为一些Docker容器,而不是您编写的任何语言。对Flask应用程序执行此操作时,请参阅here。
您可以将它全部集中到一个容器中并以这种方式部署,这样更容易,但扩展性不好,或者您可以使用AWS的Elastic Beanstalk多容器部署。如果您使用了docker-compose.yml
,则可以使用this工具将Dockerrun.aws.json
转换为AWS想要的格式d1 = new Date("2016-06-29");
d2 = new Date("2016-05-13");
differ = new Date(
d1.getFullYear() - d2.getFullYear(),
d1.getMonth() - d2.getMonth(),
d1.getDate() - d2.getDate()
);
。
答案 1 :(得分:13)
AWS Elastic Beanstalk通过.ebextensions文件夹提供resource configuration。基本上,除了应用程序之外,您还需要告诉Elastic Beanstalk您要配置的内容。用于配置为默认vpc。你需要
创建一个.ebextensions文件夹
添加elasticache.config文件
并包含以下内容。
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"
引自:"如何将ElasticCache资源添加到Elastic Beanstalk VPC" http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-environment-resources-elasticache.html