基于CloudFoundry的私有云平台构建方案_第1页
基于CloudFoundry的私有云平台构建方案_第2页
基于CloudFoundry的私有云平台构建方案_第3页
基于CloudFoundry的私有云平台构建方案_第4页
基于CloudFoundry的私有云平台构建方案_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、基于基于CloudFoundryCloudFoundry的私有云平台的私有云平台内容内容背景与目标实践与改造(Part 1、2)流程与标准改变运维未来计划1. 背景与目标运维与运维与PaaSStorageServersNetworkingO/SMiddlewareVirtualizationDataApplicationsRuntimeOP(SRE),运维,运维PaaS (and IaaS)目标目标自动化自动化业务的生命周期管理,如变更、监控业务的生命周期管理,如变更、监控、故障处理等故障处理等资源利用率、弹性资源利用率、弹性标准化标准化流程流程实例标准实例标准系统环境、系统环境、runtim

2、eruntime、frameworkframework一体化一体化集成第三方集成第三方服务,如服务,如DBDB、CacheCache、loglog、FSFS等等与其他系统平台联动与其他系统平台联动Why CloudFoundry ?自动化标准化一体化机器管理(下游部门)自动化自动化一体化一体化标准化标准化Why CF ?自动化一体化标准化2. 实践与改造(Part1)Java,base on cf 1.0Java Apps产品种类 100APP 200实例2000平均单实例10G(内存)日均总pv 10亿APP的开发及测试人员 700人Tomcat5/6/7、jdk1.5/1.6、Standa

3、lone开始开始实施实施,准备工作,准备工作基于CentOS的相关改造 独立部署各个CF组件 拆解BOSH、chef,基于物理机实施 OS环境初始化 apt-get 改为 yum Ubuntu-cmd to CentOS DEA(v1.0),agent.rb、secure.rbyum install -y make gcc gcc-c+ kernel-devel.x86_64 openssl-devel.x86_64 libxml2.x86_64 libxml2-devel.x86_64 libxslt.x86_64 libxslt-devel.x86_64 git.x86_64 sqlite

4、.x86_64 ruby-sqlite3.x86_64 sqlite-devel.x86_64 unzip.x86_64 zip.x86_64 ruby-devel.x86_64 ruby-mysql.x86_64 mysql-devel.x86_64 curl-devel.x86_64 postgresql-libs.x86_64 postgresql-devel.x86_64 zlib-devel.x86_64 readline-devel.x86_64 ImageMagick.x86_64 ImageMagick-devel.x86_64 php-magickwand.x86_64集群集

5、群容量评估容量评估实例数量,NATS容量评估 单台DEA承载的实例数( 0.5.beta.6)NATS-Server1NATS-Server2NATS-Client(caching message)NATS-Server1/2, Random list多集群冗余设计多集群冗余设计多个独立的集群,逻辑互不影响第一层切换,修改DNS A记录,对多个域名(CNAME到此A记录),统一切到不同的集群第二层切换,修改“接入层”(其应用层的功能,可简单理解为nginx的反向代理)保证好APP(无状态)的容量,或快速扩容的预案,以防止流量切过来以后,出现过载Baidu GateWayFront EndRou

6、terA记录Baidu GateWayFront EndRouterapp1app1CNAME(正式域名)CNAME(正式域名) CNAME . CNAME . . A 7 . A 6核心组件,分布核心组件,分布Router_1NATS_1RouterNATSCCHMStagerDEAPG_DBRedis整体整体结构结构(cf1.0)DEALoggingName ServiceMonitoringjvmStagerFilePersistenceHMRouterCCBaidu GateWay / Front EndjvmjvmAPI BridgeU

7、AAjvmjvmjvmjvmjvmRouter(Cluster 02)NATSDB新增功能新增功能支持RPC、单实例多端口 单实例开启多个端口,并提供API实时查询IP、端口号 与“名称服务”联动,同步动态ip端口与名称的对应关系 RPC调用方,根据名称直连实例DEA server支持RPC、单实例多端口Instance01:portInstance02:portAPI Bridge NS serverTXT记录 ip:port ip:portRPC调用方NS clientDomain ip:port ip:portip_local_port_range10000 60000Port池(分配后

8、,有冻结期)61000 65000新增功能新增功能支持JMX API实时查询ip与Jconsole端口号,实现JMX数据实时采集DEA支持 JMXInstance01: Jconsole 端口Instance02: Jconsole 端口 instances: index: 0, state: RUNNING, since: 438249600, jconsole_ip: , jconsole_port: 61111 , index: 1, state: RUNNING, since: 438249600, jconsole_ip: , jconsole_por

