如何安装和配置AppScale在Ubuntu 12.04

AppScale是一个开源的计算平台,旨在部署在公共云,私有云谷歌App Engine应用程序和内部部署集群。 AppScale与谷歌应用程序引擎的API完全兼容,并且具有为Python, Go ,PHP和Java支持。随着AppScale可以迁移现有的应用程序到任何云计算平台,包括DigitalOcean。

介绍

AppScale是一个开源计算平台,旨在在公共云,私有云和内部部署集群上部署Google App Engine应用程序。 AppScale与Google App Engine API完全兼容,并支持Python,Go,PHP和Java。 使用AppScale,您可以将现有应用程序迁移到任何云计算平台,包括DigitalOcean。 下面您将看到用于提供给定API的开放源代码组件的列表。

先决条件

对于本教程,您将需要:

  • 4GB + Droplet与Ubuntu 12.04.5

AppScale需要至少2 GB的RAM来编译所需的组件,以及AppScale在空闲时使用的2 GB RAM。 4 GB的RAM的最小强烈推荐标准的应用程序部署。 可以使用具有交换文件的2 GB Droplet。 但是,这超出了本教程的范围。

在写作的时候,AppScale只有官方支持Ubuntu 12.04。 如果修改构建脚本,可能可以在Ubuntu 14.04上安装。 但是,这也超出了本教程的范围,可能不受社区支持。

前2个步骤,安装AppScale和AppScale工具,必须作为root用户运行。 其余步骤可以作为非root用户运行。

第1步 - 安装AppScale

对于前两个部分,我们将以root用户身份运行所有命令。 如果以sudo用户身份连接到服务器,请输入root shell:

sudo su

首先,更新apt-get包索引:

apt-get update

我们现在准备安装AppScale。 我们将从源代码编译AppScale。 请注意,编译源代码可能非常耗时。 预计此过程需要15分钟或更长时间才能完成。

确保你在/root目录下:

cd /root

安装Git,以便您可以使用它下载AppScale源代码:

apt-get install -y git-core

从GitHub克隆AppScale源代码:

git clone git://github.com/AppScale/appscale.git

更改为appscale/debian目录,然后运行构建脚本。

注意:这个过程将需要一段时间。 构建脚本将安装任何缺少的依赖项并编译AppScale源代码。

cd appscale/debian
bash appscale_build.sh

第2步 - 安装AppScale工具

AppScale工具用于管理AppScale集群和部署应用程序。 这些工具可以安装在本地计算机或服务器上。 为了简单起见,我们将在我们的服务器上安装这些工具。 Mac OS X和Windows上的安装过程非常相似。 您需要使用Cygwin的 Windows上。 GitHub的页面了解更多信息。

变回/root目录下:

cd /root

从GitHub克隆AppScale Tools源代码:

git clone git://github.com/AppScale/appscale-tools.git

更改为appscale-tools/debian目录,然后运行构建脚本。

注意:这个过程将需要一段时间。 构建脚本将安装任何缺少的依赖关系并编译AppScale Tools源代码。

cd appscale-tools/debian
bash appscale_build.sh

在构建脚本完成后,最好重新启动。

reboot

第3步 - 配置AppScale部署

对于本教程的剩余部分,您可以以任何用户身份运行AppScale工具。 这不需要是一个sudo用户。 但是,当您第一次启动AppScale时,您需要知道root用户的密码。 AppScale将自动创建认证证书,并且在以后使用AppScale工具时将不再需要root密码。

服务器完成重新启动后,并且已建立SSH连接,则需要配置AppScale部署。 每次运行工具集时,AppScale工具都需要一个配置文件。 在这一步中,我们将创建一个名为配置文件AppScalefile ,启动AppScale,并配置管理员帐户。

确保您位于用户的主目录中:

cd ~

创建初始AppScalefile配置文件:

appscale init cluster

现在,我们将服务器的IP地址添加到AppScalefile

使用nano打开文件:

nano AppScalefile

在文件的顶部,您将看到以下部分:

AppScalefile
# The deployment strategy (roles -> machines) that should be used in this
# AppScale deployment.
# The following is a sample layout for running everything on one machine:
ips_layout :
  master : your_server_ip
  appengine : your_server_ip
  database : your_server_ip
  zookeeper : your_server_ip

