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

ops/2024/9/23 20:43:28/

简介:

欢迎来到小李哥全新亚马逊云科技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服务

2. 点击左侧栏的“Security Group”,为EFS存储创建安全组防火墙

3. 为安全组起名“PetModels-EFS-1-SG”,并选择安全组所在VPC和添加防护墙规则。

4. 在防火墙入站规则中添加允许NFS协议,允许对象选择“webserver”,为EC2服务器并点击创建。

5. 下面进入到EFS服务中,点击“create file system”创建EFS存储

6. 为存储起名“PetModels-EFS-1”,并选择存储所在VPC网络。

7. 取消勾选自动备份,存储生命周期管理统一选择“None”

8. 在存储类型中选择“Bursting”,即为根据存储数据量自动扩展。

9. EFS存储创建的最佳实践是在每个可用区AZ都创建一个EFS存储节点保障可用性,第一次测试创建我们只创建一个可用区节点。移除us-east-1b和us-east-1c的节点,将us-east-1a的节点安全组替换成我们刚创建的安全组“PetModels-EFS-1-SG”。持其他配置默认后创建EFS存储

 10. 接下来我们点击进入到我们刚创建的EFS存储,点击“Attach”将EFS存储挂载到EC2服务器上。

11. 点击后会弹出挂载EFS存储的Linux命令,需要在EC2服务器操作系统中执行。

12. 接下来我们点击位于us-east-1a可用区中的EC2服务器,并选择connect SSH连接到服务器中。

13. 进入到EC2服务器Linux命令行,运行命令以下命令安装EFS管理客户端。

sudo yum install -y amazon-efs-utils

14. 接下来我们运行以下Linux命令,创建数据文件夹,并且将EFS存储挂载到该文件夹下。

mkdir data
sudo mount -t efs -o tls fs-06f8a695410a35a63:/ data

 15. 进入该文件夹,按照以下命令创建一个共享文件"efs-1-setuo.log",内容为“efs-1 mounted in site A”。

cd data
sudo bash -c "cat >> efs-1-setup.log"
efs-1 mounted in site A

16. 接下来我们回到EFS存储节点配置界面,在us-east-1b中创建一个新的存储节点,并配置安全组,点击创建。

17.  我们再通过SSH进入到位于us-east-1b可用区的EC2服务器中

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

sudo yum install -y amazon-efs-utils

19. 再利用相同命令创建数据文件夹,并且将EFS存储挂载到该文件夹下。

mkdir data
sudo mount -t efs -o tls fs-06f8a695410a35a63:/ data

20. 再运行以下命令,输出在us-east-1a中创建位于EFS存储内的“efs-1-setup.log”文件内容。 

cat efs-1-setup.log

21. 可以正确打印出我们刚刚向Log文件中写入的内容“efs-1 mounted in site A”,EFS存储成功的将log文件在两台不同可用区的服务器中共享。

 

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

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

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',  # 替换为你自己的子网IDSecurityGroups=['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云开发/云架构方案!


http://www.ppmy.cn/ops/94148.html

相关文章

汇昌联信科技做拼多多电商怎么引流?

在互联网经济高速发展的今天,电商平台如雨后春笋般涌现,其中拼多多以其独特的社交电商模式迅速崛起。对于汇昌联信科技而言,如何在拼多多平台上有效引流,成为提升销量和品牌知名度的关键。本文将深入探讨汇昌联信科技在拼多多电商…

嵌入式软件开发学习一:软件安装(保姆级教程)

资源下载: 江协科技提供: 资料下载 一、安装Keil5 MDK 1、双击.EXE文件,开始安装 2、 3、 4、此处尽量不要安装在C盘,安装路径选择纯英文,防止后续开发报错 5、 6、 7、弹出来的窗口全部关闭,进入下一步&a…

vue关于双向数据绑定的骚操作

组件传值大家都知道 直接上代码 computed: {optionModel: {get() {return this.selectedWidget.options;},set(newValue) {this.selectedWidget.options newValue;}}} 我们将optionModel传递给子组件 子组件可以直接修改props 来实现双向数据绑定 但是正常来时我们是不能修…

与LLMs进行在IDE中直接、无需提示的交互是工具构建者探索的一个有希望的未来方向

这个观点在卡内基梅隆大学与谷歌研究人员合作文章 《Using an LLM to Help With Code Understanding》 中提出。 论文地址:https://dl.acm.org/doi/abs/10.1145/3597503.3639187 摘要 理解代码非常具有挑战性,尤其是在新且复杂的开发环境中。代码注…

LeetCode刷题笔记第191题:位1的个数

LeetCode刷题笔记第191题:位1的个数 题目: 想法: 通过位运算判断二级制形式中有多少个1,代码及解释如下: class Solution:def hammingWeight(self, n: int) -> int:return sum(1 for i in range(32) if n & …

docker-build.sh and docker-run.sh

平常在docker上调试应用程式,由于指令繁多,需要经常查看资料。为简化步骤,编写docker-build.sh和docker-run.sh文件。 docker-build.sh docker build --no-cache -t {docker-image-REPOSITORY:TAG} . For example: docker build --no-cache -…

python 使用正则表达式判断图片路径是否是超链接

在Python中,判断一个给定的字符串(假设为图片路径)是否是网页链接(URL),你可以通过检查该字符串是否符合URL的基本格式来实现。虽然这个方法不能保证链接一定指向图片,但它能判断该字符串是否是…

从零开始学数据结构系列之第四章《拓扑排序之AOV网》

文章目录 AOV网AOV网的特点AOV网的图解 往期回顾 AOV网 ​    在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系。这样的有向图为顶点表示活动的网,我们称为AOV网 AOV网的特点 (1)AOV网中的弧…