本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
演练:设置 Amazon EFS 服务器并提供Amazon EFS 文件
您可以让运行 Apache Web 服务器的 EC2 实例提供存储在 Amazon EFS 文件系统上的文件。它可以是一个 EC2 实例,或者如果您的应用程序需要,您可以让多个 EC2 实例提供来自 Amazon EFS 文件系统的文件。下面的过程描述了具体操作步骤。
-
通过创建 Auto Scaling 组,在多个 EC2 实例上设置 Apache Web 服务器。您可以使用 Amazon EC2 Auto Scaling 创建多个 EC2 实例,该Amazon服务允许您根据应用程序需求增加或减少组中 EC2 实例的数量。当您有多个 Web 服务器时,还需要一个负载均衡器在它们之间分布请求流量。
注意
对于这两个过程,您都可以在美国西部(俄勒冈)区域 (us-west-2
) 中创建所有资源。
单个 EC2 实例提供文件
按照步骤在一个 EC2 实例上设置 Apache Web 服务器,为你在 Amazon EFS 文件系统中创建的文件提供服务。
-
按照入门练习中的步骤操作,以便您具有包含以下内容的可正常工作的配置:
-
Amazon EFS 文件系统
-
EC2 实例
-
文件系统挂载在 EC2 实例上
有关说明,请参阅 亚马逊 Elastic File System 入门。在执行这些步骤时,请记下以下内容:
-
EC2 实例的公有 DNS 名称。
-
在启动 EC2 实例的同一可用区中创建的挂载目标的公有 DNS 名称。
-
-
(可选) 您可以选择从入门练习中创建的挂载点卸载文件系统。
$ sudo umount ~/
efs-mount-point
在本演练中,您将为文件系统创建另一个挂载点。
-
在您的 EC2 实例上,安装 Apache Web 服务器并进行如下配置:
-
连接到 EC2 实例并安装 Apache Web 服务器。
$
sudo yum -y install httpd -
启动 服务。
$
sudo service httpd start -
创建挂载点。
首先请注意,
DocumentRoot
文件中的/etc/httpd/conf/httpd.conf
指向/var/www/html
(DocumentRoot "/var/www/html"
)。您将将 Amazon EFS 文件系统安装到文档根目录下的子目录中。
在下创建一个名
efs-mount-point
为用作文件系统的挂载点的子目录/var/www/html
。$
sudo mkdir /var/www/html/efs-mount-point -
使用以下命令挂载您的 Amazon EFS 文件系统。
file-system-id
替换为文件系统的 ID。$
sudo mount -t efsfile-system-id
:/ /var/www/html/efs-mount-point
-
-
测试设置。
-
在入门练习中创建的 EC2 实例安全组中添加规则,以允许 TCP 端口 80 上来自任何位置的 HTTP 流量。
添加规则后,EC2 实例安全组将具有以下入站规则。
-
创建示例 html 文件。
-
将目录更改为装载点。
$ cd /var/www/html/efs-mount-point
-
创建一个名为的子目录
sampledir
并更改所有权。$
sudo mkdir sampledir$
sudo chown ec2-user sampledir$
sudo chmod -R o+r sampledir更改目录,以便可以在
sampledir
子目录中创建文件。$
cd sampledir -
创建示例
hello.html
文件。$ echo "<html><h1>Hello from Amazon EFS</h1></html>" > hello.html
-
-
打开浏览器窗口并输入访问该文件的 URL (它是 EC2 实例的公有 DNS 名称,后跟文件名)。例如:
http://
EC2-instance-public-DNS
/efs-mount-point/sampledir/hello.html
现在,您正在提供存储在 Amazon EFS 文件系统中的网页。
-
注意
此设置不会将 EC2 实例配置为在启动时自动启动 Web 服务器 (httpd),也不会在启动时挂载文件系统。在下一个演练中,您将创建一个启动配置来进行这种设置。
多个 EC2 实例提供文件
按照步骤在多个 EC2 实例的 Amazon EFS 文件系统中提供相同的内容,以提高可扩展性或可用性。
-
按照步骤 1:创建您的亚马逊 EFS 文件系统练习中的步骤创建和测试 Amazon EFS 文件系统。
重要
对于本演练,您不使用在入门练习中创建的 EC2 实例,而是启动新的 EC2 实例。
-
使用以下步骤在 VPC 中创建负载均衡器。
-
定义负载均衡器
在基本配置部分中,选择您的 VPC,您还会在其中创建 EC2 实例以挂载文件系统。
在选择子网部分中,选择所有可用的子网。有关详细信息,请参阅下一节中的
cloud-config
脚本。 -
分配安全组
为负载均衡器创建一个新安全组,以允许从任何位置通过端口 80 进行 HTTP 访问权限,如下所示:
Type:HTTP
-
Protocol:TCP
-
Port Range:80
-
Source:Anywhere (0.0.0.0/0)
注意
一切就绪后,您还可以更新 EC2 实例安全组入站规则访问,以便仅允许来自负载均衡器的 HTTP 流量。
-
配置运行状况检查
将 Ping 路径值设置为
/efs-mount-point/test.html
。efs-mount-point
是您在其中挂载文件系统的子目录。在此过程的稍后步骤中您要向其中添加test.html
页面。
注意
请勿添加任何 EC2 实例。稍后,您将会创建 Auto Scaling 组,并在其中启动 EC2 实例和指定该负载均衡器。
有关创建负载均衡器的说明,请参见 Elastic Load Balan cing 用户指南中的 Elastic Load Bal ancing 入门。
-
创建包含两个 EC2 实例的 Auto Scaling 组。首先,您将创建一个描述实例的启动配置。然后,您可以通过指定启动配置来创建 Auto Scaling 组。以下步骤提供您指定的配置信息,以便从 Amazon EC2 控制台创建 Auto Scaling 组。
-
从左侧导航窗格的 Auto Scaling 下面选择启动配置。
-
选择创建 Auto Scaling 组以启动向导。
-
选择 Create launch configuration(创建启动配置)。
-
从快速入门中,选择最新版本的亚马逊 Linux 2 AMI。这是您在入门练习的步骤 2:创建您的 EC2 资源并启动您的 EC2 实例中使用的同一 AMI。
-
在高级部分中,执行以下操作:
-
对于 IP 地址类型,请选择向每个实例分配公有 IP 地址。
-
在用户数据框中,复制/粘贴以下脚本。
您必须通过提供
file-system-id
和aws-
region 的值来更新脚本(如果您完成了入门练习,则在 us-west-2 区域创建了文件系统)。在脚本中,注意以下方面:
-
该脚本会安装 NFS 客户端和 Apache Web 服务器。
-
echo 命令在
/etc/fstab
文件中写入以下条目,以指定文件系统的 DNS 名称及其挂载子目录。此条目确保在每次系统重启后都挂载该文件。请注意,文件系统的 DNS 名称是动态构建的。有关更多信息,请参阅使用 DNS 名称在 Amazon EC2 上挂载:file-system-ID
.efs.aws-region
.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults -
创建
efs-mount-point
子目录并在其上装载文件系统。 -
创建一个
test.html
页面,以便 ELB 运行状况检查可以找到该文件(在创建负载均衡器时,您将此文件指定为 ping 点)。
有关用户数据脚本的更多信息,请参见 Amazon EC2 用户指南(适用于 Linux 实例)中的添加用户数据。
#cloud-config package_upgrade: true packages: - nfs-utils - httpd runcmd: - echo "$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).
file-system-id
.efs.aws-region
.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults" >> /etc/fstab - mkdir /var/www/html/efs-mount-point - mount -a - touch /var/www/html/efs-mount-point/test.html - service httpd start - chkconfig httpd on -
-
-
对于分配安全组,请选择选择一个现有的安全组,然后选择您为 EC2 实例创建的安全组。
现在,使用以下信息配置 Auto Scaling 组的详细信息。
-
对于 Group size (组大小),选择
Start with 2 instances
。您将创建两个 EC2 实例。 -
从 Network (网络) 列表中选择您的 VPC。
-
选择在上一步中创建启动配置时,在用户数据脚本中指定挂载目标 ID 时使用的同一可用区中的子网。
-
在 “高级详细信息” 部分中
-
对于负载均衡,请选择从弹性负载均衡器接收流量,然后选择您为本练习创建的负载均衡器。
-
对于运行状况检查类型,请选择 ELB。
-
-
按照 Amazon EC2 Auto Scaling 用户指南中的设置扩展和负载平衡应用程序中的说明创建 Auto Scaling 组。使用上述表格中的信息 (如果适用)。
-
成功创建 Auto Scaling 组后,您将具有两个安装了
nfs-utils
和 Apache Web 服务器的 EC2 实例。在每个实例上,验证您是否安装了装有 Amazon EFS 文件系统的/var/www/html/efs-mount-point
子目录。有关Connect 方式,请参见 A mazon EC2 用户指南(适用于 Linux 实例)中的连接到您的 Linux 实例。注意
如果您在启动 Amazon EC2 实例时选择亚马逊 Linux AMI 2016.03.0 亚马逊 Linux AMI,则无需安装,
nfs-utils
因为默认情况下,它已包含在 AMI 中。 -
创建示例页面 (index.html)。
-
更改目录。
$ cd /var/www/html/efs-mount-point
-
为
sampledir
创建一个子目录并更改所有权。然后更改目录,以便可以在sampledir
子目录中创建文件。如果您已按照前面的 单个 EC2 实例提供文件 操作,则您已经创建了sampledir
子目录,因此,可以跳过该步骤。$ sudo mkdir sampledir $ sudo chown ec2-user sampledir $ sudo chmod -R o+r sampledir $ cd sampledir
-
创建示例
index.html
文件。$ echo "<html><h1>Hello from Amazon EFS</h1></html>" > index.html
-
-
现在,您可以测试设置。使用负载均衡器的公有 DNS 名称访问 index.html 页面。
http://
load balancer public DNS Name
/efs-mount-point/sampledir/index.html负载均衡器向某个运行 Apache Web 服务器的 EC2 实例发送请求。然后,Web 服务器提供存储在 Amazon EFS 文件系统中的文件。