我司CTO一周精华整理,让你少走三年弯路

2016-01-11  本文已影响628人  热爱生活的Te小姐

今天,Kuick的CTO受邀到数人云做技术分享,现场各位技术大牛拿出的看家干货,据说可以让各位技术伙伴们少走三年弯路,我们CTO更是无比大方地把有关Docker的具体操作详解全部分享给大家。以下就是所有分享内容啦~

1.自我介绍

大家好,我是Kuick的CTO,我叫巫从文。

首先跟大家介绍一下Kuick,Kuick是一家初创型互联网公司,

我们的产品KuickDeal是一款移动端轻量级,

用于远程销售与远程开会的智能远程工具,

可以帮助销售人员在售前与跟进阶段,提升销售效率,也可以让沟通变得更高效更自由。

我主要负责产品的架构设计、处理技术难题、以及产品的上线运维等工作。

喜欢学习新技术并在项目中实践。

2.遇到的问题

部署耗时:由于我们的服务较多,版本发布的时候,需要每个服务都单独编译、打包、部署,一般要1到2个小时才能完成部署任务;迁移麻烦:如果需要部署新的机器,每个新机器还需要配置环境,很麻烦;扩展性差:现在的服务依赖都是单向直接依赖,没有做负载均衡,不能扩展。

3.技术选型

>>>>什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

>>>>什么是Docker Compose

Docker Compose 是一个部署工具,他将所有容器参数通过精简的配置文件来存储,用户最终通过简短有效的docker-compose命令管理该配置文件,完成Docker容器的部署。这样如果用户同时有多个Docker需要启动,就很方便,出现错误时修改也方便。

>>>>什么是Jenkins

首先说什么是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。而Jenkins是一个自动构建服务,使用Java实现,有成百上千插件,使用他可以很方便实现持续集成。

>>>>Mesos和数人云API

Mesos计算框架是一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Marathon、Hadoop、MPI、Hypertable、Spark等框架。使用ZooKeeper实现容错复制,使用Linux Containers来隔离任务,支持多种资源计划分配。

数人云作为基于Mesos的最成熟Docker生成环境,其提供的弹性的云生产环境、提升资源利用率、高可用、易部署、易使用等特性,使得搭建高可用高并发的系统变得非常容易。

上图就是使用数人云搭建的Kuick集群,该集群会提供一个网关服务和一个服务发现代理服务。网关服务用于整个集群对外提供服务,一般将80和443端口绑定到网关上;服务发现代理用于内部服务注册和服务代理,有了这套机制就能实现服务的水平扩展了。这里需要注意的是,实现水平扩展的服务需要是无状态服务才行,一般讲服务的状态引出到数据库或者缓存服务里。

4怎么做

>>>>

为每一个子项目编写Dockerfile

为了将我们的项目运行到Docker里面,我们需要用Dockerfile来构建一个镜像。但是每次都从头开始构建镜像会很慢,所以每个项目我们都编写两个Dockerfile。一个用于生成base镜像,另一个用于日常构建。就拿我们的API服务器举例:

>>>>

Docker registry 安装

当我们生成了一个发布镜像,例如 registry.kuick.cn/cc/api-server:1.1.0,为了让其他机器也能访问到这个镜像,我们就需要一个私有的镜像仓库来存储这个新生成的镜像。

>>>>Jenkins的安装

sudo docker run --name jenkins -d -p 49001:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home --env JAVA_OPTS=-Duser.timezone=GMT+8 jenkins

配置nginx将域名 jenkins.kuick.cn 转到 本机 49001端口

>>>>配置 web server Job 示例

a、基础配置

b、源码管理

c、构建触发

d、构建

e、构建脚本

f、提交代码后自动构建

>>>>部署集成测试环境

在集成测试环境所有服务跑在一台云主机里,每一个服务都会自动部署,当有开发人员提交代码到对应仓库的开发分支。

>>>>部署QA测试环境-生成镜像

每天晚上2点,集成测试环境的所有服务都将生成一个镜像上传到镜像仓库。通过添加jenkins Job kuick-test-server实现。

>>>>

部署QA测试环境-部署镜像

QA测试环境,由两台云主机构成,部署使用docker-compose来做。

对应节点1的 docker-compose.yml

每天晚上当 kuick-test-server执行完成后将自动触发QA环境的部署

>>>>部署内部测试环境

在准备上线前,需要部署一套预发布版,这是通过创建了一个 kuick-test3-server 的 jenkins任务来执行。

这个任务需要手动触发。

>>>>产品上线

上线通过创建 kuick-prod-server 的 jenkins任务来执行。执行流程跟内测流程一样。

5.总结

自从使用Jenkins后,不再担心忘记部署test2了;自从使用数人云后,不再担心高并发了,哈哈。

以上内容如果大家觉得不够过瘾的话,欢迎来Kuick共同探讨。另外如果有兴趣加入Kuick,可以戳阅读原文,或者联系我哦~

点击http://www.lagou.com/gongsi/93083.html#rd和我们一起工作!

上一篇下一篇

猜你喜欢

热点阅读