【Deis文档】Deis安装之DigitalOcean

DockOne 发表了文章 • 0 个评论 • 2694 次浏览 • 2014-11-23 20:49 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 在部署Deis时,首先要保证主机的配置足够好。Deis是一个高可用的分布式系统,这也就是说Deis组件和你部署的应用可以在其主机因为种种原因(失效、重启、自动调节器等) ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

在部署Deis时,首先要保证主机的配置足够好。Deis是一个高可用的分布式系统,这也就是说Deis组件和你部署的应用可以在其主机因为种种原因(失效、重启、自动调节器等)脱离集群时,迁移到集群中健康的主机上。因此,集群中任何主机都要留有足够的空闲资源,用于承担运行失效主机服务带来的额外负载。
资源
--------
Deis组件在集群中大约占用2 - 2.5GB内存和30GB的硬盘空间。因为每台主机都要能够承担其他主机失效引起的额外负载,所以每台主机必须拥有:
* 至少4GB内存(越多越好)
* 至少40GB的硬盘空间
注意,这些估值只针对Deis和CoreOS,你还需要为部署的应用留下足够的空间。
在低于规格的主机上运行Deis可能会使系统超载,最后导致组件失效、etcd/fleet错误和其他问题。
集群规模
--------
为保证调度正常工作,集群必须至少由三个节点组成,并且成员数量永远为奇数。这主要是因为底层CoreOS集群必须能够获取一个法定人数(见“最佳的etcd集群规模”)。此外,存储组件保持着存储数据的三个复本,因此要求至少三个节点。
重要说明

不支持少于三个节点的Deis集群。
如果无法承受运行多台(至少三台)规格充足的机器,建议你研究一下Dokku项目。Dokku由Deis赞助,适合于不需要高可用分布式系统的环境(比如本地开发、测试等)。

【Deis文档】Deis安装之亚马逊AWS

DockOne 发表了文章 • 0 个评论 • 8523 次浏览 • 2014-11-21 22:48 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 本教程中,我们将向您说明如何在AWS上创建一个3节点集群。 请在阅读本文时,获取源码并参考contrib/ec2中的脚本。 安装AWS命令行介面 ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

本教程中,我们将向您说明如何在AWS上创建一个3节点集群。
请在阅读本文时,获取源码并参考contrib/ec2中的脚本。
安装AWS命令行介面
--------
为了使用亚马逊的API,我们需要安装awscli
```shell
$ pip install awscli
Downloading/unpacking awscli
Downloading awscli-1.5.0.tar.gz (248kB): 248kB downloaded
...
Successfully installed awscli
```
配置aws-cli
--------
运行aws configure设置你的AWS认证信息:
```shell
$ aws configure
AWS Access Key ID [None]: ***************
AWS Secret Access Key [None]: ************************
Default region name [None]: us-west-1
Default output format [None]:
```
上传密钥
--------
生成并上传新的密钥对到AWS上,确保密钥对的名字为deis。
```shell
$ ssh-keygen -q -t rsa -f ~/.ssh/deis -N '' -C deis
$ aws ec2 import-key-pair --key-name deis --public-key-material file://~/.ssh/deis.pub
```
选择实例数量
--------
脚本将默认开通3台服务器。你可以通过设置DEIS_NUM_INSTANCES修改该值:
```shell
$ export DEIS_NUM_INSTANCES=5
```
注意,为保证调度正常工作,集群必须至少由三个节点组成,并且成员数量永远为奇数。更多信息,见“最佳的etcd集群规模”。
不支持少于三个节点的Deis集群。
生成新的发现URL
--------
发现URL将节点的地址和元数据保存在一个唯一的标识下,以将etcd实例连接在一起。在仓库根目录下运行以下命令来生成一个带有新的发现URL的contrib/coreos/user-data文件:
```shell
$ make discovery-url
```
user-data中包含了必要的脚本,因此不要在未运行make discovery-url前开通Deis集群。
自定义cloudformation.json
--------
任何deis.template.json中默认定义的参数都能被cloudformation.json中设置的值覆盖,比如:
```json
{
"ParameterKey": "InstanceType",
"ParameterValue": "m3.xlarge"
},
{
"ParameterKey": "KeyPair",
"ParameterValue": "jsmith"
},
{
"ParameterKey": "EC2VirtualizationType",
"ParameterValue": "PV"
},
{
"ParameterKey": "AssociatePublicIP",
"ParameterValue": "false"
}
```
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),你需要设置:
```shell
export VPC_ID=vpc-a26218bf
export VPC_SUBNETS=subnet-04d7f942,subnet-2b03ab7f
export VPC_ZONES=us-east-1b,us-east-1c
```
运行开通脚本
--------
运行cloudformation开通脚本来生成一个新的CoreOS集群:
```shell
$ cd contrib/ec2
$ ./provision-ec2-cluster.sh
{
"StackId": "arn:aws:cloudformation:us-west-1:413516094235:stack/deis/9699ec20-c257-11e3-99eb-50fa01cd4496"
}
Your Deis cluster has successfully deployed.
Please wait for all instances to come up as "running" before continuing.
```
检查AWS EC2网页控制面板,并等待所有实例的“Status Checks”通过。这将花费数分钟时间。
配置DNS
--------
参考“配置DNS”获取正确设置Deis相关DNS记录的更多信息。
安装Deis平台
--------
现在你已经完成了集群开通,请参考“安装Deis平台”开始平台安装。

