14分钟阅读

在云中的云发展:Bigdata银河游戏官方首页AWS

Michele是一个拥有超过20年经验的系统架构师。他是一个Polyglote银河游戏官方首页人员,但他的专业是Scala和Devops。
阅读 西班牙语  es. 本文的版本翻译 Marisela Ordaz.

你为什么需要它?

我是银河游戏官方首页人员,我每天在集成的银河游戏官方首页环境(IDE)中工作,例如Intellij Idea或Eclipse。这些IDE是桌面应用程序。自从Google文档的出现以来,我已经看到了越来越多的人使用Word处理器或电子表格应用程序的在线等效于云或Excel从桌面版本或Excel移动工作。

使用云以保持工作的显而易见的原因。今天,与传统的桌面业务应用程序相比,某些Web应用程序在功能中没有显着的缺点。无论何处都有网络浏览器,这些内容都可以使用这些内容,这几乎无处不在。协作和共享更容易,丢失文件不太可能。

不幸的是,这些云的优势在软件银河游戏官方首页世界中的优势并不像商业应用程序一样。有些尝试提供在线IDE,但他们无处可去接近传统的IDE。

这是一个悖论;虽然我们仍然与我们的桌面进行日常编码,但现在将在多台服务器上生成软件。银河游戏官方首页人员需要使用他们无法在其计算机上保留的东西。实际上,笔记本电脑不再增加他们的处理能力;笔记本电脑上具有超过16GB的RAM是罕见的且昂贵的,例如更新的装置,例如,平板电脑甚至更少。

但是,即使尚不替换软件银河游戏官方首页的经典桌面应用程序,也是可能的 将整个银河游戏官方首页桌面移动到云端。我意识到它的那一天,它不再需要在笔记本电脑上拥有我所有的软件,并注意到Web版本的终端和VNC的可用性,我将所有东西移动到云端。最终,我银河游戏官方首页了一种以自动化方式创建该环境的构建套件。

云中的银河游戏官方首页人员

关于银河游戏官方首页人员的云是什么?当然,在它中发展!

在本文中,我呈现了一组脚本来构建基于云的银河游戏官方首页环境 Scala. 和大数据应用程序,在Amazon AWS中使用Docker运行,并且包括使用Intelliji IDE,Spark,Hadoop和Zeppelin作为服务的Web访问桌面,以及命令行工具,如基于Web的SSH,SBT和氨。套件可自由地提供 GitHub. ,我介绍了使用它来构建实例的过程。您可以构建环境并根据您的特定需求定制它。它不应该超过10分钟才能跑步和运行。

什么是“bigdatadevkit”?

我在银河游戏官方首页套件方面的主要目标是,我的银河游戏官方首页环境应该是我可以简单地启动的东西,以及我与之合作的所有服务和服务器,然后在不再需要它们时摧毁它们。当您在不同的项目上工作时,这尤其重要,其中一些涉及大量服务器和服务,就像您在大数据项目上工作时。

我理想的基于云的环境应该:

  • 包括所有通常的银河游戏官方首页工具,最重要的是图形IDE。
  • 有我的指尖我需要的服务器和服务。
  • 从头开始轻松快速创建,并扩展以添加更多服务。
  • 仅使用Web浏览器完全访问。
  • (可选)允许访问专用客户端(VNC客户端和SSH客户端)。

利用现代云基础设施和软件,现代浏览器的力量,广泛的宽带的可用性和宝贵的Docker,我为Scala创建了一个银河游戏官方首页环境 大数据银河游戏官方首页 即,为了更好,取代了我的银河游戏官方首页笔记本电脑。

目前,我可以随时使用MacBook Pro,曲面平板电脑甚至iPad(带键盘),虽然允许的最后一个选项并不理想。所有这些设备都仅仅是客户;桌面和所有服务器都在云中。

 Docker. 和Amazon AWS!

我当前的环境是使用以下在线服务构建的:

  • 亚马逊Web服务为服务器。
  • 用于存储代码的GitHub。
  • dropbox. 保存文件。

我也使用几个免费服务 鸭子 用于动态IP地址和 让我们加密 获得免费的SSL证书。

在这个环境中,我目前有:

  • 具有Intellij Idea的图形桌面,可通过Web浏览器访问。
  • Web Accessible命令行工具,如SBT和氨。
  • Hadoop用于存储文件并运行MapReduce作业。
  • Spark作业服务器用于预定作业。
  • Zeppelin用于基于Web的笔记本。

