手把手教你在 CoreOS 上构建你的第一个应用

手把手教你在 CoreOS 上构建你的第一个应用

【编者的话】作者以自己的Mac笔记本为例,介绍了如何在CoreOS上安装WordPress应用,没有过多的理论解释,全部是实战类教程,推荐想快速了解CoreOS的同学阅读。

我相信你一定听说过CoreOS,但是你是否真正在它上面部署过一个应用了?可能很多人都没有部署过。在CoreOS上构建一个应用是非常困难且令人沮丧的(译者注:frustrating,用了这个词,看来确实难)。因为文档比较散乱,并且你不得不在开始之前学习所有相关的技术,包括etcd、systemd、Docker。如果你和我一样比较懒惰,只是想试试CoreOS而不想小题大做,那么让我来帮你吧。接下来我们将会在CoreOS上创建一个简单的WordPress应用以及MySQL数据库。

Screen-Shot-2014-03-25-at-2.13_.49-PM_.png

如果你使用的是Mac,可以通过安装命令行工具来控制CoreOS

fleetctl 和 etcdctl 是原生的控制CoreOS集群的工具,安装步骤如下:


  1. $ brew install go etcdctl 
    $ git clone https://github.com/coreos/fleet.git
  2. $ cd fleet
  3. $ ./build
  4. $ mv bin/fleetctl /usr/local/bin/

安装一个本地的CoreOS集群,并运行

Vagrant是非常简单的。


  1. $ git clone https://github.com/CenturyLinkLabs/coreos-vagrant 
    $ cd coreos-vagrant/cluster
  2. $ vagrant up --provision

现在你的笔记本上有一个由最小的3个CoreOS系统组成的集群。简单极了,现在让我们使用fleetctl来检查下。


  1. $ fleetctl list-machines MACHINE IP METADATA
  2. 09fd0a88... 10.0.2.15 -
  3. 77763947... 10.0.2.15 -
  4. f31c383c... 10.0.2.15 -

太棒了,跑起来了。

使用fleet在CoreOS集群上部署应用

现在你有一个CoreOS集群了。接下来fleetctl命令可以让你在CoreOS集群节点上部署应用,但要用fleet写服务文件。当然,不需要你自己来写。你可以用简单的YAML格式来生成服务(service)文件。

$ sudo gem install bundler fig2coreos
$ cat fig.yml

-


  1. web:
  2. image: ctlc/wordpress
  3. ports:
  4. - 80:80
  5. environment:
  6. DB_USER: root
  7. DB_PASSWORD: qa1N76pWAri9
  8. links:
  9. - db
  10. db:
  11. image: ctlc/mysql
  12. ports:
  13. - 3306:3306
  14. environment:
  15. MYSQL_DATABASE: wordpress
  16. MYSQL_ROOT_PASSWORD: qa1N76pWAri9

-


  1. $ fig2coreos myapp fig.yml coreos-files
  2. $ cd coreos-files
  3. $ ls
  4. db-discovery.1.service
  5. db.1.service
  6. web-discovery.1.service
  7. web.1.service 

fleetctl客户端工具使用etcd的键值存储来确定它要访问的服务器以及访问集群中有etcd服务端运行的服务器。下面是如何在CoreOS集群中部署你的应用。

$ fleetctl start db.1.service
$ fleetctl list-units
UNIT        LOAD    ACTIVE  SUB DESC        MACHINE
db.1.service    loaded  active  running Run db_1    9c008961.../10.0.2.15
$ fleetctl start web.1.service
$ fleetctl list-units
UNIT        LOAD    ACTIVE  SUB DESC        MACHINE
db.1.service    loaded  active  running Run db_1    9c008961.../10.0.2.15
web.1.service   loaded  active  running Run web_1   9c008961.../10.0.2.15 

现在你的程序运行起来了,但是服务还没有注册到etcd。幸运的是,fig2coreos已经为我们自动生成服务文件。

