中小企业基于云的自动化运维实践二则

简介:

案例1:基于云的运维自动化

我们是小规模的公司,搭建在 AWS 上的服务,主要使用 Ruby on Rails,并实现了应用的水平扩容。

在专案一开始的时候只有一台 EC2 就可以跑了,后来因为专案越做越大,开始做平行扩充以及 SOA,因此我们导入了 Chef 做自动化运营,主要使用 Chef 做机器的安装及部署,使用 Cloud Watch 做机器与 Application 的效能监控,在每次 deploy 的时候做AMI,当资源负担到达设定值时,Chef 会使用最新的 AMI 开一台新的机器加入 ELB,这个过程大约是 5 分钟,于此我们做到了 Application 面的平行扩展。

数据库的部分,我们使用 PostgreSQL 做集群,一台 Master + 多台 Slave 加上 AWS 本身的 muti-AZ 机制,可以动态加开 slave 以及 load balance;Redis 的部分亦同。

现在我们使用 Jenkins 做 CI,每次跑完 CI 会包一个 Docker 版本来跑 staging 环境,staging 环境现在跑 docker,但现在还不敢放到 production 环境中。

案例2:关于自动化部署

我从多个方面来描述下我们广告公司运维自动化的实施情况。

编译:

我们这边RTB是用linux下的C++开发的,部署的过程中需要依赖一些特定版本的linux的运行库,而编译本身需要的库和头文件会更多,所以我们是将编译和自动部署分开的,业务需求完成编码和测试后,会将可执行文件放在指定的位置,用jenkins来调用之前调试好的自动部署脚本来进行推送和启动运行,这样能保证编译的程序相关的功能都是测试通过,且经过验证的,自动化部署之后外围还有相应的监控系统会定时扫描端口开放情况以及程序运行情况。

商务平台:

这部分是用java开发的,包管理使用maven,已经做好了关联的特定版本的jar包的管理,这部分功能就是开发测试完毕,将验证没有问题的特定版本号的svn地址提交给系统部,通过jenkins从SVN拉代码,调用maven进行编译,部署和启动,相关功能都是在运行服务器上执行。

数据:

数据部分采用了redis和tair集群,用于存储人群属性和cookie映射数据,redis和tair是通过jenkins进行部署的,数据导入是每天定时跑完画像数据后自动导入的,而数据的迁移是通过人工触发的,当部分节点数据存在问题时,外部有系统监控,发现问题,人工触发数据迁移。人工触发数据迁移是一般是在发现数据分布不均衡,特定节点负载非常高的情况下,会在后半夜触发迁移操作。

流程规划:

业务相关的程序开发之后,默认是手动部署的,手动部署时会梳理相关的流程,形成脚本,后续jenkins的自动化脚本也是来源于手动部署的脚本。

Auto Scale:

集群是auto scale的,平时会有一个最基本的机器数量配置,部署相应的程序,部署完成后不存在减机器的情况,如果有流量突发高峰和广告投放高峰,有一部分备用的机器可以快速部署,然后把流量指到新部署的机器上

规模:

目前大概用于RTB的机器有40多台高配的服务器,每台服务器上会有20个左右的进程,商务平台和展现点击收集以及计费系统,服务器有20多台机器,而后端的日志存储和人群画像部分用到的hadoop有50多台机器。

精彩观点摘录

自动化运维的本质,个人愚见就是把人解放出来,人腾出来做更有价值的事,事不会少,但产生价值的事要越来越多,其实从某种程度上面来讲,对运维人员是一个悲剧,如果运维人员不提升自己的核心竞争力,那就面临着下岗,在老板心目中,机器能更快更好的做好,为什么需要人来做(慢,不能量化)。当然反过来说,运维人员就要在老板面前找到自己的价值。

自动化运维,我更关注人。

基于公司实际情况,制定完善的流程,把重复的工作工具化,有挑战的工作简单化,相应的流程及工具文档化。总之尽可能不需要人为干预,即便需要人操作,懂点技术的员工按流程和文档即可完成操作。

Q & A

Q1:数据集群采用Jenkins部署是否存在不妥,是否违背了编译和部署分开的原则?

