亚马逊AWS

本教程中,我们将向您说明如何在AWS上创建一个3节点集群。

请在阅读本文时,获取源码并参考contrib/ec2中的脚本。

安装AWS命令行介面

为了使用亚马逊的API,我们需要安装awscli

  1. $ pip install awscli
  2. Downloading/unpacking awscli
  3. Downloading awscli-1.5.0.tar.gz (248kB): 248kB downloaded
  4. ...
  5. Successfully installed awscli

配置aws-cli

运行aws configure设置你的AWS认证信息:

  1. $ aws configure
  2. AWS Access Key ID [None]: ***************
  3. AWS Secret Access Key [None]: ************************
  4. Default region name [None]: us-west-1
  5. Default output format [None]:

上传密钥

生成并上传新的密钥对到AWS上,确保密钥对的名字为deis。

  1. $ ssh-keygen -q -t rsa -f ~/.ssh/deis -N '' -C deis
  2. $ aws ec2 import-key-pair --key-name deis --public-key-material file://~/.ssh/deis.pub

选择实例数量

脚本将默认开通3台服务器。你可以通过设置DEIS_NUM_INSTANCES修改该值:

  1. $ export DEIS_NUM_INSTANCES=5

注意,为保证调度正常工作,集群必须至少由三个节点组成,并且成员数量永远为奇数。更多信息,见“最佳的etcd集群规模”。

不支持少于三个节点的Deis集群。

生成新的发现URL

发现URL将节点的地址和元数据保存在一个唯一的标识下,以将etcd实例连接在一起。在仓库根目录下运行以下命令来生成一个带有新的发现URL的contrib/coreos/user-data文件:

  1. $ make discovery-url

user-data中包含了必要的脚本,因此不要在未运行make discovery-url前开通Deis集群。

自定义cloudformation.json

任何deis.template.json中默认定义的参数都能被cloudformation.json中设置的值覆盖,比如:

  1. {
  2. "ParameterKey": "InstanceType",
  3. "ParameterValue": "m3.xlarge"
  4. },
  5. {
  6. "ParameterKey": "KeyPair",
  7. "ParameterValue": "jsmith"
  8. },
  9. {
  10. "ParameterKey": "EC2VirtualizationType",
  11. "ParameterValue": "PV"
  12. },
  13. {
  14. "ParameterKey": "AssociatePublicIP",
  15. "ParameterValue": "false"
  16. }

cloudformation.json中用于启动集群的唯一必要的条目是KeyPair,这已经填写好了。其他设置将由默认值指定。

如果使用update-ec2-cluster.sh进行更新,InstanceType参数将只影响新部署的实例(#1758)。

注意:最小的推荐实例规模很大。使用集群时,CPU或内存不足将引起各种问题。

启动现存VPC

默认情况下,提供的CloudFormation脚本将为Deis创建一个新VPC。不过,这个脚本也支持开通到现有VPC中。你需要一台配置了因特网网关的VPC和一个健全的路由表(一个区域内的初始VPC已经准备完成)。

为了在现有VPC中启动集群,需要设置三个额外的环境变量:

  • VPC_ID
  • VPC_SUBNETS
  • VPC_ZONES

VPC_ZONES必须按顺序列出子网的可用区域。

比如,假设你的VPC的ID是vpc-a26218bf,由子网subnet-04d7f942(位于us-east-1b)和subnet-2b03ab7f(us-east-1c),你需要设置:

  1. export VPC_ID=vpc-a26218bf
  2. export VPC_SUBNETS=subnet-04d7f942,subnet-2b03ab7f
  3. export VPC_ZONES=us-east-1b,us-east-1c

运行开通脚本

运行cloudformation开通脚本来生成一个新的CoreOS集群:

  1. $ cd contrib/ec2
  2. $ ./provision-ec2-cluster.sh
  3. {
  4. "StackId": "arn:aws:cloudformation:us-west-1:413516094235:stack/deis/9699ec20-c257-11e3-99eb-50fa01cd4496"
  5. }
  6. Your Deis cluster has successfully deployed.
  7. Please wait for all instances to come up as "running" before continuing.

检查AWS EC2网页控制面板,并等待所有实例的“Status Checks”通过。这将花费数分钟时间。

配置DNS

参考“配置DNS”获取正确设置Deis相关DNS记录的更多信息。

安装Deis平台

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