零基础5分钟上手亚马逊云科技核心云开发知识- 跨服务器文件共享存储

简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我将每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术基础解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次我将介绍如何跨3台服务器创建和挂载亚马逊云科技文件共享存储EFS,并利用文件共享存储构建分布式系统,让集群内的各个服务器访问相同的数据集或配置文件。本方案架构图如下:

方案所需基础知识

什么是亚马逊云科技 EFS?

亚马逊云科技 Elastic File System(EFS)是一种简单、可扩展的弹性文件存储服务,专为使用 Amazon EC2 实例的工作负载设计。EFS 提供了一个可共享的文件存储,允许多个 EC2 实例同时访问文件系统,且可以自动扩展或收缩,以适应存储需求的变化。

EFS 的优势

弹性扩展

EFS 会根据存储需求自动扩展或缩小,无需预先分配存储容量,确保用户只需为实际使用的存储空间付费。

高可用性和持久性

数据自动分布在多个可用区内,提供 99.999999999% 的数据持久性和高可用性。

简单易用

无需复杂的配置即可轻松挂载到多个 EC2 实例,支持标准的 NFS 协议,方便集成现有应用。

安全性

提供了静态数据和传输数据的加密功能,并与亚马逊云科技的 IAM 结合,确保文件系统的安全访问控制。

EFS 的应用场景

容器存储

EFS 可以为容器化应用提供共享存储,适合使用 Amazon ECS 和 EKS 的工作负载。

Web 服务和内容管理

为 Web 服务器提供集中存储,多个服务器可以共享文件系统中的静态内容。

大数据和分析

为大数据分析应用提供可扩展的存储,用于存储和处理大量数据集。

开发和测试环境

为多个开发和测试实例提供共享文件存储,简化环境配置和管理。

本方案包括的内容:

1. 创建和配置EFS文件共享存储

2. 将EFS文件共享存储挂在到EC2服务器上

3. 通过不同的服务器访问EFS存储

4. 在不同EC2服务器之间通过EFS存储共享文件

项目搭建具体步骤:

  1. 进入亚马逊云科技控制台,进入到EC2服务
  1. 点击左侧栏的"Security Group",为EFS存储创建安全组防火墙
  1. 为安全组起名"PetModels-EFS-1-SG",并选择安全组所在VPC和添加防护墙规则。
  1. 在防火墙入站规则中添加允许NFS协议,允许对象选择"webserver",为EC2服务器并点击创建。
  1. 下面进入到EFS服务中,点击"create file system"创建EFS存储
  1. 为存储起名"PetModels-EFS-1",并选择存储所在VPC网络。
  1. 取消勾选自动备份,存储生命周期管理统一选择"None"
  1. 在存储类型中选择"Bursting",即为根据存储数据量自动扩展。
  1. EFS存储创建的最佳实践是在每个可用区AZ都创建一个EFS存储节点保障可用性,第一次测试创建我们只创建一个可用区节点。移除us-east-1b和us-east-1c的节点,将us-east-1a的节点安全组替换成我们刚创建的安全组"PetModels-EFS-1-SG"。持其他配置默认后创建EFS存储。
  1. 接下来我们点击进入到我们刚创建的EFS存储,点击"Attach"将EFS存储挂载到EC2服务器上。
  1. 点击后会弹出挂载EFS存储的Linux命令,需要在EC2服务器操作系统中执行。
  1. 接下来我们点击位于us-east-1a可用区中的EC2服务器,并选择connect SSH连接到服务器中。
  1. 进入到EC2服务器Linux命令行,运行命令以下命令安装EFS管理客户端。
bash 复制代码
sudo yum install -y amazon-efs-utils
  1. 接下来我们运行以下Linux命令,创建数据文件夹,并且将EFS存储挂载到该文件夹下。
bash 复制代码
mkdir data
sudo mount -t efs -o tls fs-06f8a695410a35a63:/ data
  1. 进入该文件夹,按照以下命令创建一个共享文件"efs-1-setuo.log",内容为"efs-1 mounted in site A"。
