今天,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和我们一起工作!
网友评论