将默认IP地址替换为服务器的IP地址。 当您完成编辑的文件,按CTRL-X,Y键保存,然后按ENTER以覆盖现有文件名。

现在,我们可以从同一目录启动AppScale AppScalefile刚刚创建:

appscale up

AppScale将要求您验证主机指纹和root密码。

The authenticity of host '111.111.111.111 (111.111.111.111)' can't be established.
ECDSA key fingerprint is ab:3a:f0:87:c8:4e:8c:ba:59:0e:06:64:1b:f6:fe:e8.
Are you sure you want to continue connecting (yes/no)? yes

键入yes ,然后按ENTER键 然后,您将看到以下内容:

root@111.111.111.111's password: 

输入root用户密码,然后按ENTER键

输入正确的root密码后,您将看到以下内容:

Generated a new SSH key for this deployment at /root/.appscale/appscale69de89364b624a8a9be1b7f45ac23d40
Starting AppScale 2.3.1 over a virtualized cluster.
Log in to your head node: ssh -i /root/.appscale/appscale69de89364b624a8a9be1b7f45ac23d40.key root@111.111.111.111
Head node successfully initialized at 111.111.111.111. It is now starting up cassandra.
Copying over deployment credentials
Starting AppController at 111.111.111.111
Please wait for the AppController to finish pre-processing tasks.

Please wait for AppScale to prepare your machines for use.
AppController just started

当开始AppScale,它可能看起来像它被悬挂在AppController just started 这个是正常的。 所有AppScale组件可能需要一些时间才能初始化。

最终,您将看到以下内容:

UserAppServer is at 111.111.111.111
Enter your desired admin e-mail address:

创建管理用户帐户。 输入用户的电子邮件地址,并提供密码。 记住这些细节。 您将需要他们访问AppScale管理面板。

创建管理用户帐户后,您将看到:

Creating new user account admin@example.com
Creating new user account admin@example.com
Your XMPP username is admin@111.111.111.111
Granting admin privileges to admin@example.com
AppScale successfully started!
View status information about your AppScale deployment at http://111.111.111.111:1080/status

AppScale将为您提供一个指向管理面板的链接。 通常采用以下格式。 通常,http地址将自动重定向到安全的HTTPS地址。

http://your_server_ip:1080/status
https://your_server_ip:1443/status

第4步 - AppScale管理面板

在浏览器中打开AppScale管理面板。 链接应该在启动AppScale后提供给您:

http://your_server_ip:1080/status

系统可能会提示您接受自签名证书。

接受自签名证书

从AppScale管理面板,用户可以通过点击创建帐户创建自己的帐户。 但是,您需要使用管理员帐户更改其权限,才能上传和删除自己的应用。

点击右上角的登录按钮。 登录按钮看起来可能在小屏幕上不同,但它仍然是绿色的。

登录AppScale

使用您在上一步中设置的管理电子邮件和密码登录。 然后,您将看到AppScale状态页面。

AppScale状态页

管理面板允许您访问服务器统计信息和应用程序统计信息。 您还可以部署和删除应用程序。 从“管理面板”部署应用程序非常简单。 为了本教程的目的,我们将学习如何从命令行部署应用程序。 完成浏览“管理面板”后,请继续执行下一步。

第5步 - 部署您的第一个应用程序

AppScale提供了准备部署的示例应用程序的集合。 这些应用程序是测试您的AppScale集群的好方法。 他们还熟悉应用程序部署过程。

你应该使用相同的用户帐户,您的当前目录应包含AppScaleFile 此文件包含AppScale管理您部署所需的所有配置。

确保我们回到用户的主目录:

cd ~

从GitHub克隆示例应用程序源代码以创建Guestbook应用程序:

git clone https://github.com/AppScale/sample-apps.git

您将看到以下作为源代码下载:

Cloning into 'sample-apps'...
remote: Counting objects: 15742, done.
remote: Total 15742 (delta 0), reused 0 (delta 0), pack-reused 15742
Receiving objects: 100% (15742/15742), 318.96 MiB | 23.52 MiB/s, done.
Resolving deltas: 100% (4944/4944), done.