bash 复制代码
cd data
sudo bash -c "cat >> efs-1-setup.log"
efs-1 mounted in site A
  1. 接下来我们回到EFS存储节点配置界面,在us-east-1b中创建一个新的存储节点,并配置安全组,点击创建。
  1. 我们再通过SSH进入到位于us-east-1b可用区的EC2服务器中

18. 利用相同的命令安装efs管理客户端。

bash 复制代码
sudo yum install -y amazon-efs-utils
  1. 再利用相同命令创建数据文件夹,并且将EFS存储挂载到该文件夹下。
bash 复制代码
mkdir data
sudo mount -t efs -o tls fs-06f8a695410a35a63:/ data
  1. 再运行以下命令,输出在us-east-1a中创建位于EFS存储内的"efs-1-setup.log"文件内容。
bash 复制代码
cat efs-1-setup.log
  1. 可以正确打印出我们刚刚向Log文件中写入的内容"efs-1 mounted in site A",EFS存储成功的将log文件在两台不同可用区的服务器中共享。

如何利用Python SDK代码创建EFS存储?

除了利用亚马逊云科技控制台,我们同时可以用Python代码创建EFS存储,样例代码如下。

bash 复制代码
import boto3

# 创建EFS客户端
efs_client = boto3.client('efs', region_name='us-east-1')  # 替换为你需要的区域

# 创建EFS文件系统
response = efs_client.create_file_system(
    CreationToken='my-efs-token',  # 这是一个唯一的标识符,可以使用UUID或自定义的字符串
    PerformanceMode='generalPurpose',  # 或者选择 'maxIO' 根据你的需求
    Encrypted=True  # 是否加密
)

# 打印创建的文件系统ID
file_system_id = response['FileSystemId']
print(f"Created EFS File System with ID: {file_system_id}")

# 创建挂载目标(Mount Target)
# 需要提供EFS文件系统ID, 子网ID, 以及可能的安全组ID
mount_target_response = efs_client.create_mount_target(
    FileSystemId=file_system_id,
    SubnetId='subnet-0bb1c79de3EXAMPLE',  # 替换为你自己的子网ID
    SecurityGroups=[
        'sg-0bb1c79de3EXAMPLE',  # 替换为你自己的安全组ID
    ]
)

# 打印挂载目标ID
mount_target_id = mount_target_response['MountTargetId']
print(f"Created Mount Target with ID: {mount_target_id}")
代码解释:

创建EFS客户端 :使用SDK Boto3的efs客户端连接到AWS EFS服务。

创建EFS文件系统 :通过create_file_system方法创建一个新的EFS文件系统。你可以指定加密选项、性能模式(generalPurposemaxIO)等。

创建挂载目标:EFS文件系统需要挂载到VPC中的子网中。你需要提供子网ID和(可选的)安全组ID。

以上就是在亚马逊云科技上跨服务器创建文件存储的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!

相关推荐
思忖小下1 小时前
梳理你的思路(从OOP到架构设计)_简介设计模式
设计模式·架构·eit
边缘计算社区3 小时前
吉快科技荣膺“金边奖·最佳大模型一体机”,引领AI边缘新时代
人工智能·科技
因_果_律3 小时前
亚马逊云科技 re:Invent 2024重磅发布!Amazon Bedrock Data Automation 预览版震撼登场
大数据·人工智能·科技·亚马逊云科技·re invent
IT信息技术学习圈3 小时前
强基计划之编程:开启科研精英培养新路径
科技·强基计划
一个儒雅随和的男子7 小时前
微服务详细教程之nacos和sentinel实战
微服务·架构·sentinel
腾讯云开发者8 小时前
AI时代,需要怎样的架构师?腾讯云架构师峰会来了!
架构
Hello Dam10 小时前
面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制
spring cloud·微服务·云原生·架构·gateway·登录验证·单点登录
AI人H哥会Java18 小时前
【Spring】Spring的模块架构与生态圈—Spring MVC与Spring WebFlux
java·开发语言·后端·spring·架构
小屁不止是运维18 小时前
麒麟操作系统服务架构保姆级教程(二)ssh远程连接
linux·运维·服务器·学习·架构·ssh
不会写代码的女程序猿18 小时前
关于ETL的两种架构(ETL架构和ELT架构)
数据仓库·架构·etl