我正在尝试学习负载平衡和服务器(云服务器或常规池服务器)如何工作。据我了解,负载平衡器将用户的请求重定向到压力/连接最少的服务器上,以便无论有多少用户发出相同的请求,网页都可以快速加载。 我感到困惑的部分是每个服务器执行的任务。从我从图表等网上看到的内容来看,似乎有多个服务器执行不同的任务,例如发送视图文件(html)或发送静态内容或用于数据库的服务器(MySQL)。但是我也听说这样做很不好,因为拆分服务器可能使事情变得复杂,例如,通过使用不同的DNS来各自处理不同的事情。因此,我想我需要澄清的是,服务器是否可以在一个服务器上完成它需要做的所有事情,所以我的意思是,如果一个请求正在请求一个视图文件,那么它将与处理该文件的服务器一起到达同一服务器静态图片请求,发布请求或获取请求等。
关于AWS实例,这是否仅表示每个实例只是您拥有的“设置”的另一个副本。意味着一个实例具有服务器A和数据库服务器A,但是另一个实例只是它的另一个副本,所以第二个实例也将具有服务器A和数据库服务器A?
Server A (for doing everything such as sending
view file, get requests static
assets etc.)
Server B (For database MySQL)
/
user ---> DNS ---> load b. - Server A (for doing everything such as
sending view file, get requests
static assets etc.)
Server B (For database MySQL)
\
Server A (for doing everything such as
sending view file, get requests
static assets etc.)
Server B (For database MySQL)
所以基本上我想问的是,负载均衡器重定向到所有服务器以执行相同的任务,还是负载均衡器将它们发送到具有不同任务的不同的单独服务器。如果是后者,它如何知道何时将其发送到服务器以让我们说提供静态文件;如果对此服务器有很多请求,负载均衡器将如何处理呢?
在我的小图中,我拥有的每组服务器(服务器A和服务器B)是AWS实例的什么样子吗?
答案 0 :(得分:2)
答案是服务器会执行您配置的服务器上要做的任何事情。
有时人们会设计系统,以便每个服务器都可以响应任何请求,有时他们会为单独的任务使用单独的服务器(例如,某些服务器处理移动请求,某些服务器处理身份验证请求,其他服务器处理Web要求)。用AWS术语,这些不同的服务器组将是单独的目标组,并且应将Application Load Balancer配置为根据URL的内容将请求发送到不同的目标组。
不过,...如上所示,数据库服务器从不放置在负载均衡器后面。只有应用程序服务器才能与数据库服务器通信。这构成了一个三层体系结构:
Load Balancer -> Application Servers -> Database
通常的做法是将数据库放置在单独的服务器上(或服务器集群),以使它们独立于应用程序。这使应用程序可以通过添加/删除应用程序服务器来扩展,而不会影响数据库。
将静态内容卸载到Amazon S3 也是值得的。这可以像更改<img src=...>
标记中的URL一样简单。由于Amazon S3庞大,这将提高带宽,这意味着通过应用程序服务器的流量减少。这样可以改善应用程序的可伸缩性。