我是 AWS 和网络托管的新手。假设我目前有一台运行网站的服务器,流量开始增长到需要使用负载平衡的程度。假设我当前的服务器在装有 Ubuntu 的 EC2 实例上运行,并在 Apache 服务器上运行文件夹中的所有网站文件/var/www/
。如果我想添加负载平衡,我是否需要创建一个 EC2 实例并将相同的网站文件复制到其中?或者我只需要创建一个空的 EC2 实例,其余的都会自动完成?有点困惑它是如何工作的。
答案1
每个服务器都需要所有内容,您需要设置服务器和内容。这不是自动的。
保持服务器之间内容同步的选项:
- 版本控制(git 是相当标准的)
- 黄金 AMI(尽管这意味着每次代码更改都意味着更换所有服务器)
- 使用 Amazon Elastic File System 托管代码/资源(考虑延迟)
- rsync(某些内容可能已过时)
您可能还需要考虑数据库所在的位置。在许多情况下,AWS RDS 是一个不错的选择。当然,您可以继续使用一台服务器作为数据库服务器,甚至可以集群数据库服务器,但 RDS 很容易扩展(手动)。
集群中的服务器大小应相同,因为流量会平均分配给它们。您可能可以使用 ALB 将特定流量发送到特定服务器,进行某种手动负载平衡,但这不会给您带来任何冗余。
您应该考虑自动扩展。这将运行当前负载所需的服务器数量。在这种情况下,您通常最好使用更多、较小的服务器,而不是少量大型服务器,以便对所需的服务器进行更细粒度的控制。要实现这一点,您需要良好的自动化,例如包含所有软件的 AMI,最好是相当新的代码。当服务器启动时,您可以更新代码。
答案2
是的,您需要创建一个相同的(仅在配置中) ec2 实例,其中包含与/var/www
主实例相同的文件,并且当您进行更改时,您必须确保更改已应用于两个服务器。
我认为保持两个服务器站点配置相同的最佳方法是设置一个包含所有站点文件的 git 存储库,并在两个服务器中克隆它,同时设置git pull
每小时左右运行一次的 cron 作业。
您可以做的另一件事是创建一个弹性文件系统并将其安装在两个服务器上。有关此过程的信息可以找到这里。