I am using the Amazon AWS ELB command line tools. Is there a way of finding out the instances attached to a particular Elastic Load Balancer (ELB)?
我阅读了整本亚马逊的文件,但我仍然感到困惑,或者我应该说不同的条款不堪重负.
我来自传统的网络托管环境,我理解的唯一概念是我拥有多少存储空间以及我允许的带宽量.
以下是我迄今为止对亚马逊以及我对其中很多问题的理解.
EC2 - 我假设我可以设置我的网络服务器(IIS)并运行我的.NET应用程序的实例?或者它已经为我设置了?
EBS - 对于数据库?如果没有,我从哪里获得数据库服务器?是否已安装数据库服务器(Sql server 2005或2008)?什么是快照获取请求?和快照投放请求?
S3 - 这是用来做什么的?我认为EBS是用于存储的,在这里很困惑.你为什么需要S3?
Elastic Load Balancing - 我认为负载平衡只是减轻Web服务器负担的一种方法.它如何与亚马逊合作?"弹性"负载平衡是什么意思?
地区之间的数据传输 - 这意味着什么?以及如何控制数据传入和传出的区域?
我的要求如下
另外,我真的不明白"如果你没有运行你的实例,关闭它或者它将被收费"的概念.我将建立一个理想的网站,以保持全天候.在什么情况下,您有条件地将实例上升或下降?
[编辑]
您如何准确监控您的使用情况?所以你不会对几千美元感到惊讶?你可以戴上帽子吗?我读过一些故事,其中AWS用户对300美元的账单感到惊讶,或者当他们在亚马逊上没有多少托管,也没有任何流量密集型网站时.
对不起,我是"云"计算的完全新手.试图赶上这里.
非常感谢提前
amazon-s3 amazon-ec2 amazon-ebs amazon-web-services amazon-elb
我有一个在两个EC2实例中运行的REST API应用程序,并且长时间使用AWS Classic Load Balancer.REST API的客户端依赖于响应头(例如Location).
我知道HTTP标头根据定义不区分大小写,但是(不幸的是)一些客户端忽略了这一点,并以区分大小写的方式检查标头(例如,他们希望Location以大写字母开头).
最近我改为AWS Application Load Balancer,现在我发现它将所有响应头转换为小写,因此客户端无法正确处理响应.
我在这里有几个问题.
我有一个socket.io聊天室运行,当我们在一台机器上运行时,其流量变得越来越大.我们使用ws库为套接字运行基准测试,它们的性能要好得多,这样可以更好地利用我们的硬件.这需要重写我们的应用程序.
我们的socket.io应用程序允许用户创建使用命名空间实现的私人聊天室.例如
localhost:8080/room/1
localhost:8080/room/2
localhost:8080/room/3
Run Code Online (Sandbox Code Playgroud)
当一切都在一个实例中时很容易,但现在我们正在寻求将这个容量扩展到多个节点.
我们在亚马逊的云中运行这个实例.以前看起来像缩放websockets是ELB的一个问题.我们注意到Amazon现在支持和支持websockets的应用程序负载均衡器.这听起来不错,但在阅读完文档之后我必须承认我并不知道这意味着什么.如果我使用带有数千个命名空间的socket.io,我只是将实例放在这个ALB后面,一切都会起作用吗?我的主要问题是:
如果x个用户加入命名空间,ALB会自动将我的消息重定向到适当的用户吗?所以假设我在ALB后面运行了5个vanilla socket.io实例.用户1创建名称空间.几个小时后通过,用户99999来了,并希望加入这个命名空间,是否需要编写任何其他代码来执行此操作,或者alb会重定向所有应该去的地方吗?发送和接收消息也是如此?
当有一堆系统充当WebSocket无人机和负载均衡器在这些无人机前面.当WebSocket请求进入LB时,它选择一个WebSocket无人机,并建立WebSocket.(我在ELB使用SSL ELB tcp SSL终止)
问题: 现在创建的WebSocket是否通过LB,或者LB是否将WebSocket请求转发到WebSocket无人机,因此客户端和WebSocket无人机之间存在直接链接?
如果WebSocket连接通过LB,这将使LB成为一个巨大的瓶颈.
删除LB并向客户端交付WebSocket无人机的直接IP可以绕过这个瓶颈,但需要自己创建这个逻辑,我打算这样做(取决于这个问题的答案).
关于这是如何正确的,我的想法是什么?
所以我查看了其他类似的问题,他们提供了解决方案,但似乎没有一个问题出于某种原因.所以,对于初学者来说,我的ELB就是这样设置的
HTTP (incoming) -> HTTP (instance)
HTTPS (incoming) -> HTTP (instance)
Run Code Online (Sandbox Code Playgroud)
因此,两个流量都应该在端口80上进行.这就行了,就像我使用http://mydomain.com或https://mydomain.com访问我的网站一样,它能够显示,即使我只有一个VirtualHost用于在80号港口.
问题是尝试将所有http流量重写为https.我用它来做基于端口(检查是否!443并重写为https),但现在一切都进入80,这将无法工作.所以我正在运行一个Apache服务器并有这个重写规则
RewriteEngine on
RewriteCond %{HTTP_HOST} www.(.+) [OR,NC] # Added
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^/?(.*) https://mydomain.com%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
但它似乎永远不会起作用.我还缺少其他线路吗?有没有办法检查它是否达到了这个条件?我试过了两个!https和http作为条件,但都没有奏效.
编辑:稍微将我的RewriteRule改为现在的状态,它仍然无法正常工作.我添加了一个额外的条件来重写www,这是有效的.HTTP:X-Forwarded-Proto要么没有,要么没有由负载均衡器设置
编辑:错误真的很愚蠢.我只是简单地连接到错误的实例.谢谢你忍住我的愚蠢
我在Elastic Beanstalk上有一个Node.js应用程序,它运行在负载均衡器(elb)后面的多个ec2实例上.
我的应用程序需要的原因,我不得不激活会话粘性.我使用自定义cookie"sails.sid"作为参考激活了"AppCookieStickinessPolicy".
问题是我的应用程序需要这个cookie才能正常工作,但是当我激活会话粘性时(通过基于持续时间的会话粘性或在我的情况下:应用程序控制的会话粘性),进入我的服务器的标头被修改并且我丢失了自定义cookie,由AWSELB(亚马逊ELB)cookie取代.
如何配置负载均衡器以不替换我的cookie?
如果我理解得很好,AppCookieStickinessPolicies必须保留我的自定义cookie但事实并非如此.我在某处做错了?
提前致谢
我的负载均衡器的描述:
{
"LoadBalancerDescriptions": [
{
"AvailabilityZones": [
"us-east-1b"
],
....
"Policies": {
"AppCookieStickinessPolicies": [
{
"PolicyName": "AWSConsole-AppCookieStickinessPolicy-awseb-e-y-AWSEBLoa-175QRBIZFH0I8-1452531192664",
"CookieName": "sails.sid"
}
],
"LBCookieStickinessPolicies": [
{
"PolicyName": "awseb-elb-stickinesspolicy",
"CookieExpirationPeriod": 0
}
],
"OtherPolicies": []
},
"ListenerDescriptions": [
{
"Listener": {
"InstancePort": 80,
"LoadBalancerPort": 80,
"InstanceProtocol": "HTTP",
"Protocol": "HTTP"
},
"PolicyNames": [
"AWSConsole-AppCookieStickinessPolicy-awseb-e-y-AWSEBLoa-175QRBIZFH0I8-1452531192664"
]
}
]
....
}
]
}
Run Code Online (Sandbox Code Playgroud) cookies amazon-ec2 amazon-web-services amazon-elb amazon-elastic-beanstalk
我有一个指向AWS ELB的子域(test.XXXX.com),它接受HTTP(80)和HTTPS(443)请求.我已为443的HTTPS连接配置了SSL认证.我已经尝试通过更改web.xml和server.xml来在Tomcat级别进行HTTP到HTTPS重定向,如中所述
但问题是我需要一个端点用于AWS ELB运行状况检查,该端点不执行HTTP到HTTPS重定向.我尝试了不同的解决方案但没有成功.我也试过了
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/XXXXX/XXXXXX.html</url-pattern>
</web-resource-collection>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)
我的服务器server.xml具有以下配置
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443" maxThreads="2000" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/XXXXX/XXXXX.keystore"
keystorePass="XXXXX" clientAuth="false" keyAlias="XXXX"
sslProtocol="TLS" protocol="org.apache.coyote.http11.Http11Protocol"/>
Run Code Online (Sandbox Code Playgroud)
但是当尝试通过浏览器访问它时,它会将异常作为ERR_TOO_MANY_REDIRECTS.
我有一个java API(接受HTTPS请求_打包成docker镜像,然后使用k8s集群部署在EC2之上。主EC2前面有一个ELB。
我可以向 ELB 发出 curl POST 请求,以便访问该 java API。
有时,即使当我看到 kube 日志时处理已成功,我的curl 请求也会永远等待响应。
对于 40 分钟左右的较大请求,会发生这种情况,25 分钟的请求可以获得正常响应。
您认为超时可能在哪里?我应该查看任何特定的配置参数吗?
客户端 (curl) --> ELB --> k8s --> 运行 java api 镜像的 pod
我认为这与 ELB 相关(我没有设置 IdleTimeout),但文档说默认值为 60 秒,尽管我可以获得 20 分钟请求的响应 "ConnectionSettings": { "IdleTimeout" }
我是 AWS 新手。我无法清楚了解 ALB 与 NLB 的区别。有人可以简单地解释一下吗?
amazon-elb ×10
amazon-ec2 ×6
websocket ×2
amazon-ebs ×1
amazon-s3 ×1
apache ×1
aws-application-load-balancer ×1
cookies ×1
http-headers ×1
kubernetes ×1
mod-rewrite ×1
node.js ×1
redirect ×1
socket.io ×1
ssl ×1
tomcat ×1