当前位置: 首页 > news >正文

湛江网站建设夜场网站建设

湛江网站建设,夜场网站建设,安装wordpress安装地址修改,丹棱网站建设导读#xff1a;中国五矿和阿里巴巴联手打造的钢铁服务专业平台五阿哥#xff0c;通过集结阿里巴巴在大数据、电商平台和互联网产品技术上的优势#xff0c;为终端用户带来一站式采购体验。本文是五阿哥运维技术团队针对Docker容器技术在如何在持续交付过程中探索和实践中国五矿和阿里巴巴联手打造的钢铁服务专业平台五阿哥通过集结阿里巴巴在大数据、电商平台和互联网产品技术上的优势为终端用户带来一站式采购体验。本文是五阿哥运维技术团队针对Docker容器技术在如何在持续交付过程中探索和实践目前已经将发布部署权限开放给应用开发的owner实现7*24小时“一站式”的持续交付整体提高了公司研发过程的交付能力。前言作为创业公司和推行DevOps工程师们来说都遇到过这样的问题硬件资源利用率的问题造成部分成本的浪费 在网站功能中不同的业务场景有计算型的、有IO读写型的、有网络型、有内存型的集中部署应用就会导致资源利用率不合理的问题。比如一个机器上部署的服务都是内存密集型那么CPU资源就都很容易浪费了。单物理机多应用无法对无法进行有效的隔离导致应用对资源的抢占和相互影响 一个物理机器跑多个应用无法进行所使用的CPU、内存、进程进行限制如果一个应用出现对资源的抢占问题就会引起连锁反应最终导致网站部分功能不可用。环境、版本管理复杂上线部署流程缺乏增加问题排查的复杂度 由于内部开发流程的不规范代码在测试或者上线过程中对一些配置项和系统参数进行随意的调整在发布时进行增量发布一旦出现问题就会导致测试的代码和线上运行的代码是不一致的增加了服务上线的风险也增加了线上服务故障排查的难度。环境不稳定迁移成本高增加上线风险 在开发过程中存在多个项目并行开发和服务的依赖问题由于环境和版本的复杂性很高不能快速搭建和迁移一个环境导致无法在测试环境中无法模拟出线上的流程进行测试很多同学在线上环境进行测试这里有很高的潜在风险同时导致开发效率降低。传统虚拟机和物理机占用空间大启动慢管理复杂等问题 传统虚拟机和物理机在启动过程进行加载内核执行内核和init进行导致在启动过程占用很长时间而且在管理过程中会遇到各种各样的管理问题。基于Docker容器技术运维技术团队开发了五阿哥网站的容器云平台。通过容器云平台95%的应用服务已经实现容器化部署。这些应用支持业务按需拓展秒级伸缩提供与用户友好的交互过程规范了测试和生产的发布流程让开发和测试同学从基础的环境配置和发布解放出来使其更聚焦自己的项目开发和测试。 图1 五阿哥容器云整体架构结合五阿哥容器云平台和Docker容器技术的实践本文先介绍如何实现7*24小时“一站式”的持续交付实现产品的上线。关于容器云平台的介绍请关注https://zhuanlan.zhihu.com/idevopsDocker镜像标准化众所周知Docker的镜像是分层的。对镜像分层进行约定第一层是操作系统层由CentOS/Alpine等基础镜像构成安装一些通用的基础组件第二层是中间件层根据不同的应用程序安装它们运行时需要使用到的各种中间件和依赖软件包如nginx、tomcat等第三层是应用层这层仅包含已经打好包的各应用程序代码。 图2Docker镜像分层约定经验总结如何让自己的镜像变的更小PUSH的更快 图3 优化前后对比dockerfile构建应用镜像在中间件层遇到一些需要安装的软件包时尽可能的使用包管理工具如yum或以git clone方式下载源码包进行安装目的是将软件包的copy和安装控制在同一层软件部署成功后清除一些无用的rpm包或源码包让基础镜像的尺寸更小。Java应用镜像中并没有将jdk软件包打入镜像将jdk部署在每台宿主上在运行镜像时通过挂载目录的方式将宿主机上的java家目录挂载至容器指定目录下。因为它会把基础镜像撑得非常大在构建应用镜像时docker会对这两层进行缓存并直接使用仅会重新创建代码出现变动的应用层这样就提高了应用镜像的构建速度和构建成功后向镜像仓库推送的速度从整体流程上提升了应用的部署效率。容器的编排管理编排工具的选型图4编排工具选型对比Rancher图形化管理界面部署简单、方便 可以与AD、LDAP、GITHUB集成基于用户或用户组进行访问控制快速将系统的编排工具升级至Kubernetes或者Swarm同时有专业的技术团队进行支持降低容器技术入门的难度。 图5: Rancher架构图基于以上优点我们选择Rancher作为我们容器云平台的编排工具在对应用的容器实例进行统一的编排调度时配合Docker-Compose组件可以在同一时间对多台宿主机执行调度操作。同时在服务访问出现峰值和低谷时利用特有的rancher-compose.yml文件调用“SCALE”特性对应用集群执行动态扩容和缩容让应用按需求处理不同的请求。https:/zhuanlan.zhihu.com/p/29093407容器网络模型选型图6: 容器网络模型选型由于后端开发基于阿里的HSF框架生产者和消费者之间需要网络可达对网络要求比较高需要以真实IP地址进行注册和拉取服务。所以在选择容器网络时我们使用了Host模式在容器启动过程中会执行脚本检查宿主机并分配给容器一个独立的端口来避免冲突的问题。持续集成与持续部署持续集成 监测代码提交状态对代码进行持续集成在集成过程中执行单元测试代码Sonar和安全工具进行静态扫描将结果通知给开发同学同时部署集成环境部署成功后触发自动化测试自动化测试部分后续会更新https://zhuanlan.zhihu.com/idevops。 图7:持续集成示意图静态扫描结果 图8: 持续集成结果示意图持续部署是一种能力这种能力非常重要把一个包快速部署在你想要的地方。平台采用分布式构建、部署master管理多个slave节点每个slave节点分属不同的环境。在master上安装并更新插件、创建job、管理各开发团队权限。slave用于执行job。 图9: 持续部署架构图基于上述图9架构我们定义了持续部署规范的流程1开发同学向gitlab提交代码 2拉取项目代码和配置项文件执行编译任务 3拉取基础镜像将编译好的应用包打入生成最新的应用镜像推送到镜像仓库 4根据当前应用及所属环境定制化生成docker-compose.yml文件基于这个文件执行rancher-compose命令将应用镜像部署到预发环境发布生产前的测试环境相关配置、服务依赖关系和生产环境一致。 6预发环境测试通过后将应用镜像部署至线上环境测试结果通知后端测试同学。容器的运行管理应用容器现在已经部署到线上环境那么在整个容器的生命周期中还需要解决下面两个问题1 如何保存应用程序产生的运行日志和其它业务日志 2 如何在后端服务出现变化后nginx能够自动发现并完成配置更新。日志管理容器在运行时会在只读层之上创建读写层所有对应用程序的写操作都在这层进行。当容器重启后读写层中的数据包含日志也会一并被清除。虽然可以通过将容器中日志目录挂载到宿主机解决此类问题但当容器在多个宿主机间频繁漂移时每个宿主机上都会有留存应用名的部分日志增加了开发同学查看、排查问题的难度。综上所属日志服务平台作为五阿哥网站日志仓库将应用运行过程中产生的日志统一存储并且支持多种方式的查询操作。 图10:日志服务平台通过在日志服务的管理界面配置日志采集路径在容器中部署agent把应用日志统一投递到logstore中再在logstore中配置全文索引和分词符以便开发同学能够通过关键字搜索、查询想要的日志内容。经验总结如何避免日志的重复采集问题日志服务agent需要在配置文件“ilogtail_config.json”中增加配置参数“check_point_filename”指定checkpoint文件生成的绝对路径并且将此路径挂载至宿主机目录下确保容器在重启时不会丢失checkpoint文件不会出现重复采集问题。服务的注册etcd是一个具备高可用性和强一致性的键值存储仓库它使用类似于文件系统的树形结构数据全部以“/”开头。etcd的数据分为两种类型key和directories其中key下存储单独的字符串值directories下则存放key的集合或者其他子目录。图11 应用注册在五阿哥环境中每个向etcd注册的应用服务它们的根目录都以”/${APP_NAME}_${ENVIRONMENT}”命名。根目录下存储每个应用实例的Key信息它们都以“IP−{PORT}”的方式命名。下图是使用上述约定存储在etcd上某应用实例的数据结构图12: 存储在etcd上某应用实例的数据结构可以看到我是使用get方法向etcd发送请求的请求的是部署在预发环境PRE的搜索服务search在它的根目录“/search_PRE”下仅存储了一个应用实例的信息这个实例的key是“172.18.100.31-86”对应的value是“172.18.100.31:86‘’整个注册过程是这样的① 通过代码为容器应用程序生成随机端口和宿主机正在使用的端口进行比对确保端口没有冲突后写入程序配置文件 ② 把通过python和etcd模块编写的服务注册工具集成在脚本中将IP地址和上一步获取的随机端口以参数的方式传递给服务注册工具 ③ 待应用程序完全启动后由服务注册工具以约定好的数据结构将应用实例的写入etcd集群完成服务注册工作 ④ 容器定时向etcd发送心跳报告存活并刷新ttl时间 ⑤ 容器脚本捕获rancher发送至应用实例的singnal terminal信号在接收到信号后向etcd发送delete请求删除实例的数据。注在ttl基础上增加主动清除功能在服务正常释放时可以立刻清除etcd上注册信息不必等待ttl时间。经验总结容器在重启或者意外销毁时让我们一起看一下这个过程中容器和注册中心都做了什么事情应用在注册是携带key 和value时携带了ttl超时属性就是考虑到当服务集群中的实例宕机后它在etcd中注册的信息也随之失效若不予清除失效的信息将会成为垃圾数据被一直保存而且配置管理工具还会把它当做正常数据读取出来写入web server的配置文件中。要保证存储在etcd中的数据始终有效就需要让etcd主动释放无效的实例信息来看一下注册中心刷新的机制代码直接奉上#!/usr/bin/env pythonimport etcdimport sys arg_lsys.argv[1:] etcd_cltetcd.Client(host172.18.0.7)def set_key(key,value,ttl10):try:                return etcd_clt.write(key,value,ttl)        except TypeError:                print key or vlaue is nulldef refresh_key(key,ttl10):try:                return etcd_clt.refresh(key,ttl)        except TypeError:                print key is nulldef del_key(key):try:                return etcd_clt.delete(key)        except TypeError:                print key is nullif arg_l:        if len(arg_l) 3:key,value,ttlarg_lset_key(key,value,ttl)        elif len(arg_l) 2:key,ttlarg_lrefresh_key(key,ttl)        elif len(arg_l) 1:keyarg_l[0]del_key(key)        else:                raise TypeError,Only three parameters are needed hereelse:        raise Exception(args is null)服务的发现confd是一个轻量级的配置管理工具支持etcd作为后端数据源通过读取数据源数据保证本地配置文件为最新不仅如此 它还可以在配置文件更新后检查配置文件语法有效性以重新加载应用程序使配置生效。这里需要说明的是confd虽然支持rancher作为数据源但考虑易用性和扩展性等原因最终我们还是选择了etcd。和大多数部署方式一样我们把confd部署在web server所在的ECS上便于confd在监测到数据变化后及时更新配置文件和重启程序。confd的相关配置文件和模板文件部署在默认路径/etc/confd下目录结构如下/etc/confd/ ├── conf.d├── confd.toml└── templatesconfd.toml是confd的主配置文件使用TOML格式编写因为我们etcd是集群部署有多个节点而我又不想把confd的指令搞的又臭又长所以将interval、nodes等选项写到了这个配置文件里。cond.d目录存放web server的模板配置源文件也使用TOML格式编写。该文件用于指定应用模板配置文件路径src、应用配置文件路径dest、数据源的key信息keys等。templates目录存放web server下每个应用的模板配置文件。它使用Go支持的text/template语言格式进行编写。在confd从etcd中读取到最新应用注册信息后通过下面的语句写入模板配置文件中{{range getvs /${APP_NAME}/*}}server {{.}};{{end}}图13: 应用发现示意图通过supervisor管理confd进程。confd在运行后会每隔5秒对etcd进行轮询当某个应用服务的K/V更新后confd会读取该应用存储在etcd中的数据写入到模板配置文件中生成这个应用配置文件最后由confd将配置文件写入到目标路径下重新加载nginx程序使配置生效。代码请参考https://zhuanlan.zhihu.com/idevops总结本文是五阿哥运维技术团队针对Docker容器技术在如何在持续交付过程中探索和实践目前已经将发布部署权限开放给应用开发的owner实现7*24小时“一站式”的持续交付整体提高了公司的研发过程的交付能力。接下来会不断优化持续交付过程中遇到的各种场景逐渐完善容器云平台同时会将容器云平台各种功能总结的经验和教训不断分享给大家给大家在工作中一些参考避免走重复的“弯路”。作者简介刘晓明五阿哥钢铁电商平台(wuage.com)运维技术负责人拥有10年的互联网开发和运维经验。一直致力于运维工具的开发和运维专家服务的推进赋能开发不断提高研发效能。 本文来自《程序员》原创文章谢绝转载如需订阅请点击这里责编魏伟PS推荐一个容器技术线上直播讲师来自腾讯、华为、思科、58同城、蘑菇街、当当等6位一线专家议题涵盖容器云、微服务、servicemesh等最新实践欢迎扫描下方二维码报名参加。
http://www.zqtcl.cn/news/479808/

