jjzjj

亚马逊云EC2助力5G产品测试

从善若水 2024-05-30 原文

文章目录

亚马逊云EC2助力5G产品测试

      最近,公司的5G Modem产品进入了公网测试阶段,但是遇到一些问题。例如,网页无法打开、FTP连接总是失败、文件下载速度非常慢。之前我们进行原型机测试的时候,使用开源的核心网Open5GS,并通过WIFI接入公网,业务一切正常。现在通过空口接入移动网络为什么业务就不正常了?

      现在面临一个问题,像网页、视频之类的业务,我们是无法看到服务的后台数据的,也就无法定位问题。所以我们需要一个云服务,能够接入移动网络,让我们的5G Modem能够与其进行数据业务。这样,我们就可以观察数据业务的交互中有什么问题。问了下公司同事,它们说可以使用亚马逊云EC2来搭建网络应用,而且还是免费的不需要付任何费用。

🎁为什么免费?
亚马逊云科技为新用户提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。点击获取大礼包


      其实之前并没有接触过云相关的技术,很担心自己不会用。不过看了亚马逊官网的教程这种担心瞬间就消失了,亚马逊官网给我们提供了非常详尽的使用案例,详情可参考 AWS入门基础课程

      我们这里打算使用EC2创建一个云服务器,使用VPS的弹性IP分配一个公网IP地址,最后使用NextCloud搭建一个网盘作为云服务接入5G核心网,这样我们的终端就可以访问这个网盘进行业务调试了。

一、创建EC2实例

👍亚马逊弹性计算云(EC2,Elastic Compute Cloud)是一个让使用者可以租用云端电脑运行所需应用的系统。亚马逊EC2提供了简单的Web服务界面,可以让您轻松的获取和配置资源。EC2使用Xen虚拟化技术。每个虚拟机,又称作实例,能够运行小、大、极大三种能力的虚拟私有服务器。Amazon利用EC2 Compute Units去分配硬件资源(一个ECU相当于一个Sandy Bridge级Xeon)。EC2系统提供以下的虚拟机实例类型

  • 微型实例:默认配置了613MB的存储器,一个虚拟核心上运行两个ECU单位,免费试用一年;
  • 小型实例:默认配置了1.7 GB的存储器,一个虚拟核心上运行一个ECU单位;
  • 大型实例:默认配置了7.5GB的存储器,两个虚拟核心上各运行两个ECU单位;
  • 极大实例:默认配置了15GB的存储器,四个虚拟核心上各运行两个ECU单位;

1.1 设置区域

为了提升私人网盘的访问速度,我们选择离中国较近的亚马逊云海外区域,我这里选择的是“新加坡”,如下图👇。

1.2 设置EC2参数

点击“服务”,在搜索框内输入“EC2”,选择EC2服务,如下图👇。

之后我们点击右上角的“创建新实例”,开始创建EC2实例。

接下来我们选择自己的操作系统镜像和实例类型。大家可以按照我的配置进行设置,选择带有“支持免费套餐”的配置,如果选择的是不带有“支持免费套餐”可能会产生不必要的扣费,大家一定要注意。

1.3 创建密钥对

搭建这里千万不要选择下面红框中标出的选项,否则会导致EC2实例创建后无法通过访问。

因为我之前在这里就创建过一个密钥对,所以这里会显示一个“private_netdesk”的密钥对。如果你之前没有创建过密钥对,点击右侧的“创建新密钥对”,AWS会自动为你创建一个密钥对,无需其他操作,就这么简单。

1.4 配置网络参数

点击网络设置的“编辑”按钮,

点击“添加安全组规则”,我们这里新增一个HTTP,端口80的规则,用于访问我们的私人网盘。

1.5 配置存储

配置我们的磁盘空间为30G,只要是新用户,AWS都提供30G的免费磁盘可以使用。

1.6 启动EC2实例

点击启动实例,EC2实例创建完成。


二、分配公网IP并绑定到EC2实例