访客留言应用程式是测试资料储存库和验证API的绝佳方式。

部署应用程序:

appscale deploy sample-apps/go/go-guestbook/

系统将要求您为应用程序分配电子邮件地址。 输入电子邮件地址,然后按Enter键

Enter your desired e-mail address: admin@example.com

这可以是任何电子邮件地址。 如果数据库中不存在用户,系统将提示您设置密码。 为了本教程的目的,我们决定使用管理员帐户。

接下来,您将看到以下内容:

Uploading initial version of app guestbookgo
We have reserved guestbookgo for your app
Tarring application
Copying over application
Please wait for your app to start serving.
Waiting 1 second(s) to check on application...
Waiting 2 second(s) to check on application...
Waiting 4 second(s) to check on application...
Waiting 8 second(s) to check on application...
Waiting 16 second(s) to check on application...
Your app can be reached at the following URL: http://111.111.111.111:8080

打开浏览器中提供的网址,您将由访客留言应用程序提供服务。 如果您仍然登录到AppScale,Guestbook应用程序将使用您的电子邮件地址。 如果您返回到AppScale管理面板并注销,它将作为匿名用户签署留言簿。

留言簿应用

要更新的应用程序,只需使用appscale deploy再次命令。 AppScale将自动检测和更新现有应用程序。 您必须使用已拥有应用程序的同一电子邮件地址。 如果要更改所有权,可以删除并重新部署应用程序。

如果你想运行同一应用程序并排侧的多个版本,则需要在改变应用程序的名称app.yaml文件。 这是应用程序的主配置文件,它位于应用程序的根目录中。

要删除您可以使用下面的命令的应用程序(替代guestbookgo与ID AppScale分配给您的应用程序在部署过程中):

appscale remove guestbookgo

您还可以从AppScale管理面板中删除和部署应用程序。

故障排除

AppScale是一个非常复杂的平台,事情可能会出错。 我们将介绍几个步骤,您可以采取以帮助解决一些最常见的错误。 建议你阅读官方AppScale故障排除页了解更多详情。

如果你不能找到一个解决问题的方法,AppScale有一个非常活跃的邮件列表 确保在向邮件列表提交主题时尽可能详细地包括日志文件的副本。 你将更有可能得到一个快速解决你的问题。

强制清除AppScale状态

appscale clean命令用于强行把你的虚拟机到一个干净的状态,消除任何配置问题。

appscale clean

此脚本还将强制杀死所有AppScale相关进程。 如果您在初始部署时遇到问题,请在联系邮寄名单之前先尝试此操作。 这个命令通常会修复任何配置问题。 然后,您可以运行appscale up再重新部署AppScale。

appscale up

AppScale日志文件

appscale logs命令将收集来自所有节点的日志文件在AppScale的部署,并将其复制到指定目录下。

appscale logs directory/

日志文件可以直接在被访问/var/log/appscale目录。

cd /var/log/appscale

如果由于某种原因, appscale logs命令失败,你将要访问以这种方式日志。 但是,对于多节点部署,您需要在每个服务器上执行此操作,这是为什么建议您使用AppScale工具收集日志文件。

所述appscale tail命令将提供AppScale日志的实时读出在一个部署。 这对于实时监视应用程序和连接问题很有用。

appscale tail

调试AppScale部署

在调试AppScale部署时,我们应该感兴趣的有三个主要日志。

  • controller-17443.log -此日志是AppController的,AppScale的配置守护进程的输出。 由于此守护程序负责启动AppScale的所有必需的服务,因此当AppScale部署出现问题时,它是最好的开始。

  • app___app_id-*.log -每次部署的应用程序都会有自己的日志文件。 如果您在部署应用程序时遇到问题,或者其行为不符合预期,那么您将需要开始。

  • datastore_server-400*.log -这是AppScale数据存储在日志文件中。

结论

我们已经为单个服务器部署安装和配置了AppScale。 我们学习了如何部署和删除应用程序。 我们还通过签署留言簿应用程序来测试我们的部署。 签署留言簿应用程序证明,许多API都正常工作。 我们现在可以使用此AppScale安装来部署基于Google App Engine的自定义应用程序。