【Deis文档】Deis安装之Google Compute Engine


注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

我们将在Google Compute Engine里构建一个Deis集群!
请在阅读本文时,获取源码并参考contrib/gce中的脚本。

必要条件

为了开通VM实例,让我们先准备一些Google的东西。

安装Google云SDK

安装Google云SDK。你必须使用你的Google账号登录:
shell
$ gcloud auth login

创建新项目

Google开发者控制台创建一个新项目。你将得到一个类似orbital-gantry-285的项目ID。我们将把它作为SDK工具的默认值:
shell
$ gcloud config set project orbital-gantry-285

开启计费

<dl>
<dt>重要说明</dt>
<dd>一旦你创建资源,如硬盘、实例,将开始产生费用。</dd>
</dl>
在浏览器中点击进入项目控制台,然后进入“Billing & Settings”一节。点击“Enable billing”按钮并填写表单。要在GoogleCompute Engine里创建资源就必须这么做。

初始化Compute Engine

Google Compute Engine只有在网页控制台上初始化后才能通过命令行工具访问。在项目控制台点击COMPUTE -> COMPUTE ENGINE -> VM Instances。Compute Engine将花费一些时间初始化,然后就准备好通过gcutil创建资源。

云初始化

通过Deis的contrib/gce/create-gce-user-data脚本创建你的云初始化文件,同时创建一个新的etcd发现URL。首先,安装PyYAML:
shell
$ sudo pip install pyyaml

然后进入contrib/gce目录:
shell
$ cd contrib/gce

最后,创建gce-user-data文件:

