当诸如在线商店之类的网站成为您业务的核心时,该网站通过流量高峰和服务器突然故障为客户提供服务的能力可能意味着大获胜与令人沮丧的损失之间的区别。
因此,虽然为工作设置单个虚拟服务器比以往任何时候都容易,但是值得花一些时间考虑一个高可用性集群。 在群集中,服务器架构的不同部分由单独的服务器实例处理,而不是在一台机器上运行所有组件。 在这样的设置中,您可以通过在负载增加时添加更多工作线程来扩展服务器,即使一个或多个工作线程由于任何原因中断也可以保持服务器运行。
做好充分准备后,您可以放心,今年的黑色星期五销售或突然出现的功能不会使您的在线商店倒闭。
在本教程中,您将学习如何使用ClusterCS和Amazon Web Services创建可扩展的服务器集群,以及如何使用它为基于WooCommerce的电子商务网站托管WordPress网站。
1.设置您的ClusterCS帐户
ClusterCS是云中服务器的控制面板。 它将常规控制面板的功能带到您的虚拟服务器和专用服务器,将它们全部收集在一个界面中。 该工具最初是为处理由Soft Dreams(其背后的公司)管理的托管帐户而创建的,因此已在实际生产环境中进行了良好的测试。
ClusterCS支持多服务器应用程序,例如我们将在本教程中构建的电子商务优化的WordPress网站,以及维护单个服务器。
首先,请访问ClusterCS网站并创建一个帐户。
一个免费帐户使您可以管理单个服务器以及在该服务器上运行的多达五个单独的域。 在多台服务器上拆分集群设置需要一个付费帐户,但是您将在本教程中看到的许多步骤也适用于单服务器设置。
2.启动一些虚拟服务器
作为基于云的控制面板,ClusterCS可与任何虚拟或专用服务器一起使用:您可以使用它来控制Digital Ocean , Amazon Web Services (AWS)甚至笔记本电脑上运行的虚拟机上的服务器。
在本教程中,我们将使用AWS。 如果您还没有AWS账户,请注册一个 。 然后,登录到AWS控制台为我们的网站设置创建服务器实例。
我们将在本教程中创建的设置如下:
- 负载均衡器 (
lb
):此实例将是群集的向外部分。 它还将保存您网站的文件。 - 两个(或更多)应用程序服务器 (
app1
,app2
):这些实例将运行Web服务器。 拥有多于一台应用程序服务器可以使设置更具弹性-如果其中一台出现故障,其他服务器仍可以为应用程序的页面提供服务。 另外,添加更多应用程序服务器是一种响应流量增加的快速方法。 - 数据库服务器 (
db
):将数据库与应用程序服务器分开可以提高安全性,同时使所有使用它的服务器都可以使用该数据库。
让我们启动并运行服务器!
步骤1:创建一个安全组
为群集启动服务器时,重要的是要确保它们可以互相通信,并且ClusterCS可以使用SSH到达它们。
在Amazon Web Services,使用安全组来完成防火墙配置。 我们将在一开始就创建一个权限,但是如果您在任何时候遇到连接问题,都可以随时返回以验证和修改设置。
在AWS EC2管理控制台的左侧菜单中,单击Security Groups 。 然后单击“ 创建安全组” 。
在打开的弹出窗口中,给您的安全组一个名称和描述。 然后,单击“ 添加规则”以一个一个地添加新规则。
首先,允许从ClusterCS IP地址85.9.60.46/32
和193.226.133.91/32
进行SSH访问。 然后,允许从任何地方进行HTTP和HTTPS访问(端口80
和443
),以便您的客户可以访问您的网站。
此时,您的安全组设置将如下所示:
单击创建以保存更改。
现在,您已经创建了安全组,该安全组具有一个ID,可用于配置群集服务器实例之间的访问。
在安全组列表中,选择刚创建的安全组,然后打开其“ 入站”选项卡。 您将看到刚刚创建的规则。 复制安全组的ID(以sg-
开头的字符串),然后单击“ 编辑”按钮以修改规则。
添加以安全组的ID作为流量来源的新规则。 您可以选择允许此来源所有TCP流量或者,如果你愿意为更具体的,使用的端口下面的列表: 80
, 443
, 25
, 110
, 143
, 465
, 587
, 993
, 995
, 2049
, 111
, 892
, 662
, 32803
, 21
, 2049
, 111
, 892
, 662
, 32769
, 8080
, 8081
,和8082
。
此时,您的配置将如下所示:
为了能够从您的计算机连接到AWS实例,请为您的IP添加SSH规则。 AWS控制台为此提供了一个选项(“我的IP”),因此您无需查找IP。
最后,允许上传文件到服务器集群FTP访问,添加端口21
和50500
- 50900
。
完成后,就可以启动一些服务器了。
步骤2:启动四个AWS EC2服务器实例
设置好安全组之后,就该启动集群的AWS实例了。 AWS提供了许多用于自定义虚拟服务器的选项,但是在大多数情况下,默认选项是一个不错的选择。
返回到EC2仪表板,然后单击启动实例按钮。
单击该按钮将启动一个七步向导,以启动服务器。
在步骤1中,您将选择虚拟服务器的基础映像。 通过单击旁边的选择按钮,选择第一个选项Amazon Linux AMI。
在步骤2中,选择适合您网站需求的实例类型; 较小的实例将无法处理较大实例的流量,但是较大实例的价格将更高。 考虑机器将在集群中扮演的角色。 例如,您可以响应服务器负载的增加而快速添加新的应用程序服务器,但是添加数据库资源要困难得多。 这就是为什么在比应用程序服务器具有更多内存的功能更强大的服务器上运行数据库是一个好主意的原因。
在“启动向导”的第3步到第5步中,遍历选项以查看是否有您要修改的内容,但是最有可能的是,默认选项将很适合您的设置。
在步骤6中,选择选项选择现有的安全组 ,然后选择我们上面定义的安全组。
最后,检查您的设置并单击启动以启动实例。
作为最后一步,AWS将要求您指定并下载用于访问服务器的SSH密钥对。
选择“ 创建新的密钥对”选项,然后输入密钥对的描述性名称。 然后单击“ 下载密钥对”以下载私钥文件。
将密钥保存在计算机上的安全位置。 我喜欢将所有SSH密钥都放在~/.ssh
目录中,但是您可以选择任何位置。
下载密钥后,“ 启动实例”按钮将变为可单击状态。 单击它,然后等待几分钟以启动实例。
如果要一个实例启动一个实例,请对下一个实例重复该过程,直到群集的所有四台服务器都已启动并正在运行。
步骤3:将弹性IP地址附加到您的实例
启动实例时,AWS会为您的实例分配IP地址。 停止实例将释放其IP地址。 由于ClusterCS依赖于服务器的IP地址进行连接,因此如果出于任何原因需要重新启动实例,可能会导致麻烦。
为了解决此问题,您可以使用AWS的弹性IP地址功能。
弹性IP地址是可以附加到任何服务器实例的永久IP地址。 通过在ClusterCS配置中使用该地址,即使实例已停止,也可以使其指向实例。
单击AWS控制台左侧菜单中的弹性IP 。 然后,单击“ 分配新地址”按钮。
选择“ VPC”作为“ 范围” ,然后单击“ 分配” 。 IP地址将立即分配给您使用。
右键单击IP地址,然后选择“ 关联地址”将IP链接到EC2服务器实例。
单击实例文本字段。 然后,从显示所有实例的下拉菜单中选择一个实例。 最后,点击关联 。 对其余的EC2实例重复该过程。
现在,即使重新启动服务器,也可以使用其弹性IP地址访问服务器。
步骤4:验证您可以访问服务器
一旦EC2实例启动并运行,在移至ClusterCS之前,最好先确认您可以连接到它们。
首先,更改SSH密钥的权限:
chmod 400 ~/.ssh/key_name.pem
接下来,从EC2仪表板中查找实例的公共IP地址( IPv4 Public IP ):
然后,例如使用命令行客户端(如果使用的是Windows,则使用PuTTY)连接到它:
ssh -i ~/.ssh/tutorial-clustercs.pem ec2-user@54.162.85.168
如果连接时遇到问题,请返回“安全组”设置,并确保所有必需的端口都可访问。
当看到可以连接到服务器时,就可以移至ClusterCS来为集群中的服务器设置软件。
3.设置服务器群集
服务器实例现在已启动并正在运行。 现在是时候配置它们,以作为多服务器群集的一部分来运行您的电子商务网站。 我们将使用ClusterCS控制面板执行此操作。
ClusterCS管理员分为两个部分: 服务器和域 。
“服务器”部分定义了基础系统:服务器配置和在构成该系统的一台或多台计算机上运行的软件。 我们将仔细研究“域”部分,该部分指定在低级配置之上运行的客户帐户和站点。
步骤1:将服务器实例添加到群集
单击“ 管理服务器”以开始配置集群。 如果使用免费版本,将无法创建集群,但是设置单个服务器的步骤与本教程的本部分非常相似。
单击添加集群 。
然后,在下一页上,向下滚动到“ 添加新服务器”部分。 在这里,您会看到一些说明,然后是表格。
要将第一台服务器添加到群集,请在表单中填写以下信息:
- 服务器IP :服务器的公共IP地址。 您可以从EC2仪表板找到它。
- SSH端口 :22
- 用户 :
ec2-user
- 登录类型 :SSH密钥
- 主机名 :使您可以轻松跟踪机器功能的名称。 该字段仅用作标识符,因此您可以使用任何喜欢的名称,例如,
lb
表示负载均衡器,app1
表示第一个应用程序服务器,依此类推。
当选择“ SSH密钥”作为登录类型时,将显示用于输入SSH密钥的文本区域。 启动机器时,复制从AWS下载的.pem
文件的内容,并将其粘贴到此文本区域中。 将“ SSH密钥密码”字段保留为空。
所有数据放置到位后,单击“ 下一步” 。
ClusterCS现在将连接到服务器,并验证它是否符合安装程序的要求。 检查完成后,您将看到以下结果。
单击“ 将服务器添加到群集池” 。
您会看到该服务器已添加到将要组成集群的服务器列表中。
向下滚动并为其余三台服务器重复该过程。
然后,单击“ 继续设置”以配置群集以及希望在其不同服务器上运行的服务。
步骤2:配置群集
现在,所有服务器都可供ClusterCS使用,您可以开始为每个服务器选择角色的有趣部分。
给您的设置起一个名字,然后选择一个配方和模板配置,以此作为配置的基础。
ClusterCS为基于PHP的应用程序提供了一个优化的起点,称为智能Web服务器(优化的LAMP) 。 在整个配置在单个服务器上运行的单机设置中,可以立即使用此配方。
在群集设置中,您将需要进行更多配置。
单击自定义打开详细视图。 您将看到以下“层”列表,这些层是软件模块的组合,共同为服务器提供了功能。 可以配置层中的所有功能,还可以创建新层并将新应用程序添加到现有层。
从第一层防火墙开始 , 单击标题旁边的“ 管理”链接。 您将看到以下视图,用于指定该层的详细信息。
在左侧,您可以选择组成该层的模块(我们将使用默认的模块集,因此可以保留该部分)。
在右侧,您可以选择将运行此层的服务器。 防火墙是集群中每台服务器都需要的设备,因此请通过单击所有四台服务器的名称来选择它们。
然后单击“ 保存”以返回到群集配置视图。 现在,防火墙层如下所示:
遍历集群中的其余各层,并创建以下配置:
层 | 伺服器 |
---|---|
防火墙功能 | lb , db , app1 , app2 |
智能交通管理器 | lb |
网络服务器 | app1 , app2 |
数据库 | db |
电子邮件 | 未使用,从配置中删除 |
网络邮件 | 未使用,从配置中删除 |
存储 | lb , app1 , app2 |
实用工具 | app1 , app2 |
在本教程中,不需要电子邮件,因此我从配置中删除了与电子邮件相关的图层。 如果要在设置中使用电子邮件,建议为它添加一个单独的服务器实例。 这样,您的网络服务器问题就不会干扰您的电子邮件,反之亦然。
我在负载平衡器机器和应用程序服务器上激活了存储层。 稍后,在配置站点时,我们将选择lb
服务器作为保存其文件的服务器。 其他两台计算机将使用NFS安装到它,因此它们也将有权访问数据。 这样,您的网站将不再依赖任何单个应用程序服务器,并且您可以自由地上下扩展它们。
当一切看起来不错时,请单击“ 保存”以保存您的配置并在服务器上开始安装过程。
完成安装大约需要20分钟,具体取决于群集的大小。
4.配置域
现在,您已经创建了一个服务器群集,其中包含一个数据库服务器,两个应用程序服务器和一个负载均衡器,将流量小心地路由到不同的实例。 现在是时候通过建立一个在其上运行的网站来开始使用该集群。
单击ClusterCS顶部菜单中的“域” 。
然后,点击添加域 。
在此屏幕上,您可以指定如何将群集(或单个服务器)用于您的域。
- 域名 :您网站的域名。 您可以在ClusterCS之外配置域的DNS设置(将该域指向负载均衡器实例的公用IP地址),也可以选中屏幕底部的Enable DNS Management选项,然后使用ClusterCS的名称服务器。
- 用户名 / 密码 :您(或您的客户)将使用FTP来访问站点的用户名和密码组合。
- 登录类型 :您要使用(或让客户使用)访问服务器的方法。 您仍然可以使用SSH密钥方法连接到基础AWS实例,但这可能不是您希望客户或其他站点管理员执行的操作。
- 服务器 :域将在其上运行的服务器或服务器群集。 选择您刚刚创建的集群。
- 存储位置 :将在其上存储站点文件的服务器。 如前所述,选择负载平衡器服务器(例如lb WooCommerce Cluster )。
- 入口点 :群集中的服务器实例,流量通过该服务器实例到达您的网站。 这应该指向可以将流量定向到群集中正确服务器的负载平衡器实例。
- IP :负载均衡器的公共IP
当设置看起来不错时,单击添加 。
一旦橙色的“进行中”文本更改为“活动”,就可以使用该域了。 此步骤通常只需要几分钟。
可选:配置SSL
在处理敏感客户信息(例如在线商店中的人的订单)的任何网站上,建议使用SSL加密用户与服务器之间的流量。
使用ClusterCS,可以轻松设置SSL。 在域面板中,点击SSL 。 您将看到三种不同的SSL配置方式。
我们将使用Let's Encrypt ,这是一个免费的,广受信任的证书颁发机构,该证书颁发机构由Mozilla等大型组织支持,并旨在加速网络向安全浏览的进程。
单击“ 安装让我们加密”开始安装。
给证书命名,输入您的电子邮件地址,然后选择要为其创建证书的域名。 选中自动续订复选框,这样您将始终拥有有效的SSL证书。
然后单击开始按钮,接受显示的确认弹出窗口,然后等待证书生成完成。
证书准备就绪后,您将看到一个包含其信息的屏幕。
现在可以使用“加密我们的SSL”证书了。
配置服务器群集的防火墙,以允许从端口443访问负载平衡器,并且您的网站已准备就绪,可以接受HTTPS流量。
在“ 服务器”仪表板上,群集旁边,单击“ 防火墙” 。 然后向下滚动到页面底部以添加新规则。
使用以下信息设置新的防火墙规则:
- 服务器 :
lb
(您的负载均衡器实例) - 协议 :任何
- 状态 :任何
- 来源IP :
any
- (来源) 端口频谱 :全部
- 目的IP :
any
- (目标) 端口频谱 :精确
- 港口 :
443
- 行动 :允许
- 活动 :已检查
单击添加按钮添加配置,然后单击应用按钮执行服务器集群中的更改。
5.设置WordPress
您现在可以设置WordPress。 ClusterCS设置的优点在于,即使您使用的是多台服务器,安装也与使用单台服务器或共享主机的安装没有什么不同。
步骤1:为您的电子商务站点创建数据库
首先创建数据库。 在“ 域”面板中,选择“ 数据库” 。 然后,单击添加数据库 。
在下一页上,输入数据库的名称(例如wordpress
),然后单击创建 。
在下一页上,您会注意到现在已经添加了数据库。
单击添加新用户按钮以创建一个新用户。
当安装程序要求您选择数据库用户可以从中连接数据库的主机时,请选择Anyhost 。 即使它们在单独的服务器上运行,这也将允许应用程序服务器连接到数据库。
添加用户后,单击用户名旁边的“ 关联”以授予用户对该数据库的访问权限。
在下一页上,您将能够选择该数据库中用户的权限。 单击“ 全部检查” ,为用户提供对数据库的完全访问权限。 然后,单击“ 关联用户”以应用这些更改。
现在可以使用数据库了。
步骤2:安装WordPress
下载最新的WordPress版本并使用FTP(使用创建域时指定的用户名和密码)将其上传到新站点。 如果您已经配置了DNS设置,请连接到您域的URL。 您还可以使用负载均衡器实例的公共IP地址。
将WordPress上传到站点的public_html
目录后,在浏览器中打开网站的URL并运行WordPress安装。
使用以下数据库信息:
- 数据库名称 :您刚创建的数据库的名称。
- 用户名:刚创建的数据库用户的名称。
- 密码 :您为数据库用户选择的密码。
- 数据库主机 :数据库服务器实例的专用 IP。 您可以在AWS EC2仪表板上找到此信息。 私有IP地址用于Amazon虚拟私有云内的服务器到服务器通信。
准备好WordPress安装后,请继续设置WooCommerce以及您要在电子商务网站上使用的任何其他插件和主题。
然后,返回进行一些最终的优化,并了解如何向上和向下扩展群集。
6.使用ClusterCS优化WordPress设置
现在,您已经在ClusterCS上配置了多服务器WordPress网站。 该站点安全,稳定,组织良好且易于扩展。 但是,当您的在线商店或其他网站获得大量流量并且需要扩展服务时,您该怎么办?
步骤1:添加应用服务器
在这里,您将看到集群设置的强大功能:由于我们前面所做的工作,当您需要更多处理能力时,您可以简单地将更多服务器添加到集群中。
首先,在AWS上启动一个新的服务器实例,确保它使用相同的SSH密钥对,并且与集群中的其他服务器属于同一安全组。
然后,在ClusterCS 管理服务器仪表板中,单击管理以更新集群的首选项。
一直向下滚动,然后点击添加服务器 。
从上方重复将服务器添加到群集池的步骤。
单击继续以设置和配置服务器的层。 选择与app1
和app2
服务器上相同的所有软件。 然后单击“ 保存”以应用更改并等待,直到配置完成。
您的网站现在在三台应用程序服务器上运行,而不是两台。
第2步:缓存
就像将新服务器添加到集群一样容易,这不是您唯一可以响应不断增长的服务器需求的方法。 在“ ClusterCS域”仪表板的“ 速度”部分,您可以配置规则,以处理应如何处理进入您网站的请求。
在使用“智能Web服务器”配方启动集群时,您已经进行了一些优化:Apache处理PHP流量时,存在一条规则,即“静态文件到Lighttpd”,该规则告诉负载均衡器进行路由向Lighttpd请求静态文件(例如图像)以减轻Apache的负担。
在该规则之下,您会注意到用于配置自己的配置集的部分。
您可以使用此工具执行许多操作,但我们将介绍最有效的方法之一:使用Nginx缓存单个页面。
填写以下信息:
- 设置名称 :为您的配置指定一个描述性名称,例如“ Cache Shop Front Page”。
- 运算符 :选择是否需要匹配所有条件才能应用(和)规则,或者仅一个条件就足够(或)。
- 条件 :根据需要添加任意数量的条件以指定规则。 您可以基于路径,cookie,IP,方法,引荐来源网址,用户代理或动态值来创建条件。 在这种情况下,选择
path
和ends_with
,然后输入商店页面的路径,例如/shop
。 然后点击添加 。 - 操作:选择对符合这些条件的请求执行的操作。 要缓存商店页面,请选择
cache_with
作为操作,选择Smart Traffic Manager / Nginx
作为其参数。
单击添加集 。 然后,单击“ 执行”将更改应用于您的服务器群集。
现在,将使用Nginx缓存页面,这意味着在Apache服务器上运行PHP请求所花的时间更少。
结论
在本教程中,您学习了如何使用ClusterCS来设置AWS服务器集群以及在其之上的WordPress网站。 我们还研究了上下扩展站点以及配置缓存以处理大量流量高峰的方法。
如您所见,这些步骤也可以应用于较小的单服务器设置,或者,如果您想更深入地了解设置的细节,ClusterCS也可以提供更多选择。
访问ClusterCS 网站和知识库以了解更多信息。 ClusterCS员工也随时准备回答您的问题并帮助您进行服务器设置。