$ fleetctl start db-discovery.1.service
$ fleetctl start web-discovery.1.service
$ fleetctl list-units
UNIT            LOAD    ACTIVE  SUB DESC        MACHINE
db-discovery.1.service  loaded  active  running Announce db_1   9c008961.../10.0.2.15
db.1.service        loaded  active  running Run db_1    9c008961.../10.0.2.15
web-discovery.1.service loaded  active  running Announce web_1  9c008961.../10.0.2.15
web.1.service       loaded  active  running Run web_1   9c008961.../10.0.2.15
$ etcdctl ls --recursive
/services
/services/web
/services/web/web_1
/services/db
/services/db/db_1
$ etcdctl get /services/web/web_1
{ "host": "core-03", "port": 80, "version": "52c7248a14" }
$ etcdctl get /services/db/db_1
{ "host": "core-03", "port": 3306, "version": "52c7248a14" }

部署完成

就这样,搞定了。在Vagrant 1.5使用Vagrant Cloud账号,你可以访问你的WordPress应用。如下图:

$ cd ~/coreos-vagrant/cluster/

找出哪个机器监听着你的80端口:

$ etcdctl get /services/web/web_1
{ "host": "core-03", "port": 80, "version": "52c7248a14" }

$ vagrant share core-03 --http 80
==> core-03: Detecting network information for machine...
core-03: Local machine address: 192.168.65.2
core-03: Local HTTP port: 80
core-03: Local HTTPS port: disabled
==> core-03: Checking authentication and authorization...
==> core-03: Creating Vagrant Share session...
core-03: Share will be at: quick-iguana-4689
==> core-03: Your Vagrant Share is running! Name: quick-iguana-4689
==> core-03: URL: http://quick-iguana-4689.vagrantshare.com

Screen-Shot-2014-03-25-at-1.58_.16-PM_.png

结论

现在你可以用CoreOS做很多事情,但至少现在你已经做完基本的工作了,如果你打算在生产环境使用多主机的Coreos集群。需要你在系统中增加ambassador容器。事实上,你可以通过ambassador容器连接etc服务器。

原文发布时间:2014-12-24

本文来自云栖合作伙伴“linux中国”

时间: 2024-09-30 15:57:35

手把手教你在 CoreOS 上构建你的第一个应用的相关文章

CoreOS上的Fleet,第一部分

本文讲的是CoreOS上的Fleet,第一部分,[译者的话]原文作者是一名科技文章的作者.他的这篇文章主要是简单介绍利用fleet来实现服务高可用的完整流程,让读者对fleet有一个直观的了解.合适大家入门fleet的一篇文章. 服务器宕机是经常发生的事情.然而我们还是非常希望不会因为这样导致应用程序挂了,因而影响到业务的正常服务.这也是为什么服务的高可用成了运维工程师选择把应用部署到云端上去的一个最重要的理由. Fleet,一个CoreOS上的工具,就能解决上述的问题,把你从整天提心吊胆中释放

手把手教你在Mac上导出所有联系人

  无论是移动设备还是桌面设备,通讯录信息都是重要和有用的数据.Mac 让通讯录数据的导出变得简单,无论你想分享或者导出整个通讯录或是单个联系人卡片,OS X 都可以让你快速完成,今天我们要介绍的是导出所有联系人的方法. 从 Mac 通讯录中导出联系人信息也可以看作是对联系人数据的备份,你可以将这些联系人信息保存为单个 vCard 文件或者是.abbu 文件,这些文件格式可以让你以后将联系人导入到不同的通讯簿或者是Mac上的其它通讯录应用. 如何从 OS X 的通讯录应用中导出所有联系人 1.

手把手教你在ECS上部署Oracle RAC

