微服务架构的部署_第1页
微服务架构的部署_第2页
微服务架构的部署_第3页
微服务架构的部署_第4页
微服务架构的部署_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

署本文从以下个方面简说明微服架构项目的实践经验:架构选型、发测试环下的相关具支持、人员分工及发部署流、相关设及注意事项。最后,将根据实践经讨论提高服架构下开发和运维效率的切需求,进步理清本目所实现的容器服务管理平台的完性需求。本项目是一企业级的器服务管平台,该平台的功能是基于容器实的应用运环境管理以及应用开发阶的持续集和持续发。简单的理解该平台的核心功能之就是管理杂应用的发和运维环境,提高服务架构的开发和维效率。项目的开发背景如下:首先,该系具有典型布式应用统特征:该平台所运的服务器置不高,如华为RH1288这类低配置务器,允许硬件失败;系统平台要可根据实用户数的模进行伸缩部署,保证硬件资源的理利用;由于系统平之上需要行若干企应用的开发和运行环境可靠性是常重要的不允许点失效。其次,本系功能复杂从架构的度需要将系统分成多个层次和若干子系统。同的层次子系统根据具体况需要采不同的开语言,由不同的开发小组完成。第三,项目成员由几城市的异团队协同开发,统一的开发环境和同工具是不可少的针对上述项背景的考,本项目择基于微服务架构进行项目开发。开发测试部署用到的工具集“工欲善其、必先利器”,借适合的流程和相关工具集,才能提微服务架下的应用发效率。本项目用DevOPs流程并用一套相关具集实现用开发管,提高开发、测试、部署的效率。代码库:本目使用分式代码库Gitlab它的功能不限于代码仓库,还包括reviews(代码审查)issuetracking(问跟踪、wiki等功,是代码理和异地队沟通、协作工具的首选。Docker镜像仓库、Docker:本项目用器贯穿整软件开发程,以容作为应用发布的载体,应用的开发环境测试发版境都运行Docker容中。对于复杂的开发和维环境管Docker具先天的优势,目前内外的互网公司有多数都已经将Docker应用到了他的开发或生产环境了。K8s:项目采Kubernates作为容器度管理的础环境,发环境、测试环境的Docker容器都由K8s负责调度理。Jenkins:快速部署发布不开老牌续集成明星Jenkins,本项通过Jenkins任务构代码、将应用打包成Docker镜像,最终布到K8s环中将容器行起来。Shell本:编Shell脚本项目打分支发布应用开发阶段配置管理工作自动化,降低运维门槛、提高置管理和维的效率

WIKI:Gitlib上的WIKI功能对简陋,因项目组选作为地团队协和沟通的具,团队成员可将设计文、知识分文档、公告信息等信息可以更新到wiki上,便协同开发禅道:为了于开发计、开发任和联起来本项目使禅道进行开发任务和bug理。人员工及发流微服务架构用的开发部署的复度都是远大于单体式应用的,靠运人员手工配置管理然是难于应付了DevOps主张自动化任处理方式实现软件交付及基础设施新可以说是服务架构用开发和运维必要条件本项目采DevOps的念的开发流程进行开发实现部署运维的自化需要工具,同时DevOps强调件开发与其他员工及管理层间的协作与沟通因此明确人员分工开发流程是与工同样重要因素。通的说,就是有了工具,大家要知道么使用工,并且愿使用工具才能真正达提高研发率的目的项目组的主工作成员非也是做发、测试和系统管理三类工作,这只说明与统的企业用开发过程中三人员所做工作略有同的工作内容。开发人员:a)开发者开发设计需要将涉到接口部分设计更新到上,供调者评审和用。b)开发者了编写程逻辑外,需要注意编写单元测试用例,因为布式应用调相对复,先做在编写单务时做好测试再联能够提高开发效率。c)由于本目是采用Docker容作为发布载体的,开发者可能需要改DockerFile模板的部分参数于部阶段能将译后的代打包到镜像中对于传统的开发方式是对开发额外的要。让所有开发懂Dockerfile似乎要求有点高,其实每个子项目中的DockerFile及脚本一是在搭建目框架时,要系统配管理员编的好的模板,若开发人员不懂相关术,也可跟配置管员沟通需求,由配置理员修改关文件。测试人员:试人员的作没有什特别,只是需要注意除了每个Sprint阶段的测外,还需配合开发人员续集成的试;系统配置管人员:一DevOps的开发方式是赖于云基平台以及动化发布工具的,因此相对于传统开发式,对系配置管理的技术要求会比较低。但是,我们项目开发的就是构一个能支撑DevOps流的平台,开发本身不具备相应的平台基础。因此,我项目最初系统配置理工作是由架构师做的,主需要做如这些事:a)部署运项目组开需要用到共的服务组件、例如zookeeper注中心DockerRegistry镜像仓库、数据等;b)为子项编写在git上打分支脚本,便于测试发版的时候打分支c)编写各型应用发部署成镜的Dockerfile;