最重要的是,Web访问完全使用HTTPS加密,适用于基于Web的VNC和SSH,并且有多个保障措施来避免丢失数据,这是当然,当您没有“拥有”内容时重要的问题你的物理硬盘。请注意,您在计算机上的所有工作副本都是自动的,非常快。如果您丢失了所有内容,因为有人窃取了密码,您可以在计算机上有一份副本,只要您正确配置了所有内容。

使用基于Web的银河游戏官方首页环境与AWS和Docker

现在,让我们开始描述环境的工作原理。当我早上开始工作时,第一件事就是登录亚马逊Web服务控制台,我看到我的所有实例。通常,我有许多为不同项目配置的银河游戏官方首页实例,并且我将未被使用的银河游戏官方首页实例关闭以节省计费。毕竟,我一次只能在一个项目上工作。 (好吧,有时我两人工作。)

 屏幕1

So, I select the instance I want, start it, I wait for a little or go grab a cup of coffee. It’s not so different to turning on your computer. It usually takes a bunch of seconds to have the instance up and running. Once I see the green icon, I open a browser, and I go to a well known URL: //msciab.duckdns.org/vnc.html. Note, this is my URL; when you create a kit, you will create your unique URL.

由于AWS在开始时为每台计算机分配新IP,因此我配置了动态DNS服务,因此您可以始终使用相同的URL来访问您的服务器,即使您停止并重新启动它。您甚至可以在浏览器中将其书签。此外,我使用HTTPS,有效键,以便在嗅探器中获得完全保护我的工作,以防我需要管理密码和其他敏感数据。

 屏幕2

一旦加载,系统将欢迎您使用Web VNC Web客户端,Novnc。只需登录并出现桌面。我用最小的桌面,有意,只是一个带有应用程序的菜单,我唯一的奢侈品是一个虚拟桌面(自从我银河游戏官方首页时打开很多窗户)。对于邮件,我仍然依赖于其他应用程序,现在几乎是其他浏览器选项卡。

在虚拟机中,我有我需要银河游戏官方首页大数据应用程序的方法。首先,有一个IDE。在构建中,我使用Intellij Idea社区版。此外,还有SBT构建工具和Scala Repl,氨。

 屏幕3.