其实数据集群用jenkins部署主要是编译的基础环境是一定的,可以在使用jenkins部署之前完成机器系统安装之后会将相关的编译环境也批量安装好,所以用jenkins部署是没有问题的。

Q2:Jenkins在里面用得太重了,不知道会不会导致CI慢或其它问题?

其实不会,因为子系统划分是将对比较轻的,不会有非常复杂和耗时的编译。


本文作者:董伟/付海军

来源:51CTO

相关文章
|
1月前
|
运维 监控 持续交付
构建高效自动化运维体系:策略与实践
在数字化时代,企业IT基础设施的管理和维护变得日益复杂。为了提高效率、降低错误率并快速响应市场变化,构建一个高效的自动化运维体系至关重要。本文将探讨自动化运维的核心策略,并通过实际案例分析展示如何将这些策略应用于日常管理中,以实现IT运维的优化。
17 0
|
1天前
|
运维 监控 安全
构建高效自动化运维体系:策略与实践
【4月更文挑战第25天】在数字化转型的浪潮中,企业IT基础设施日趋复杂多变,传统的手动运维模式已难以满足快速响应和高效管理的需求。本文探讨了构建一个高效自动化运维体系的关键环节,并结合实际案例分析,提出了一系列切实可行的策略与实践方法。文章着重分析了自动化工具选择、流程设计优化以及持续监控的重要性,并讨论了如何通过这些手段降低运维成本,提升系统稳定性和安全性。
|
10天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
15 1
|
11天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
11天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
11天前
|
测试技术 持续交付 Docker
Django中的自动化部署与持续集成实践
【4月更文挑战第15天】本文介绍了Django项目中自动化部署与持续集成的实践方法。自动化部署通过选择Ansible、Fabric或Docker等工具,编写部署脚本,配置持续集成工具(如Jenkins、GitLab CI),确保服务器环境一致,实现快速应用上线。持续集成则涉及配置版本控制系统,设置自动化构建和测试,编写全面的测试用例,集成代码质量检查工具,并配置通知机制,以提升代码质量和开发效率。这两者结合能有效提升项目的迭代速度和可靠性。
|
12天前
|
人工智能 运维 监控
构建高效自动化运维体系的实践与思考
【4月更文挑战第14天】在数字化转型的浪潮中,自动化运维作为提升系统稳定性和效率的关键手段,受到了企业的广泛关注。本文将深入探讨如何构建一个高效的自动化运维体系,涵盖从基础设施的搭建到流程的优化等多个方面。通过分析当前自动化运维的挑战及解决方案,文章旨在为读者提供一套实用的策略框架,帮助企业实现运维工作的高效化、标准化和智能化。
|
18天前
|
运维 监控 Kubernetes
构建高效自动化运维体系的实践与思考
【4月更文挑战第8天】在数字化时代,IT基础设施的复杂性日益增加,传统的手工运维模式已经难以满足快速响应和高效率的需求。本文将探讨如何通过自动化工具和策略构建一个高效的自动化运维体系,旨在提高系统的稳定性、减少人为错误以及优化资源分配。文章首先分析了自动化运维的必要性,接着介绍了实现自动化的关键技术和工具,并通过案例分析展示自动化运维体系的实际效果。最后,对自动化运维的未来发展趋势进行了展望。
|
20天前
|
机器学习/深度学习 传感器 运维
提升数据中心效能:智能运维策略与实践
【4月更文挑战第6天】在数字化时代,数据中心作为企业信息架构的核心,其稳定性和效率直接影响到业务连续性和客户满意度。随着技术的进步,传统的数据中心运维模式已经不能满足现代高效、智能化的需求。本文将探讨如何通过智能运维(AIOps)策略,结合大数据分析和机器学习技术,实现数据中心的自动化管理、故障预测及快速响应,以提升整体效能并降低运营成本。
|
30天前
|
运维 监控 数据可视化
现代化运维管理系统的关键特性及实践应用
随着信息技术的迅猛发展,现代企业对于运维管理系统的需求日益增长。本文将探讨现代化运维管理系统的关键特性,以及在实际应用中的重要性和优势所在,帮助企业更好地理解和应用现代化运维管理系统。
15 2