d)制作或在网上找现成的开所需环境的Docker镜像,并Push到项开发使用私有镜像库中;e)编写Shell脚本实将子项目包成Docker镜像并且Push到镜仓库中。f)在Jenkins上配置动编译或部署任务,实现持续集成和部署。本文将对项的开发、署联调以测试发版流程和规范做简要说明,提供项目个阶段使到的部分自动化本工具示。图1目持续成和部署流程代码分支管:如图所示,git上创建的每个项目都需要至少建立develop和master个分支开发人员只有权限把代码交到develop分支上,平时持续集成联调都从develop分支上获取码。每个Sprint阶段测试发时,配置理员从develop分支上创建一个于测试的release分。当测试修改bug时,开发人员只修改后的码提交到应的测试Release分支。当测试版稳定后,配置管理将代码合并到Master支中。自部和布项目借助于Shell脚本Dockerfile配置文和Jenkins任务实现了自化的持续成和部署配置管理员项目目录编写的脚文件结构如图2所示。a)创建分的shell脚本,例见附件;#!/bin/bashif[-z"$1"];thencat<<EOFUsage:branch-release.sh<version>EOFexit1fiDEPLOY_VERSION=$1

RP_FILES=(subproject1/kube-rc.yamlsubproject1/pom.xmlsubproject1/Makefile)if[-z$(gitbranch-a|grep-e/${DEPLOY_VERSION}$)];then?gitcommit-a-m"CreateBranch${DEPLOY_VERSION}"gitpushorigin${DEPLOY_VERSION}b)Dockerfile示例文,将dubbo服务发为镜像为,示例见件2:MAINTAINERzhangsanRUNmkdir-p/app?COPYtarget/subproject1.war/app/COPY./startup.sh/app/RUNchmod+x/app/startup.shWORKDIR/appCMD["./startup.sh"]EXPOSE8080c)Makefile文:包括编项目、将项打包成Docker镜、将镜像Push镜像库、在K8s上创建ReplicationController、在K8s上创建service的命令脚:clean:mvnclean#当前程序打包成镜像build:?dockerbuild-t$(IMAGE).#当前镜像到镜像仓库push:?dockerpush$(IMAGE)

run:?redeploy:kubectlreplace-fkube-rc.yaml$(KUBE_OPS)undeploy:kubectldelete-fkube-rc.yaml$(KUBE_OPS)#建deploy-svc:kubectlcreate-fkube-svc.yaml$(KUBE_OPS)undeploy-svc:kubectldelete-fkube-svc.yaml$(KUBE_OPS)d)K8s部署配置文,创建ReplicationController创建service示例附件4:#创建ServiceapiVersion:v1kind:Servicemetadata:name:subproject1labels:component:subproject1spec:ports:-port:8888nodePort:16888selector:name:svc-subproject1type:NodePore)配置管员在Jenkins上配置动或手触发的任务,在jenkins任务中配shell脚本可实现应用的一部署,示见附件5。

具体的过程如下:i.从上拉取代,编译、发布项目;ii.编译好的程序包,打包成Docker镜像;iii.将包好的Docker镜像Push镜像库;iv.Jenkins执行Shell脚命令,从像仓库拉镜像在环境中建pod和RC,将应程序及其运行环境在的容器K8s平台上运行来。测与版从图中可以到,项目开发环境测试环境是相互隔离的两套环境。a)部署在发环境的用代码,自develop分支对应的Docker镜像Tag用latest,供开发人员调试、以及试人员随协助做集测试;b)部署在是环境的用代码,自每到一个Sprint阶发版测试配置管理从develop分支中打出的测试版分支,支名对应版本号不同,相应的Docker镜像的tag也会随版本号变。测试环境中部署应用主要于测试验。部联:项目分为四:前端层若干个web应用Service层包括若干个布式服务基础底层这里简要说一下各层间的调试式:a)前端和Web联调:前端开发人员本启动一个Nginx配置nginx.conf文件将localhost代理指向webserver的址,即可本地调试与动态Web端的交互b)WEB层与服务层调、服务之间联调、服务层与基础层联调,分为两种方:本地调试:署一个专的zookeeper注册中心,发者可以把本机地址注到注册中,供相关员临时调用务调试。集成环境调:提交代触发Jenkins任务,服务打包容器镜像部署到K8s上在完整的系统运行环境中联调试。具的集成环编排依赖于k8s完成。微服务的分和服务交设计关于微服架的利弊以设计原则很多着名的文章有介绍,例如MarinFowler的博文《Microservices:adefinitionofthisnewarchitectural》和来自DZonecommunity社的《MicroservicesinPractice:FromArchitecturetoDeployment》在InfoQ技术网站有中文翻,

本文就不对念和设计则做过多述。本小节主要是说明关于项目的辑分层结和服务交方面的设计。本项目遵守下微服务构的主要本原则,但是也会根据具体项目情有所保留i.单一责原则(SingleResponsibilityPrinciple,SRP)ii.证微服务设计能支持服务的敏捷/独立开发和部署。图2层结构通信机制架构层设如图2示,项的架构是为四层:静态UI层、动态、业务务层、基业务层。i.静态UI层直接面用户的操作示界面,括静态设计和互代,主要采用Angulars框架;ii.动WEB是各务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论