我有一个在Amazon Web Services上运行的网站,该网站使用Elastic Beanstalk部署,并在单个EC2微实例上运行.这是一个临时环境,我是唯一可以访问它的人.使用Apache JMeter的,我模拟六个用户浏览的网站上,平均约在总每3秒(图像,CSS,JS等静态资源被CloudFront的投放,也不会做出对EC2实例的流量)的请求.
问题是,经过一段时间(通常在设置环境后30-60分钟),网站停止响应.我确信Tomcat仍然正常运行,因为我可以在日志(catalina.out)中看到cronjobs仍在执行中.似乎只有ELB无法提供响应.
分析日志时,Tomcat上根本没有错误(/opt/tomcat7/logs/tail_catalina.log或/opt/tomcat7/logs/catalina.out中没有错误).一旦网站无法访问,以下错误就会立即出现在/ etc/httpd/logs/elasticbeanstalk-error_log中:
[Thu Jun 14 20:26:42 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8999 (localhost) failed
[Thu Jun 14 20:26:42 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Jun 14 20:26:50 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8999 (localhost) failed
[Thu Jun 14 20:26:50 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Jun 14 20:27:20 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8999 (localhost) …Run Code Online (Sandbox Code Playgroud) 这似乎与子网/可用性区域有关,但我是新手使用VPC而且它是在逃避我.
VPC:10.80.0.0/16
子网:10.80.1.0/24(us-east-1b)
子网:10.80.2.0/24(us-east-1a)
所有实例都是Windows Server 2012.
我在我的VPC(10.80.0.0/16)内创建了面向ELB的互联网.从AZ us-east-1a添加了一个实例,它位于子网10.80.2.0/24上.该实例正在运行IIS 7.5,其中应用程序在端口80上运行,而/health.aspx设置为用作ELB运行状况检查.
VPC上的内部流量正常流动(不受限制).我可以从us-east-1b(10.80.1.0/24)中的另一个实例请求此实例的health.aspx.我也可以将文件从一个实例复制到另一个实例.
出站流量不受限制.我可以RDP到实例(当连接到我们的VPN时)并打开浏览器并请求网页并获取它.
ELB说实例是健康的,我可以在IIS日志中看到对health.aspx的请求.ELB和实例都配置了允许80和443的安全组.
但是,如果我尝试通过开放的互联网请求{elb-url} /health.aspx,请求就会超时.同样,使用与实例关联的弹性IP,对{elastic-ip} /health.aspx的请求超时.
我有一个完全存储在Amazon EC2微实例上的基本PHP/MySQL网站.流量即将增加一段时间,我想实现基本的自动缩放主要是为了给我更多的CPU功率,因为这似乎是瓶颈.所以我知道的主要限制是:
任何人都可以指出最好的方法吗?
PS因为我的服务器设置并不复杂,所以如果必须的话,我愿意重建/重新上传所有这些...我只需要正确地使用Auto Scaling.
amazon-s3 amazon-ec2 amazon-ebs amazon-web-services amazon-elb
我有几个网站 - 大约20个.所有这些都是php应用程序目前托管在一台机器上的apache.现在使用虚拟主机配置,我可以使用一个ELB托管所有这些(除非它们需要通过HTTPS).我可以轻松地将传入的请求路由到适当的目录服务器.
但是当我创建一个带有Origin的CloudFront Distribution作为ELB时,我的所有网站都开始获得默认页面.如何将apache配置为CDN和ELB识别.
我以为我可以使用一些标题,但看起来不会服务任何东西.以下是我在CloufFront后面获取请求的标题.CDN-> ELB-> my_application之
"host": "MY_PUBLIC_FACING_ELB_DNS_NAME",
"cache-control": "cf-no-range-cache",
"user-agent": "Amazon CloudFront",
"via": "1.1 d6e48c0d02a2d98c0ccacee7577ee8c2.cloudfront.net (CloudFront)",
"x-amz-cf-id": "rB-gbTCqWq2IeZ-B25-d36rp9j3FmFuicsdPOltDBuYk0HPgLyLj_g==",
"x-forwarded-for": "54.169.155.12, 54.240.148.53",
"x-forwarded-port": "80",
"x-forwarded-proto": "http",
"connection": "keep-alive"
Run Code Online (Sandbox Code Playgroud)
如果没有配置ELB,我会得到以下内容.
"host": "www.example.com",
"accept": "*/*",
"user-agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36",
"accept-encoding": "gzip, deflate, sdch",
"accept-language": "en-US,en;q=0.8",
"cookie": "_sm_au=aaaaaaaaaaaaaaaaaaaa",
"via": "MY_SQUID_SERVER_NAME_VERSION",
"z-forwarded-for": "AAAAAAAAAAAA",
"cache-control": "max-age=259200",
"xroxy-connection": "keep-alive",
"connection": "Keep-Alive",
"x-forwarded-for": "MY_PROXY_SERVER'S_IP"
Run Code Online (Sandbox Code Playgroud)
托管在CloudFront后面时,我不会获得亚马逊ELB传递的任何主机信息.我该如何解决这个问题?
谢谢
我是Amazon Web Services的新手,并且一直在尝试在EC2实例上安装SSL证书.我尝试使用AWS文档,但发现它令人费解.然后,我按照http://www.robertbrewitz.com/2014/09/aws-and-setting-up-a-custom-ssl-certificate/上的指南进行操作.
我用Go Daddy购买了我的SSL证书,并使用openssl生成了2个文件:
server.key
server.csr
Run Code Online (Sandbox Code Playgroud)
指南说我应该期待3个证书:
DigiCertCA.crt
TrustedRoot.crt
star_yourdomain_com.crt
Run Code Online (Sandbox Code Playgroud)
相反,我很容易收到2个名为的文件:
f6f65901b1708ae5.crt
gd_bundle-g2-g1.crt
Run Code Online (Sandbox Code Playgroud)
我假设f6f65901b1708ae5.crt是我的域名证书(但我不确定).无论如何,指南说我需要一个Elastic Load Balancer来安装SSL证书,所以我创建了一个.
我生成了私钥:
openssl rsa -in server.key -text
Run Code Online (Sandbox Code Playgroud)
和公钥认证:
openssl x509 -inform PEM -in f6f65901b1708ae5.crt
Run Code Online (Sandbox Code Playgroud)
我还被要求进入证书链.我不确定这是什么以及如何得到它,所以我猜到了命令:
openssl x509 -inform PEM -in gd_bundle-g2-g1.crt
Run Code Online (Sandbox Code Playgroud)
并输入以"----- BEGIN CERTIFICATE -----"开头的结果证书密钥
该指南继续说,然后我需要设置Cloudfront.我安装了aws命令行工具,为了生成我运行的PEM:
openssl rsa -in server.key -text > aws_private.pem
openssl x509 -inform PEM -in f6f65901b1708ae5.crt > aws_public.pem
openssl x509 -inform PEM -in gd_bundle-g2-g1.crt > aws_public.pem
Run Code Online (Sandbox Code Playgroud)
我上传了SSL证书:
aws iam upload-server-certificate --server-certificate-name mydomain_com \
--certificate-body file://aws_public.pem --private-key file://aws_private.pem …Run Code Online (Sandbox Code Playgroud) 我正在一个项目中,其中一项任务是为远程VPC中的实例提供AWS ELB服务。AWS ELB位于VPC A中,实例位于VPC B中。我的最初回答是:否,因为ELB是负载均衡器,而不是路由器。文档和与AWS ELB的配合使用表明,不支持或无法配置远程VPC中子网/实例的负载平衡。
我正在检查是否有人尝试过此方案以取得任何成功。
非常感谢您的任何回应或反馈。
amazon-ec2 amazon-web-services amazon-elb amazon-vpc aws-cli
我想将所有HTTP请求重定向到AWS中的https.我使用ELB作为ssl证书并使用ubuntu(64位)操作系统.
ubuntu amazon-s3 amazon-web-services amazon-elb amazon-route53
我正在分析一个公共路由的堆栈,该路由依赖于Elastic Load Balancer,它打开PM2暴露的端口,该端口使用koa模块启动节点应用程序.目前,IP已被记录,并且仅取决于X-Forwarded-For标头.如果使用手动创建此标头curl,则应用程序将其写为IP地址.
是否有一种简单的方法可以防止欺骗此标头或设置AWS的ELB,因此它会忽略手动插入的标头,或者是否有比欺骗性标头更好的方式来获取访问者的真实IP地址?
当我尝试为我的elb access_log创建s3存储桶时,terraform出现问题,我在下面得到以下错误:
Error applying plan:
1 error(s) occurred:
* module.elb-author-dev.aws_elb.elb: 1 error(s) occurred:
* aws_elb.elb: Failure configuring ELB attributes: InvalidConfigurationRequest: Access Denied for bucket: my-elb-access-log. Please check S3bucket permission
status code: 409, request id: 13c63697-c016-11e7-8978-67fad50955bd
Run Code Online (Sandbox Code Playgroud)
但是,如果我转到AWS控制台并手动将s3 Public访问权限授予所有人。重新运行terraform应用效果很好,请帮助我解决此问题。
module "s3-access-logs" {
source = "../../../../modules/aws/s3"
s3_bucket_name = "my-elb-access-data"
s3_bucket_acl = "private"
s3_bucket_versioning = true
s3_bucket_region = "us-east-2"
}
# elastic load balancers (elb)
module "elb-author-dev" {
source = "../../../../modules/aws/elb"
elb_sgs = "${module.secgrp-elb-nonprod-
author.security_group_id}"
subnets = ["subnet-a7ec0cea"]
application_tier = "auth"
access_logs_enabled = …Run Code Online (Sandbox Code Playgroud) 如果我的ec2启动配置发生任何更改,我将使用cloudformation UpdatePolicy属性执行滚动更新。使用按需实例时,这可以正常工作。但是当我使用竞价型实例时,出现以下错误:
Autoscaling rolling updates cannot be performed because the current launch configuration is using spot instances and MinInstancesInService is greater than zero.
Run Code Online (Sandbox Code Playgroud)
将MinInstancesInService属性设置为零可以使其正常工作,但是我会在3-5分钟左右的时间内停机。
有没有一种方法可以使用Cloudformation在不停机的情况下实现这一目标?否则,有人会指出一种更好的方法来自动执行此滚动更新过程,因为我有多个环境,而手动执行此操作很容易出错。谢谢
amazon-web-services amazon-elb aws-cloudformation autoscaling
amazon-elb ×10
amazon-ec2 ×3
amazon-s3 ×3
amazon-vpc ×2
amazon-ebs ×1
apache ×1
autoscaling ×1
aws-cli ×1
https ×1
node.js ×1
php ×1
pm2 ×1
spoofing ×1
ssl ×1
terraform ×1
tomcat ×1
ubuntu ×1