但是,此环境的关键功能是在同一虚拟机中作为容器部署的服务。特别是,我有:

  • Zeppelin, the web notebook for using Scala code on the fly and doing data analysis (http://zeppelin:8080)
  • The Spark Job Server, to execute and deploy spark jobs with a Rest interface (http://sparkjobserver:8080).
  • An instance of Hadoop for storing and retrieving data from the HDFS (http://hadoop:50070).

注意,这些URL是固定的,但可以在虚拟环境中访问。您可以在以下屏幕截图中看到其Web接口。

 屏幕4.

每个服务都在单独的Docker容器中运行。没有变得过于技术性,您可以将此视为虚拟机内的三个独立服务器。使用Docker的美丽是您可以添加服务,甚至添加两台或三台虚拟机。使用亚马逊容器,您可以轻松扩展您的环境。

最后,但并非最不重要的是,您拥有一个可用的Web终端。只需使用HTTPS访问您的URL,您将在网页中欢迎终端。

 屏幕5.

在上面的屏幕截图中,您可以看到我列出了包含三个服务器加上桌面的容器。此命令行shell使您可以访问包含容器的虚拟机,允许您管理它们。就好像您的服务器“在矩阵中”(在容器中虚拟化),但此shell为您提供“矩阵”以管理服务器和桌面的逃生。从这里,您可以重新启动容器,访问其文件系统并执行Docker允许的其他操作。我不会在这里详细讨论Docker,但有大量的文档 Docker. 网站.

如何设置实例

到目前为止,你喜欢这个,你想要你的实例吗?它很容易和便宜。您可以仅仅可以获得Amazon Web服务的虚拟机的成本,加上存储。当前配置中的套件需要4GB的RAM以获取运行的所有服务。如果您仅在需要使用虚拟机时使用虚拟机,并且您的工作,例如,每月160小时,目前的虚拟机将花费160 x $ 0.052或每月8美元。您必须添加存储的成本。我使用大约30GB,但一切都可以保留10美元。

但是,如果您要备份超过2GB代码,则BOT包括(最终)Dropbox(Pro)帐户的成本。这花费了每月15美元,但它为您的数据提供了重要的安全性。此外,您需要一个私有存储库,付费GitHub或其他服务,如Bitbucket,它提供免费私人存储库。

我想强调,如果只有在需要时使用它,它比专用服务器便宜。是的,这里提到的一切都可以在物理服务器上设置,但是因为我使用大数据,我需要很多其他AWS服务,所以我认为拥有在同一个地方的所有内容是合乎逻辑的。

让我们看看如何完成整个设置。

先决条件

在开始构建虚拟机之前,您需要使用以下四个服务注册:

您只需要您的信用卡的唯一一个是亚马逊网络服务。 Duckdns完全是免费的,而Dropbox为您提供2GB的免费存储,这可能足够了解许多任务。让我们加密也是免费的,在构建图像以签署证书时,它在内部使用。除此之外,我也推荐一个存储库托管服务,如GitHub或Bitbucket,如果要存储代码,但是,设置不需要。

要开始,导航到 github bigdatadevkit存储库.

 屏幕6.

滚动页面并复制图片中图片中显示的脚本:

 屏幕7.

需要此脚本来引导图像。您必须更改它并为参数提供一些值。仔细,更改报价中的文本。注意除非您,否则不能使用像引用本身,反斜杠或美元符号的字符,除非您 引用 他们。此问题仅对密码相关。如果您想播放安全,请避免报价,美元符号或反斜杠。

The PASSWORD parameter is a password you choose to access the virtual machine via a web interface. The EMAIL parameter is your email, and will be used when you register an SSL certificate. You will be required to provide your email, and it is the only requirement for getting a free SSL Certificate from Let’s Encrypt.

To get the values for TOKEN and HOST, go to the DuckDNS site and log in. You will need to choose an unused hostname.

 屏幕8.

查看图像以查看您必须复制令牌的位置以及您必须添加主机名的位置。您必须单击“添加域”按钮以保留主机名。

配置您的实例

假设您拥有所有参数并已编辑脚本,则可以启动您的实例。登录Amazon Web服务管理界面,转到EC2实例面板,然后单击“启动实例”。

 屏幕9.

在第一个屏幕中,您将选择图像。脚本是在Amazon Linux周围构建的,并且没有其他选项可用。选择Amazon Linux,QuickStart列表中的第一个选项。

 屏幕10.

在第二个屏幕上,选择实例类型。鉴于运行软件的大小,有多个服务,您需要至少4GB的内存,所以我建议您选择 T2.medium. 实例。你可以使用它来修剪它 t2.small. 如果你关闭了一些服务,甚至是 如果您只想要桌面。

 屏幕11.

在第三个屏幕上,单击“高级详细信息”并粘贴在上一步中配置的脚本。我还建议您启用防止终止保护,以便终止终止,您不会丢失所有工作。

 屏幕12.

下一步是配置存储。实例的默认值为8GB,不足以包含我们将构建的所有图像。我建议将其增加到20GB。此外,虽然不需要,但我建议另一个至少10GB的块设备。该脚本将将第二个块设备装入数据文件夹。您可以制作其内容的快照,终止实例,然后使用快照重新创建它并恢复所有工作。此外,当您终止实例时,自定义块设备不会丢失,因此对您的数据意外丢失进行双重保护。要进一步提高您的安全性,您可以使用Dropbox自动备份您的数据。

 屏幕13.

第五步是命名实例。选择自己的。第六步提供了配置防火墙的方法。默认情况下,只有SSH可用,但我们也需要HTTPS,因此不要忘记添加规则打开HTTPS。您可以向世界开放HTTPS,但如果它只是您的IP,则更好地阻止他人访问桌面和shell,即使仍然保护密码。

完成上次配置后,您可以启动实例。您会注意到,由于初始化脚本正在运行,初始化可能需要相当长的时间,并且还将执行一些冗长的任务,例如使用LET进行加密生成HTTPS证书。

 屏幕14.

当您最终看到管理控制台“正在运行”确认,并且不再“初始化”,即可开始。

Assuming all the parameters are correct, you can navigate to //YOURHOST.duckdns.org.

Replace YOURHOST with the hostname you chose, but do not forget it is an HTTPS site, not HTTP, so your connection to the server is encrypted so you must write https// in the URL. The site will also present a valid certificate for Let’s Encrypt. If there are problems getting the certificate, the initialization script will generate a self-signed certificate. You will still be able to connect with an encrypted connection, but the browser will warn you it is an unknown site, and the connections are insecure. It should not happen, but you never know.

 屏幕15.

假设一切正常工作,然后您可以访问Web终端,蝴蝶。您可以使用用户登录 app 以及您放入安装脚本中的密码。

登录后,您拥有一个引导虚拟机,该虚拟机还包括Docker和其他好东西,例如Nginx Frontend,Git和Butterfly Web终端。现在,您可以通过为银河游戏官方首页环境构建Docker图像来完成设置。

接下来,键入以下命令:

git clone //github.com/sciabarra/BigDataDevKit
cd BigDataDevKit
sh build.sh

最后一个命令还将要求您键入桌面访问的密码。一旦完成,它将开始构建图像。注意构建将需要大约10分钟,但您可以看到正在发生的事情,因为屏幕上显示了一切。

构建完成后,您还可以使用以下命令安装Dropbox:

/app/.dropbox-dist/dropboxd

系统将显示一个链接,您必须单击以启用Dropbox。您需要登录Dropbox,然后完成。无论您在Dropbox文件夹中放入的内容,在所有Dropbox实例之间都会自动同步。

Once done, you can restart the virtual machine, and access your environment at the //YOURHOST.dyndns.org/vnc.html URL.

您可以在恢复工作时停止您的机器并重新启动它。访问URL保持不变。这样,您只需支付使用的时间,加上使用的存储器的每月额外费用。

保留您的数据

The following discussion requires some knowledge of how Docker and Amazon works. If you do not want to understand the details, just keep in mind following simple rule: In the virtual machine, there is an /app/Dropbox folder available, whatever you place in /app/Dropbox is preserved, and everything else is disposable and can go away. To improve security further, also store your precious code in a version control system.

现在,如果您确实想要了解这一点,请阅读。如果您在虚拟机创建中遵循我的指示,则虚拟机免受终止的影响,因此您无法意外销毁它。如果您明确决定终止它,则主要卷将被销毁。所有Docker图像都将丢失,包括您所做的所有更改。

However, since the folder /app/Dropbox is mounted as a Docker Volume for containers, it is not part of Docker images. In the virtual machine, the folder /app is mounted in the Amazon Volume you created, which is also not destroyed even when you expressly terminate the virtual machine. To remove the volume, you have to remove it expressly.

Do not confuse Docker volumes, which are a Docker logical entity, with Amazon Volumes, which is a somewhat physical entity. What happens is that the /app/Dropbox Docker. volume is placed inside the /app Amazon volume.

当您终止虚拟机时,亚马逊卷不会自动销毁,因此放置在它中将保留,直到您也明确地销毁卷。此外,无论您放入Docker音量的内容,都存储在容器外部,因此在容器被销毁时不会被销毁。如果启用了Dropbox,如推荐,您的所有内容都将复制到Dropbox服务器,如果您将Dropbox与计算机同步,则将其复制到Dropbox服务器。此外,建议将源代码存储在版本控制系统中。

因此,如果将您的东西放在Dropbox文件夹下的版本控制系统中,则丢失您的数据必须发生所有情况:

  • 您明确终止您的虚拟机。
  • 您明确地从虚拟机中删除了数据卷。
  • 您明确地从Dropbox中删除了数据,包括历史记录。
  • 您明确地从版本控制系统中删除了数据。

我希望你的数据足够安全。

我为每个项目保留一个虚拟机,当我完成时,我将保持未使用的虚拟机关闭。当然,我在GitHub上拥有我的所有代码并在Dropbox中备份。此外,当我停止在项目上工作时,我在完全删除虚拟机之前,我会拍摄Amazon Web服务块的快照。以这种方式,每当项目恢复时,例如维护,我需要做的就是使用快照启动新的虚拟机。所有数据都返回到位,我可以恢复工作。

优化访问权限

首先,如果您有直接的Internet访问权限,而不是由代理调解,则可以使用本机SSH和VNC客户端。如果需要将文件复制和退出虚拟机,则直接SSH访问很重要。但是,对于文件共享,您应该将Dropbox视为更简单的替代品。

VNC Web Access是宝贵的,但有时,它可能比本机客户端慢。您可以使用端口5900访问虚拟机上的VNC服务器。您必须明确打开它,因为它默认关闭它。我建议您只将其打开到IP地址,因为互联网充满了“机器人”,扫描互联网寻找要挂钩的服务,而VNC是那些机器人的频繁目标。

结论

本文介绍了如何利用现代云技术实现有效的银河游戏官方首页环境。虽然云中的机器不能为您的工作电脑或笔记本电脑完全替换,但对于在能够访问IDE很重要时,可以足够好。在我的经验中,通过当前的互联网连接,它足以与之合作。

在云中,服务器访问和操作比在本地拥有更快。您可以快速增加(或减少)内存,启动另一个环境,创建图像等。您的指尖您有一个数据中心,当您使用大数据项目时,您需要强大的服务和大量空间。这就是云提供的。