1概述 本文将向读者详细介绍如何基于阿里云的SSD共享块存储完成ORACLE RAC的部署,同时描述ORACLE RAC架构下使用阿里云ECS(IO优化实例.独享型 sn2).SSD共享块存储配置Oracle RAC方法和步骤.感兴趣的读者不妨认真阅读一下. 2环境准备 环境准备步骤如下: 申请云主机,包括2个RAC节点.supernode节点(同时用作压测机) 购买SSD共享块存储3块 2.1网络拓扑图 压测拓扑 RAC ON ECS 拓扑 RAC规划 2.2修改主机名 #vi /etc/sy

【手把手教你Maven】构建过程

转载自:http://www.cnblogs.com/xing901022/p/5002037.html [手把手教你Maven]构建过程 Maven是一款进行 依赖管理.项目构建.信息管理 为一体的工具. 它不像Make具有复杂的命令.也不像Ant需要手动编写大量的重复代码就能进行项目的构建: 还能提供强大的依赖库管理,避免jar包混乱与冲突: 还可以方便的管理项目的信息.知识产权等内容. 本篇的写作目的在于帮助那些之前没有使用过,或者是对maven还没有太多概念的朋友,学会使用maven,利

手把手教你制作AppPreview视频并上传到appStore进行审核

手把手教你制作AppPreview视频并上传到appStore进行审核   注意,你需要使用iMovie才能够制作AppPreview视频文件,用QuickTime录制的无效!   最终效果   1. 新建一个事件     2. 创建应用程序预览   3. 导入视频文件(该视频文件需要你用QuickTime事先进行录制,此处不赘述)   4. 导入音频文件   5. 将视频文件音频文件拖到编辑区域   6. 加载转场文件   7. 分离文件并添加转场文件   8. 剪辑结束   9. 导出并生成

手把手教你:如何让Windows恋上Linux bash

4月7日,微软开始向用户推送Windows 10 biuld 14316预览版,该版本不仅在Cortana跨平台支持.Edge浏览器支持和虚拟桌面方面得到了优化,还能够原生支持Linux bash. 对现在的开发者来说,Linux已经是很多人必须的开发平台,在windows上不必借助虚拟机就能运行Bash,无疑有极大的吸引力. 但是微软并没有在最新版本Windows 10里直接内置Bash,需要开发者进行一些安装和设置工作.下面,笔者将会手把手教你,如何实现Ubuntu on Windows.

机器学习零基础?手把手教你用TensorFlow搭建图像识别系统(三)| 干货

雷锋网按:本文是介绍用TensorFlow构建图像识别系统的第三部分. 在前两部分中,我们构建了一个softmax分类器来标记来自CIFAR-10数据集的图像,实现了约25-30%的精度. 因为有10个不同可能性的类别,所以我们预期的随机标记图像的精度为10%.25-30%的结果已经比随机标记的结果好多了,但仍有很大的改进空间.在这篇文章中,作者Wolfgang Beyer将介绍如何构建一个执行相同任务的神经网络.看看可以提高预测精度到多少!雷锋网(公众号:雷锋网)对全文进行编译,未经许可不得转

手把手教你用Docker部署一个MongoDB集群

本文讲的是手把手教你用Docker部署一个MongoDB集群,[编者的话]MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.本文介绍了如何使用Docker搭建MongoDB集群. 本文我会向大家介绍如何使用Docker部署一个MongoDB集群,具体如下: 2.6.5版本的MongoDB 有3个节点的副本集(Replica set) 身份验证 持

在CoreOS上搭建一个WordPress程序操作实例_Linux

CoreOS是一个专门为大规模服务器部署定制的Linux精简系统,它将操作系统和应用程序完全分离,从而降低操作系统和应用程序的耦合度,同时解决了现有Linux服务器在容器资源.权限管理方面出现的问题.就目前来说,CoreOS会是未来操作系统的发展趋势. 那你有没有亲自在CoreOS上部署一个应用程序呢?相信大多数人都没有过这样的经验,在CoreOS上建立一个应用程序可以说是非常辛苦及沮丧的.因为在开始建立程序之前你首先必须了解所有不同的技术. 下面,我们将手把手地教你来创建一个简单的WordPr