负载均衡器、服务器任务、拆分服务器和 AWS 实例
Load Balancers, server task, splitting servers and AWS instance
我正在尝试了解负载平衡和服务器的工作原理(云服务器或常规池服务器)。据我了解,负载均衡器将用户的请求重定向到 stress/connections 最少的服务器,这样无论有多少用户发出相同的请求,网页都可以快速加载。
我感到困惑的部分是每个服务器执行的任务。从我在网上看到的图表等来看,似乎有多个服务器执行不同的任务,例如发送视图文件(html)或发送静态内容或数据库服务器(MySQL).但我也听说这样做可能很糟糕,因为拆分服务器会使事情变得复杂,例如通过使用不同的 DNS,每个 DNS 都做不同的事情。所以我想我需要澄清的是,服务器是否只在一台服务器上完成它需要做的所有事情,所以我的意思是如果一个请求要求查看文件,它会转到与处理的服务器相同的服务器请求静态图像或 post 请求或获取请求等
关于 AWS 实例,这是否意味着每个实例只是您拥有的 "setup" 的另一个副本。这意味着一个实例有服务器 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 实例吗?
答案是服务器会执行您配置的任何操作。
有时人们设计他们的系统以便每个服务器都可以响应 任何 请求,有时他们有单独的服务器来执行单独的任务(例如,一些服务器处理移动请求,一些服务器处理身份验证请求,其他处理网络请求)。在 AWS 术语中,这些不同的服务器组将是单独的 目标组 并且 Application Load Balancer 将配置为根据 URL 的内容向不同的目标组发送请求.
不过……数据库服务器 从未 像上面显示的那样放置在负载平衡器后面。只有应用程序服务器与数据库服务器进行通信。这构成了一个 3 层架构:
Load Balancer -> Application Servers -> Database
通常的做法是将数据库放在单独的服务器(或服务器集群)上,以便它们独立于应用程序。这允许应用程序通过 adding/removing 个应用服务器进行扩展,而不影响数据库。
将静态内容卸载到 Amazon S3 也是值得的。这可以像更改 <img src=...>
标记中的 URL 一样简单。这提高了带宽,因为 Amazon S3 很大,这意味着通过应用程序服务器的流量较少。这改进了应用程序的缩放。
我正在尝试了解负载平衡和服务器的工作原理(云服务器或常规池服务器)。据我了解,负载均衡器将用户的请求重定向到 stress/connections 最少的服务器,这样无论有多少用户发出相同的请求,网页都可以快速加载。 我感到困惑的部分是每个服务器执行的任务。从我在网上看到的图表等来看,似乎有多个服务器执行不同的任务,例如发送视图文件(html)或发送静态内容或数据库服务器(MySQL).但我也听说这样做可能很糟糕,因为拆分服务器会使事情变得复杂,例如通过使用不同的 DNS,每个 DNS 都做不同的事情。所以我想我需要澄清的是,服务器是否只在一台服务器上完成它需要做的所有事情,所以我的意思是如果一个请求要求查看文件,它会转到与处理的服务器相同的服务器请求静态图像或 post 请求或获取请求等
关于 AWS 实例,这是否意味着每个实例只是您拥有的 "setup" 的另一个副本。这意味着一个实例有服务器 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 实例吗?
答案是服务器会执行您配置的任何操作。
有时人们设计他们的系统以便每个服务器都可以响应 任何 请求,有时他们有单独的服务器来执行单独的任务(例如,一些服务器处理移动请求,一些服务器处理身份验证请求,其他处理网络请求)。在 AWS 术语中,这些不同的服务器组将是单独的 目标组 并且 Application Load Balancer 将配置为根据 URL 的内容向不同的目标组发送请求.
不过……数据库服务器 从未 像上面显示的那样放置在负载平衡器后面。只有应用程序服务器与数据库服务器进行通信。这构成了一个 3 层架构:
Load Balancer -> Application Servers -> Database
通常的做法是将数据库放在单独的服务器(或服务器集群)上,以便它们独立于应用程序。这允许应用程序通过 adding/removing 个应用服务器进行扩展,而不影响数据库。
将静态内容卸载到 Amazon S3 也是值得的。这可以像更改 <img src=...>
标记中的 URL 一样简单。这提高了带宽,因为 Amazon S3 很大,这意味着通过应用程序服务器的流量较少。这改进了应用程序的缩放。