相关文章:

  • 做餐饮企业网站的费用短视频素材免费下载网站
  • 美食优秀设计网站制作网页网站
  • 提供网站建设教学视频做淘宝美工需要知道的网站
  • 百度云可以做网站吗织梦网站下载
  • 有没有一起做游戏棋牌网站的用wordpress做商城
  • 有没有如何做网站的书常州网站推广公司哪家好
  • 金融直播间网站开发专业定制网页设计
  • 装饰公司网站开发c 网站开发实例教程
  • 专业层析成像代做网站网站建设收获
  • saas云建站平台源码附近那里有做网站的
  • 网站开发接口成都学校网站建设
  • 商城网站策划火星建站和八亿建站
  • 如何使用模板做网站php精品网站建设
  • 建设一个网站的具体流程职业培训机构需要什么资质
  • 网站怎么做弹幕播放器自助免费网站制作
  • 网站咨询弹窗是怎么做的网站建设的目标客户
  • 搞好姓氏源流网站建设Wordpress 商城主题过于臃肿
  • 如何网站客户案例上海网站备案查询
  • 沈阳大熊网站建设制作北京门户网站制作公司
  • 如何制作自己的网站免费最好的建站平台
  • 自己网站做电子签章有效么网站的规划与建设案例分析
  • 945新开传奇网站深圳动画营销推广的原因
  • 网站制作加盟网站推广 知乎
  • 广西东晋建设有限公司网站电商详情页模板免费套用
  • dedecms 做影网站商丘家居网站建设
  • 七里港网站建设商城购物网站有哪些模块
  • 中英网站怎么做网站域名的作用是什么
  • 网站建设开题报告ppt模板重庆建设工程信息网址
  • 做个什么类型网站百度云资源链接分享群组
  • 商务网站建设的主流程西安建设局网站