【Deis文档】Deis安装之系统需求

DockOne 发表了文章 • 0 个评论 • 2966 次浏览 • 2014-11-21 22:38 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 在部署Deis时,首先要保证主机的配置足够好。Deis是一个高可用的分布式系统,这也就是说Deis组件和你部署的应用可以在其主机因为种种原因(失效、重启、自动调节器等) ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

在部署Deis时,首先要保证主机的配置足够好。Deis是一个高可用的分布式系统,这也就是说Deis组件和你部署的应用可以在其主机因为种种原因(失效、重启、自动调节器等)脱离集群时,迁移到集群中健康的主机上。因此,集群中任何主机都要留有足够的空闲资源,用于承担运行失效主机服务带来的额外负载。
资源
--------
Deis组件在集群中大约占用2 - 2.5GB内存和30GB的硬盘空间。因为每台主机都要能够承担其他主机失效引起的额外负载,所以每台主机必须拥有:
* 至少4GB内存(越多越好)
* 至少40GB的硬盘空间
注意,这些估值只针对Deis和CoreOS,你还需要为部署的应用留下足够的空间。
在低于规格的主机上运行Deis可能会使系统超载,最后导致组件失效、etcd/fleet错误和其他问题。
集群规模
--------
为保证调度正常工作,集群必须至少由三个节点组成,并且成员数量永远为奇数。这主要是因为底层CoreOS集群必须能够获取一个法定人数(见“最佳的etcd集群规模”)。此外,存储组件保持着存储数据的三个复本,因此要求至少三个节点。
重要说明

不支持少于三个节点的Deis集群。
如果无法承受运行多台(至少三台)规格充足的机器,建议你研究一下Dokku项目。Dokku由Deis赞助,适合于不需要高可用分布式系统的环境(比如本地开发、测试等)。

【Deis文档】Deis安装之快速开始

DockOne 发表了文章 • 0 个评论 • 5200 次浏览 • 2014-11-21 21:43 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 快速开始 ======== 接下来的这些步骤将会帮助你搭建一个Deis集群。 获取源码 -------- 首 ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

快速开始
========
接下来的这些步骤将会帮助你搭建一个Deis集群。
获取源码
--------
首先你需要先获得Deis源码以运行本文中的命令。你可以通过release页面下载压缩包,或者使用`git`克隆仓库:
```shell
$ git clone https://github.com/deis/deis.git
$ cd deis
```
如果你参与Deis开发或在本地构建组件,请改用`go get`克隆源码到你的$GOPATH中:
```shell
$ go get -u -v github.com/deis/deis
$ cd $GOPATH/src/github.com/deis/deis
```
生成SSH密钥
--------
deisctl工具使用SSH通道与远程主机进行通讯。如果你还没有SSH密钥,运行以下命令生成一个名为deis的密钥对:
```shell
$ ssh-keygen -q -t rsa -f ~/.ssh/deis -N '' -C deis
```
生成新的发现(Discovery)URL
--------
发现URL将节点的地址和元数据列表保存在一个唯一的地址下,以此协助etcd实例连接在一起。你可以在仓库根目录下运行以下命令,生成用于你平台的发现URL。
```shell
$ make discovery-url
```
这将在user-data文件中写入一个新的发现URL。user-data文件包含了一些重要的脚本,因此它是开通Deis的必要条件。
检查系统需求
--------
Deis提供的脚本默认机器可以运行Deis,不过这也是可以自定义的。请在选择运行Deis的机器规格时参考“系统需求”中的资源要求。
选择一个供应商
--------
选择以下的供应商,开始部署一个新的集群:
* 亚马逊AWS
* DigitalOcean
* Google Compute Engine
* Rackspace
* Vagrant
* 裸机
配置DNS
--------
参考“配置DNS”以获取正确设置Deis相关DNS记录的更多信息。
安装Deis平台
--------

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

