介绍
AppScale是一个开源计算平台,旨在在公共云,私有云和内部部署集群上部署Google App Engine应用程序。 AppScale与Google App Engine API完全兼容,并支持Python,Go,PHP和Java。 使用AppScale,您可以将现有应用程序迁移到任何云计算平台,包括DigitalOcean。 下面您将看到用于提供给定API的开放源代码组件的列表。
- 数据存储API: Cassandra和动物园管理员
- 内存缓存API: memcached的
- 任务队列API: RabbitMQ的和Celery
- XMPP API: ejabberd
- 通道API: strophe.js和ejabberd
- Blob存储API: Cassandra和动物园管理员
- 图像API: PIL
- 克龙API: vixie cron在
先决条件
对于本教程,您将需要:
- 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
在文件的顶部,您将看到以下部分:
# 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状态页面。
管理面板允许您访问服务器统计信息和应用程序统计信息。 您还可以部署和删除应用程序。 从“管理面板”部署应用程序非常简单。 为了本教程的目的,我们将学习如何从命令行部署应用程序。 完成浏览“管理面板”后,请继续执行下一步。
第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的自定义应用程序。