👍虚拟专用服务器(Virtual Private Server,简称VPS)技术,会将一台服务器分割成多个虚拟专用服务器。实现VPS的技术分为容器技术,和虚拟化技术。在容器或虚拟机中,每个VPS都可选配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。

2.1 分配公网IP

在服务页面搜索“VPS”,进入VPS服务。进入之后选择“弹性IP”。

进入“弹性IP”界面之后,点击右上角的“分配弹性IP地址”,点击之后我们进入一个页面,保留默认配置,点击右下角的“分配”,完成公网IP的分配。

2.2 公网IP绑定到EC2实例

点击分配的公网IP地址,进入选择右上角的“关联弹性IP地址”。

设置实例为我们刚刚创建的EC2实例,点击“关联”完成公网IP关联。

三、安装并注册NextCloud

👍NextCloud是一套用于创建网络硬盘的客户端-服务器软件。其功能与Dropbox相近,但Nextcloud是自由及开放源代码软件,每个人都可以在私人服务器上安装并运行它。 与Dropbox等专有服务相比,Nextcloud的开放架构让用户可以利用应用程序的方式在服务器上新增额外的功能,并让用户可以完全掌控自己的数据。

进入实例界面,可以看到我们刚刚创建的私人网盘实例已经开始运行了,状态检测为“2步检测已通过”,表示服务正常运行中。

点击实例ID,进入实例摘要界面,点击右上角的连接,进入实例控制台。

选择“EC2 Instance Connect”方式,点击“连接”进入控制台。

❗ 如果连接控制台失败,可以查看一下上一步的密钥对(1.3)是否选择正确。如果选择正确还是无法进入,可以尝试将console界面切换为英语。如果你无法选择“EC2 Instance Connect”连接方式,尝试更换步骤1.1中的区域设置,或者参考官网给出的解决方案:启动EC2 Linux实例

3.1 下载并安装NextCloud

sudo snap install nextcloud

安装完毕后会提示“nextcloud 22.1.1snap2 from Nextcloud✓ installed”。

3.2 配置用户名和密码

sudo nextcloud.manual-install 用户名 密码

配置完成后,会显示“Nextcloud was successfully installed”。

3.3 配置信任域

sudo nextcloud.occ config:system:set trusted_domains 1 --value=替换为您的公网IP地址

四、访问私人网盘

在PC或者移动终端的网页中输入刚刚我们为EC2绑定的公网IP地址,会进入NextCloud欢迎界面,输入步骤3.2中设置的用户名和密码,完成登录。

进入网盘之后,我们就可以上传或者下载文件了。而且没有任何网速的限制。


五、总结

      通过亚马逊云EC2搭建了一个云服务器,再利用VPS的弹性IP为我们的服务分配一个公网IP地址,有了这个地址就可以接入5G核心网,与我们的5G Modem产品进行业务交互。我们这里简单起见使用了开源的NextCloud云网盘,既可以进行下行业务(下载资源)的测试,也可以进行上行业务(上传资源)的测试,一举两得。在亚马逊的官方教程指导下只用了20分钟就完成了搭建工作,非常高效。

      最后,在亚马逊云EC2的帮助下很快就定位了问题。

👍亚马逊云科技专为开发者们打造了多种学习平台:

  1. 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。
    🎁点击领取
  2. 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。
    🎁点击领取
  3. 构建者库:了解亚马逊云科技如何构建和运营软件。
    🎁点击领取
  4. 用于在亚马逊云科技平台上开发和管理应用程序的工具包。
    🎁点击领取

🎉【专属福利】
福利一:100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
      🎁点击领取


福利二:最新优惠大礼包,200 数 据 与 分 析 抵 扣 券 , 200 数据与分析抵扣券,200 200机器学习抵扣券,200$微服务与应用开发抵扣券。
      🎁点击领取


福利三:解决方案CloudFormation一键部署模版库。
      🎁点击领取

有关亚马逊云EC2助力5G产品测试的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  4. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  8. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  9. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  10. ruby-on-rails - 如何调试 cucumber 测试? - 2

    我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element

随机推荐