9、t: 62222Monitoring MetricsCpuUseRateDaemonThreadCount MemPool_OldGen_UseRate NonHeapMemoryUsage_used TotalCompilationTime TotalPeakThreadCount TotalStartedThreadCount UnloadedClassCount GC_Major_Frequency GC_Major_Time Stager:java -Dcom.sun.management.jmxremote.port=VCAP_JCONSOLE_PORT-Dcom.sun.manag

10、ement.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false新增功能新增功能加强健康检查 七层检测 文件句柄数检测DEA ServerDEA agent.rbHealth Mangerinstancehttp可用性instanceCPUMEMDISKreport加强健康检查句柄DEA(v1.0),逻辑改进逻辑改进端口管理 问题描述 单DEA多实例,并行的端口分配与启动,没有临界区,有端口竞争的问题 解决方案 借鉴了DEA(v2.0)的逻辑(注:即 DEA_NG,与CF1.0不兼容) 设定 ip_local_

11、port_range 为 1000061000,作为动态端口的范围 将6100165000,作为DEA的调度分配端口 对分配的端口,增加“释放时间、端口号”的数据结构 通过延时释放端口,解决了端口竞争的问题 备注 CF2.0中,已解决此问题,方法同上DEA(v1.0),逻辑改进逻辑改进实例资源信息管理 问题描述 du命令算实例磁盘空间,时间较长,随后执行其他计算命令,信息已不一致 CPU计算的方法,没有考虑主机核数 解决方案 调整相关命令的顺序 CPU利用率计算时,除以核数 备注 CF2.0中,已解决此问题新增功能新增功能(与外围(与外围系统系统联动)联动)文件持久化 使用MFS(Moose

12、File System) DEA 部署MFS-Client,并 mount /mfs/path,供实例使用 MFS服务端提供HTTP接口,获取数据基于URI的路由,区分APP 监控联动 APP的生命周期,与外部监控系统的API交互,实现监控项的自动增删改开发者工具包 自动化发布(封装vmc) 文件查看主要主要改造点汇总改造点汇总(cf v1.0)基于CentOS的相关改造使用NATS-Cluster、NATS-Client重试与缓存支持RPC、单实例多端口支持动态JMX、Jconsole加强健康检查端口管理实例资源信息管理外围组件:文件持久化、监控联动、URI路由、开发者工具包2. 实践与改造

13、(Part2)C/C+,base on cf 2.0C/C+ Apps,几大核心问题,几大核心问题Container 的运行环境与资源隔离 Kernel/GNU 资源隔离 快照,Core Dump单实例多进程 健康检查 进程运行顺序 实例内,进程间通信 多端口 多实例的同构性C/C+ Apps,几大核心问题,几大核心问题大实例 实例个数多(10万) 数据量大(单实例,2TB) 内存占用高(单实例,100G) 启动时间长(30分钟) 流量大(单实例,日总PV2亿) 漂移时,防止资源不足APP通信 网络层通信,权限、流量控制 输出文件,需要外部抓取 输入文件,需要外部推送 RPC,非HTTP协议,

14、不包含PATH信息,无法路由实例的实例的 OS-Level 环境准备环境准备Container的运行环境 Kernel 与宿主机一致 订制Container的文件环境warden/warden/root/linux/rootfs/setup.shif grep -q -i centos /etc/issuethen exec $(dirname $0)/centos.sh $fiContainerContainer与宿主机的关系与宿主机的关系WardenWardenNetworking,Bridge / NAT / Firewall / FlowControl DEA initxxx xxxx

15、xx xxxmount r usr/ lib/ etc/mount rw xxx/network interface(sub net)Cgroup CPU / MEMName space initxxx xxxxxx xxxmount r usr/ lib/ etc/mount rw xxx/network interface(sub net)Cgroup CPU / MEMName space包管理包管理Buildpack API detect , 检查 complie,环境准备目录结构程序文件,及相关配套程序启动脚本,保证进程的启动顺序,等等监控脚本,可以周期性执行,检测整个实例的健康程度

16、 release,发布信息 Procfile,参数传递(如端口号) .profile.d,环境变量健康检查,改造点健康检查,改造点自定义监控脚本 自定义监控脚本,随实例一起发布,周期性改写stat_file文件内容 DEA定期检查stat_file文件实例实例stat_filemonitor.shprocess-1process-2DEAHMAPP的改造的改造针对RPC,支持NS Client动态配置文件,代替路由端口管理,冻结时间输入输出文件输入文件,主动抓取输出文件,推到中转处(如云存储),或基于NS服务多进程的管理,启动脚本多进程,启动顺序控制进程控制文件持久化 远程日志 使用云存储整体

