零基础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云开发/云架构方案!

相关推荐
稻草人222213 小时前
java Excel 导出 ,如何实现八倍效率优化,以及代码分层,方法封装
后端·架构
数据智能老司机14 小时前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机15 小时前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
程序员鱼皮18 小时前
刚刚 Java 25 炸裂发布!让 Java 再次伟大
java·javascript·计算机·程序员·编程·开发·代码
bobz96518 小时前
k8s svc 实现的技术演化:iptables --> ipvs --> cilium
架构
云舟吖19 小时前
基于 electron-vite 实现一个 RPA 网页自动化工具
前端·架构
brzhang20 小时前
当AI接管80%的执行,你“不可替代”的价值,藏在这20%里
前端·后端·架构
Lei活在当下1 天前
【业务场景架构实战】4. 支付状态分层流转的设计和实现
架构·android jetpack·响应式设计
架构师沉默1 天前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
容器魔方2 天前
Bloomberg 正式加入 Karmada 用户组!
云原生·容器·云计算