Docker处理随机RPC端口问题

icebolt 回复了问题 • 3 人关注 • 3 个回复 • 4420 次浏览 • 2014-11-21 21:33 • 来自相关话题

【Deis文档】Deis的组件

DockOne 发表了文章 • 0 个评论 • 4310 次浏览 • 2014-11-20 20:24 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 Deis包含很多的组件,这些组件一起组成一个分布式的PaaS。每一个Deis的组件都可以以一个容器或者一组容器的方式部署。 几个组件。 控制器组 ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

Deis包含很多的组件,这些组件一起组成一个分布式的PaaS。每一个Deis的组件都可以以一个容器或者一组容器的方式部署。
几个组件。
控制器组件(Controller)
---------
控制器组件是一个HTTP API服务器。Deis命令行客户端可以与此组件交互。
数据库组件(Database)
--------
数据库组件是一个PostgreSQL服务器,用来持久化平台状态。备份和WAL日志会被推送到Store组件
缓存组件(Cache)
-------
缓存组件是一个Redis实例,在controller和registry中会被使用到。
Builder
---------
Builder使用Git服务器来处理应用的构建。构建步骤为:
    []接受来自于SSH的`git push`请求[/][]通过SSH的密钥验证用户[/][]授权用户Git仓库的写权限[/][]根据更新的Git仓库构建一个新的Docker镜像[/][]将最新的配置添加到最终的Docker镜像[/][]将镜像推送到平台的注册中心[/][]在控制器上创建一个新的发行版本[/]
一旦新的发行版本生成,新的容器会在平台上自动的进行部署。
Registry
-----
Registry保存Docker镜像。镜像的数据保存在Store中。
Logspout
--------
Logspount组件是一个自定义化的progrium's logspount,它可以运行在CoreOS集群的主机中,并从运行的容器中收集日志,最后再将日志发送到日志组件
Logger
-----
Logger组件其实是一个syslog服务器,它可以用来收集来自Logspout的日志。这些数据可以通过控制组件查询。
发布器(Publisher)
-----
发布器组件是一个使用Go语言编写的微服务,可以将容器发布到etcd,并暴露给平台的路由器(Router)。
路由器(Router)
-----
路由组件使用Nginx将流量路由到应用容器。
Store(存储)
--------
存储组件使用Ceph来保存需要存储状态的Deis组件,包括RegistryDatabaseLogger

【Deis文档】Deis的架构

DockOne 发表了文章 • 0 个评论 • 5276 次浏览 • 2014-11-20 20:22 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 Deis使用面向服务的架构,架构中的组件包括控制层(Control Plane)、数据层(Data Plane)和网状路由(Router Mesh)。 架构 ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

Deis使用面向服务的架构,架构中的组件包括控制层(Control Plane)、数据层(Data Plane)和网状路由(Router Mesh)。
架构图
-------

管理员使用Deisctl API与集群的控制层、数据层和网状路由进行交互。
而平台的用户(开发者)通过Deis API与控制层进行交互。
控制层通过调度器将任务发送到数据层。网状路由用来路由请求到控制层和数据层。因为网状路由与外网连接,所以它的前端一般是负载均衡器。
控制层
-------

控制层负责整个平台的管理功能。控制层的组件(蓝色的部分)全部由Docker容器实现。
存储(Store)组件包含一些更小的组件。这些小的组件运行着容器化Ceph集群,Ceph集群可以为控制层的组件提供用于存储blob的API和POSIX文件系统API。具体组件如下:
    []Registry - 一个Docker Registry,用来保存镜像和配置数据[/][]Database - 用来保存平台的状态的Postgres数据库[/][]日志- 一个syslog日志服务器,它会收集数据层的日志[/]
终端用户主要通过控制器组件(Controller)暴露的HTTP API来与控制器组件交互。用户也可以通过`git push`与Builder进行交互。数据层-------数据层是用户容器(蓝色的部分)以用户身份运行的地方。平台调度器负责将容器发布到数据层的主机上。Deis也要求一些轻量级的组件运行在这些主机上:拓扑结构
---
对于小规模的部署你可以在三个服务器上运行整个平台,包括控制层、数据层和网状路由。
对于大规模的部署,你可以将控制层和网状路由分割开来,然后将数据层扩展到任意多的服务器。