shell
$ ./create-gce-user-data $(curl -s https://discovery.etcd.io/new)

我们将拥有了一个用于启动CoreOS节点的gce-user-data文件。

启动实例

生成一个用于Deis主机通讯用的SSH密钥:
shell
$ ssh-keygen -q -t rsa -f ~/.ssh/deis -N '' -C deis

创建一些/var/lib/docker使用的持久化硬盘。CoreOS默认的根分区只有大概4GB,不足以保存Docker镜像和实例。以下命令将创建3块32GB的硬盘:
shell
$ gcutil adddisk --zone us-central1-a --size_gb 32 cored1 cored2 cored3
Table of resources:
+--------+---------------+--------+---------+
| name | zone | status | size-gb |
+--------+---------------+--------+---------+
| cored1 | us-central1-a | READY | 32 |
+--------+---------------+--------+---------+
| cored2 | us-central1-a | READY | 32 |
+--------+---------------+--------+---------+
| cored3 | us-central1-a | READY | 32 |
+--------+---------------+--------+---------+

启动3个实例。你可以从gcloud compute images list列表输出中选择别的启动CoreOS镜像:
shell
$ for num in 1 2 3; do gcutil addinstance --image projects/coreos-cloud/global/images/coreos-alpha-494-0-0-v20141108 --persistent_boot_disk --zone us-central1-a --machine_type n1-standard-2 --tags deis --metadata_from_file user-data:gce-user-data --disk cored${num},deviceName=coredocker --authorized_ssh_keys=core:~/.ssh/deis.pub,core:~/.ssh/google_compute_engine.pub core${num}; done
Table of resources:
+-------+---------------+--------------+---------------+---------+
| name | network-ip | external-ip | zone | status |
+-------+---------------+--------------+---------------+---------+
| core1 | 10.240.33.107 | 23.236.59.66 | us-central1-a | RUNNING |
+-------+---------------+--------------+---------------+---------+
| core2 | 10.240.94.33 | 108.59.80.17 | us-central1-a | RUNNING |
+-------+---------------+--------------+---------------+---------+
| core3 | 10.240.28.163 | 108.59.85.85 | us-central1-a | RUNNING |
+-------+---------------+--------------+---------------+---------+

<dl>
<dt>注意</dt>
<dd>开通脚本默认开通n1-standard-2实例。不推荐选择更小的实例规格。请在选择运行Deis的实例规格时参考“<a href="http://docs.deis.io/en/latest/ ... 6quot;>系统需求</a>”中的资源要求。</dd>
</dl>

负载均衡

deisctl工具使用SSH通道与远程主机进行通讯。如果你没有SSH密钥,以下命令将生成一个名为deis的密钥对:
shell
$ ssh-keygen -q -t rsa -f ~/.ssh/deis -N '' -C deis

生成新的发现URL

我们需要对Deis路由进行负载均衡,以便能访问Deis服务(控制器和构建器)及我们的应用。
shell
$ gcutil addhttphealthcheck basic-check --request_path /health-check
$ gcutil addtargetpool deis --health_checks basic-check --region us-central1 --instances core1,core2,core3
$ gcutil addforwardingrule deisapp --region us-central1 --target_pool deis
Table of resources:
+---------+-------------+--------------+
| name | region | ip |
+---------+-------------+--------------+
| deisapp | us-central1 | 23.251.153.6 |
+---------+-------------+--------------+

注意转发规则的外网IP地址。我们需要用它作为后续步骤的Deis登录端点。现在,开放CoreOS节点的端口:
shell
$ gcutil addfirewall deis-router --target_tags deis --allowed &quot;tcp:80,tcp:2222&quot;

配置DNS

我们可以使用gcloud工具在Google云DNS里创建DNS记录。本示例中我们将使用deisdemo.io作为域名。创建zone:
shell
$ gcloud dns managed-zone create --dns_name deisdemo.io. --description &quot;Example Deis cluster domain name&quot; deisdemoio
Creating {'dnsName': 'deisdemo.io.', 'name': 'deisdemoio', 'description':
'Example Deis cluster domain name'} in eco-theater-654
Do you want to continue (Y/n)? Y
{
&quot;creationTime&quot;: &quot;2014-07-28T00:01:45.835Z&quot;,
&quot;description&quot;: &quot;Example Deis cluster domain name&quot;,
&quot;dnsName&quot;: &quot;deisdemo.io.&quot;,
&quot;id&quot;: &quot;1374035518570040348&quot;,
&quot;kind&quot;: &quot;dns#managedZone&quot;,
&quot;name&quot;: &quot;deisdemoio&quot;,
&quot;nameServers&quot;: [
&quot;ns-cloud-d1.googledomains.com.&quot;,
&quot;ns-cloud-d2.googledomains.com.&quot;,
&quot;ns-cloud-d3.googledomains.com.&quot;,
&quot;ns-cloud-d4.googledomains.com.&quot;
]
}

注意JSON输出中的nameServers数组。我们需要将上游域名服务器设置成这些值。
现在编辑zone添加Deis端点和通配DNS:
shell
$ gcloud dns records --zone deisdemoio edit
{
&quot;additions&quot;: [
{
&quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
&quot;name&quot;: &quot;deisdemo.io.&quot;,
&quot;rrdatas&quot;: [
&quot;ns-cloud-d1.googledomains.com. dns-admin.google.com. 2 21600 3600 1209600 300&quot;
],
&quot;ttl&quot;: 21600,
&quot;type&quot;: &quot;SOA&quot;
}
],
&quot;deletions&quot;: [
{
&quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
&quot;name&quot;: &quot;deisdemo.io.&quot;,
&quot;rrdatas&quot;: [
&quot;ns-cloud-d1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300&quot;
],
&quot;ttl&quot;: 21600,
&quot;type&quot;: &quot;SOA&quot;
}
]
}

你需要使用JSON对象添加两条记录。这是一个编辑添加两条A记录的例子:
json
{
&quot;additions&quot;: [
{
&quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
&quot;name&quot;: &quot;deisdemo.io.&quot;,
&quot;rrdatas&quot;: [
&quot;ns-cloud-d1.googledomains.com. dns-admin.google.com. 2 21600 3600 1209600 300&quot;
],
&quot;ttl&quot;: 21600,
&quot;type&quot;: &quot;SOA&quot;
},
{
&quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
&quot;name&quot;: &quot;deis.deisdemo.io.&quot;,
&quot;rrdatas&quot;: [
&quot;23.251.153.6&quot;
],
&quot;ttl&quot;: 21600,
&quot;type&quot;: &quot;A&quot;
},
{
&quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
&quot;name&quot;: &quot;*.dev.deisdemo.io.&quot;,
&quot;rrdatas&quot;: [
&quot;23.251.153.6&quot;
],
&quot;ttl&quot;: 21600,
&quot;type&quot;: &quot;A&quot;
}
],
&quot;deletions&quot;: [
{
&quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
&quot;name&quot;: &quot;deisdemo.io.&quot;,
&quot;rrdatas&quot;: [
&quot;ns-cloud-d1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300&quot;
],
&quot;ttl&quot;: 21600,
&quot;type&quot;: &quot;SOA&quot;
}
]
}

安装Deis平台

现在你已经完成了集群开通,请参考“安装Deis平台”开始平台安装。

0 个评论

要回复文章请先登录注册