17、整体结构结构(CF2.0)DEALoggingName ServiceMonitoringFilePersistenceHMgorouter(RPC,不适用)CCBaidu GateWay / Front EndAPI BridgeUAA(Cluster 02)NATSContainerprocess-1process-2WardenNS ClientContainerprocess-1process-2Containerprocess-1process-2DB主要主要改造点汇总改造点汇总(cf v2.0)基于CentOS的相关改造Container环境的订制Buildpack的订制支持RPC

18、、单实例多端口加强健康检查外围组件:文件持久化、监控联动、URI路由、开发者工具包3. 流程与标准工作流程,简述工作流程,简述评审 标准 容量 SLA接入 组织关系 名称信息 运维信息流程审批 权限申请 名称申请 发布操作发布更新 预发布 灰度 回滚故障处理 可用性 安全 问题管理标准与容量,举例标准与容量,举例标准信息采集 App相关名称、相关接口人(R&D、QA、运维、相关经理,等) Runtime与容器版本 无状态、RPC、URI路由 动静态文件分离 文件持久化容量信息采集 PV、QPS 单实例 CPU、内存、磁盘、带宽、重启时间 实例数量SLA,举例,举例服务对象 Java 应用(以下

19、简称“APP”) 符合标准的APP服务时间 24365全年无休沟通方式 Mail、Tel、接口人信息稳定性相关指标 核心组件,可用性99.99%(每月),MTTR5天 控制服务,可用性99.95%(全年) APP自身SLA,不因平台本身,造成负面影响 注:APP自身问题,不在此SLA范围内,如:程序bug、容量预估错误、外部系统故障(如DB、Cache)等组织关系,层级组织关系,层级产品线(Org)模块(Space)分组(APP)版本(APP-*) 产品线-2产品线-1 (Org)模块-2模块-1 (Space)分组-1(A)分组-2(B)实例,版本-1(APP-1-1)实例,版本-2(APP

20、-1-2)实例,版本-1(APP-2-1)实例,版本-2(APP-2-2)实例,版本-1(A-1)实例,版本-2(A-2)实例,版本-1(B-1)实例,版本-2(B-2)虚线内,相当于一个APP,且有多个实例对对CC进一步进一步封装封装产品线(Org)OrgName模块(Space)OrgName_SpaceName模块分组 OrgName_SpaceName_GroupTag模块版本 OrgName_SpaceName_GroupTag_VersionTag实例(id唯一)OrgName_SpaceName_GroupTag_VersionTag_IndexGroupTag、VersionT

21、agGroupTag可以区分:配置文件、机房、机架等维度的不同VersionTag可以区分:程序、数据、配置文件等包含:四位版本号、时间戳实例完整名称,例子Org_Space_GroupA_1-1-1-1-438249600_1Org_Space_GroupB_1-1-1-1-438249600_1审批与发布审批与发布发审批单APP信息(程序版本、容量信息、相关说明,等等)审批人(相关经理、需知晓的人)操作者、操作时间监控信息(监控策略、接口人等)开始发布操作,并添加监控发布前,对应审批流必须通过操作人、程序版本、MD5、时间等信息,必须与审批流一致都一致,且流程通过,则可以开始发布发布成功后

22、,添加监控发单审批发布APP监控添加预发布、发布、回滚预发布、发布、回滚app_v1instance01app_app_v1instance02app_v2instance01app_v2instance02app_v3instance01app_v3instance02app_泛域名、 map/unmap、 app的多版本并存前进,发布后退,回滚预发布,线下内网观察基本的灰度发布基本的灰度发布app_v1instance01app_app_v1instance02app_v2instance01app_v2instance02app_v3instance01app_1、将一个正式域名,同时指向多个app2、调整多个app的实例数比例,即调整了流量的比例app_v2instance03通过调整app实例的数量,灰度流量的分配比例“布道之道布道之道”,平台的推广,平台的推广军功章,有谁的一半? APP的支持新服务,需遵守PaaS的相关标准、思想老服务,需R&D改造,QA需回归测试 外围的支持DB、Cache、存储、接入、安全、监控,等等明确收益,建立共赢的生态圈交付更快、资源更省、事情变得简单一站式的一体化服务,携手推广一些方法一些方法给用户(APP开发人员),尊贵的帝王般的享受对重点的APP,有针对性的重点服务对重要的管理者,有一套更完整、及时的沟通

温馨提示

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

评论

0/150

提交评论