【Deis文档】Deis的基本概念

DockOne 发表了文章 • 0 个评论 • 5930 次浏览 • 2014-11-20 20:17 • 来自相关话题

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 Deis是一个轻量级的应用程序平台,用来在CoreOS集群中以Docker容器的方式部署并扩展十二要素应用程序(中文资料)。 十二要素(Twelve-Fac ...查看全部
注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

Deis是一个轻量级的应用程序平台,用来在CoreOS集群中以Docker容器的方式部署并扩展十二要素应用程序中文资料)。
十二要素(Twelve-Factor)
----------------------
十二要素应用程序是一套方法论,用来指导如何构建现代的、可扩展的分布式应用程序。
我们觉得它集合了很多的关于软件即服务(software-as-a-service)的经验和智慧,特别是在Heroku的平台上。
Deis遵循十二要素应用程序的方法论和最佳实践来设计运行应用程序。
Docker
------
Docker是一个开源项目,通过一个轻量级、可移植、可独立运行的容器来打包、交付并运行应用程序。
Deis能把你的应用组装(curates)成Docker的镜像,然后通过Docker容器的方式在集群上发布。
(Deis自身也是一系列的互相写协作的Docker容器。)
CoreOS
------
CoreOS是一个新的、精简的Linux发行版,其架构专为运行现代的、容器式程序栈而设计。
Deis运行在CoreOS上,并部署到任何地方 - 公有云、私有云、裸机(bare metal),甚至是你的工作站。
CoreOS能让Deis高弹性(high resilience)、规模化的部署应用或者服务,并且操作简单。
应用
---
Deis是围绕着应用的概念而设计的。应用存在集群上,并且使用容器来处理请求。
开发者使用应用来推送代码、更改配置、增加进程数、查看日志、运行管理命令和其他很多事情。
构建、发布、运行(Build, Release, Run)
-----------------------------------

# 构建阶段
Builder组件处理git push请求并且在临时的Docker容器内构建应用并生成一个新的Docker镜像(image)。
# 发布阶段
在发布阶段,一个Build和配置结合起来创建出一个新的数字型的发行版本(release)。紧接着这个发行版本会被推送到Docker registry以便稍后执行。当一个新的build被创建或者配置发生改变时,都会触发构建新的发行版本,这样回滚代码或配置更改都会变的很容易。
# 运行阶段
在运行阶段,容器会被分派到调度器(scheduler)并且更新相应的路由。调度器负责将容器发布到主机上,并且在保证它们在集群上的均衡。容器一旦处于健康状态koi会被推送到路由组件。旧的容器只有在新的容器上线并且开始处理请求后才会被收起来会以保证零停机部署。
备份服务
-------
Deis把数据库、缓存、存储、消息系统以及其它后端服务当作附加资源,以符合十二要素应用程序的最佳实践。
应用通过使用环境变量附加后端服务。因为应用与后端服务之间没有耦合,所以应用可以任意独立的进行扩展,与由其它应用提供的服务通信,或者切换为外部服务以及第三方提供的服务。

十大正在快速演进的Docker项目

DockOne 发表了文章 • 5 个评论 • 4776 次浏览 • 2014-11-18 17:45 • 来自相关话题

