我编写了一个网络应用程序并将其部署在单个 EC2 实例(M1-large)上。
该应用程序的功能类似于一种聊天室(只是它除了发送消息之外还可以执行其他操作),允许智能手机用户在近距离(物理)距离(比如说 5 米以内)内进行交流。
这是我的第一个网络应用,对此我有一些疑问和问题:
由于这是一个非常有选择性的聊天室(您只会看到非常近的人),我不知道如何进行负载平衡:如果我以 2 个实例为例,一个在欧洲,一个在美国,我想将欧洲的人重定向到前者,将美国的人重定向到后者,如果我不能保证这种重定向,整个应用程序就毫无价值。有没有办法使用 Route 53 做到这一点?这样做有意义吗?一个大型实例还不够吗?
我尝试测试实例的高负载性能。因此,我编写了自己的应用程序,模拟每小时 200K 个请求,并将其运行在其他 EC2 实例上。似乎没有问题(除了某些请求的延迟增加,这对于同时接受大量连接的高 CPU 利用率来说听起来很正常)我的问题是,如果我预计有 500K 个用户,这看起来是否是一个很好的负载测试。我知道这是一个相当模糊的问题,但一个相当模糊的答案也足够了。
安全方面。我应该采取哪些一般预防措施来降低安全漏洞的风险?禁用防火墙中的所有端口(应用程序监听端口除外)是个好主意吗?还是说这多余。同样,这是一个相当模糊的问题。我将不胜感激任何一般性的答案。
谢谢
答案1
由于您的应用程序是基于邻近性的,因此您可以在不同地区设置服务器,几乎不需要串扰。利用 Route53 的“基于延迟的路由”功能。在大多数情况下,这应该会导致人们到达最近的服务器。但是,由于它不是“基于地理位置的路由”,因此无法保证。与单个大型实例相比,多个全球服务器的好处是您可以减少客户端和服务器之间的延迟。
如果您的模拟正确地代表了用户的使用情况,那么您的结果应该会告诉您很多信息。如果每小时 20 万个请求正确地代表了 50 万个用户的活动,那么您应该没问题。如果没有,请调整您的测试。关键是确保您的测试正确地代表了 50 万个用户,那么您的结果也将如此。
关闭安全组中对您的应用程序不重要的任何端口。不要让 RDP、SSH 或数据库端口保持打开状态。仅保持应用程序端口打开。