Docker无疑是今年以来最火的开源技术,Docker现在已经成为目前IT界创业者和创新者的宠儿。无论谷歌、微软、亚马逊、IBM等科技厂商都积极支持Docker技术,Docker虽然入门和使用起来非常简单,但整个生态系统还是挺庞大的,而且其底层技术也都很复杂, ...查看全部
Docker无疑是今年以来最火的开源技术,Docker现在已经成为目前IT界创业者和创新者的宠儿。无论谷歌、微软、亚马逊、IBM等科技厂商都积极支持Docker技术,Docker虽然入门和使用起来非常简单,但整个生态系统还是挺庞大的,而且其底层技术也都很复杂,目前基于Docker技术的项目如雨后春笋般出现,今天,笔者总结了目前正在快速演进的Docker相关技术,分享给大家。
Kubernetes
在今年夏天Dockercon 上Google基础设施副总裁Eric Brewer宣布Kubernetes,建于Docker之上的Kubernetes可以构建一个容器的调度服务,其目的是让用户透过Kubernetes集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是Container Pod(容器仓)。
Docker Pods
跟Kubernetes密切相关,Eric Brewer也谈到了容器并且引入了“ pods ”的概念。这是一个在Kubernetes里面非常关键的概念。他说:“在谷歌,我们很少部署一个容器,相反,他们是将容器组合在一起。”
他指出Docker容器需要一个内部和外部端口的常量映射,这是一个需要管理、存储和查询的复杂附加层——甚至在作为单一机组部署的pod容器之间。因此,在Google,他们确保每个容器的pod都有自己的IP地址。这意味着使用的端口无论是内部和外部都是一样的。这样做去掉了管理端口的复杂附加层。现在,找到pods运行一个特定的服务,你只需要这些pods的IP地址列表。谷歌计算引擎是目前唯一的云基础设施服务,帮助分配一个IP子网给虚拟机——因此在这里面每个Docker pod只有一个IP。
Weave
Weave是由Zett.io公司开发的,它能够创建一个虚拟网络来连接部署在多台主机上的Docker容器。通过Weave所有的容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问Weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。Weave能够穿透防火墙并运行在部分连接的网络上。另外,Weave的通信支持加密,所以用户可以从一个不受信任的网络连接到主机。
CoreOS
CoreOS是一种新的、架构体系重新设计的Linux发行版,可以运行在既有的硬件或者云上。CoreOS使用systemd和fleet来对容器进行管理,通过 etcd进行服务发现和配置信息共享。CoreOS目前风头正劲,目前已经获得融资并宣布收购私有Docker仓库服务商Quay.io,进军企业 级的Registry。另外,CoreOS的etcd等组件也获得了社区的认可,并得到了大规模使用。CoreOS已经发布首个稳定版本,目前主流的云服 务商都提供了对CoreOS的支持。
Flannel
它是由CoreOS团队针对Kubernetes设计的一个覆盖网络工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。Flannel之前的名字是 Rudder,Kubernetes 会为每一个 POD 分配一个独立的 IP 地址,这样便于同一个 POD 中的Containers 彼此连接,而之前的 CoreOS 并不具备这种能力。为了解决这一问题,Flannel 通过在集群中创建一个覆盖网络为主机设定一个子网。
Docker For Windows
最近,微软加入了Docker的潮流,说他们打算为Windows建立一个集装箱化解决方案并在之上提供一个与Docker兼容的API。虽然,Docker图像在Linux和Windows容器之间永远不可能便携,但它的确意味着已经有一些可用的工具构建在Docker API层上。
Atomic
Project Atomic是最近才发布的一个项目,它也是一个瘦身版的Linux,只包含systemd/geard /rpm-OSTree以及Docker组件,专门用来部署和管理Docker容器。它能在接近硬件裸机级别上高性能的运行大量容器,而且它还是基于SELinux的,在安全上也有保障。
Cloud Foundry Diego
ActiveState的重点是开源PaaS项目。我们认为由Diego项目引起的Docker集成正促使生态系统往正确方向上前进。像Kubernetes一样,Diego是一个调度程序,同时,它主要与Cloud Foundry配合运行。我们也看到Windows .NET从Uhuru那里集成Diego,对Windows来说Docker已成为现实,我相信我们将看到这些技术融合。
Flynn
Flynn是一个使用Go语言编写的开源PaaS平台,Flynn使用模块化的设计,任何一个模块都可以独立的进行修改、升级和替换。Flynn的目标是简化分布式环境中应用的部署和维护,通过使用 git push命令,Flynn就可以将应用部署到Docker,从而省去了复杂的配置和操作。Flynn目前仍在开发中,尚未发布稳定版,但已经获得了很多公司的资助,它被称为是下一代的开源PaaS平台。
Fig
Fig是一个基于Docker的用于快速搭建开发环境的工具,目前Fig团队已经加入Docker公司。Fig通过一个配置文件来管理多个Docker容 器,非常适合组合使用多个容器进行开发的场景。Fig可以和Docker一起来构建基于Docker的复杂应用,CoreOS的功能强大但是配置比较复 杂,而Fig相对而言比较简单,但是很难在多台服务器上做扩展,从Docker官方收购Fig也可以看到该项目的重要性。

CoreOS是什么样的一个操作系统?

回复

DockOne 发起了问题 • 4 人关注 • 0 个回复 • 6281 次浏览 • 2014-11-18 17:40 • 来自相关话题