一 devops概念
Devops既不是软件、也不是网站、更不是代码,而是'一组方法(method)、过程(process)与系统(system)的统称'
Devops包含了很多优秀想法和原则,它鼓励'开发部门和运维部门通力合作'
在DevOps环境中,开发人员和系统管理员会构建一些关系、流程和工具,从而更好的与客户互动,最终提供更好的服务
'勉励':成为一个Devops工程师'不是一朝一夕'的过程,长时间的经验总结
二、开发工具
涉及:版本控制&协作开发
1、版本控制系统 Git
Git是一个开源的分布式'版本控制系统',用以有效、高速的处理从很小到非常大的项目版本管理!
2、代码托管平台 GitLab
GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个'自托管的Git项目仓库',可通过'Web界面'进行访问公开的或者私人项目,github的优秀临摹者
3、版本控制系统 Subversion
Subversion 是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。
二、自动化构建和测试
1、Apache Ant(早期)
Apache Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于'Java环境中'的软件开发。
2、Maven
Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的'高级项目管理'工具
由于 Maven 的'缺省构建规则有较高的可重用性',所以常常用两三行 Maven 构建脚本就可以构建简单的项目,使用 Ant 则需要十几行。
事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在'持续增长'
7、Gradle
Gradle 就是可以'使用 Groovy 来书写构建脚本的构建系统',支持依赖管理和多项目,类似 Maven,但比之简单轻便。
三、持续集成&交付
1、Jenkins
Jenkins 的前身是 Hudson,它是一个'可扩展的持续集成引擎',目前的主流。
4、Fabric
fabric8 是开源 Java Containers(JVMs) 深度管理集成平台。有了 fabric8 可以非常方便的从 UI 和 UX 一致的中央位置进行自动操作,配置和管理。
fabric8 同时提供一些'非功能性需求',比如配置管理,服务发现故障转移,集中化监控,自动化等等
四、部署工具
容器平台
1、Docker
Docker 是一个开源的应用容器引擎,'让开发者可以打包他们的应用以及依赖包到一个可移植的容器中',然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
配置管理
1、Chef
Chef 是一个系统集成框架,为整个架构提供配置管理功能
2、Puppet
Puppet,您可以集中管理每一个重要方面,您的系统使用的是跨平台的规范语言,管理所有的单独的元素通常聚集在不同的文件,如用户、CRON作业,和主机一起显然离散元素,如包装,服务和文件。
'欧美'用的比较多,似乎还收费
3、Bash
Bash 是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
4、Saltstack
Saltstack 可以看做是func的增强版+Puppet的弱化版,使用'Python编写'。非常好用,快速可以基于EPEL部署。Salt 是一个开源的工具用来管理你的基础架构,可轻松管理成千上万台服务器。
5、Ansible
Ansible 提供一种'最简单的方式用于发布'、管理和编排计算机系统的工具,你可在数分钟内搞定。Ansible 是一个'模型驱动的配置管理器',支持多节点发布、远程任务执行。
默认使用 'SSH 进行远程连接'。无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。
'主流的CD工具'
微服务平台
1、OpenShift
OpenShift 是由'红帽'推出的一款面向开源开发人员开放的平台即服务(PaaS)。 OpenShift通过为开发人员提供在语言、框架和云上的更多的选择,使开发人员可以构建、测试、运行和管理他们的应用。
'建立在k8s之上'
2、Kubernetes
Kubernetes 是来自 'Google 云平台'的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用
'业界的标准'
3、Mesosphere
Apache Mesos 是一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、MPI、Hypertable、Spark
阿里巴巴之前k8s产品'采用的方式'
服务开通
1、Puppet
Puppet,您可以集中管理每一个重要方面,您的系统使用的是跨平台的规范语言,管理所有的单独的元素通常聚集在不同的文件,如用户, CRON作业,和主机一起显然离散元素,如包装,服务和文件。
2、Docker Swarm
Docker Swarm 是一个Dockerized化的分布式应用程序的本地集群,它是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务。具体来说,Docker Swarm支持用户创建可运行Docker Daemon的主机资源池,然后在资源池中运行Docker容器。Docker Swarm可以管理工作负载并维护集群状态。
五、维护
日志记录
1、Logstash
Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台,你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
2、CollectD
collectd 是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。比如以RRD 文件形式。
3、StatsD
StatsD 是一个简单的网络守护进程,基于 Node.js 平台,通过 UDP 或者 TCP 方式侦听各种统计信息,包括计数器和定时器,并发送聚合信息到后端服务,例如 Graphite。
六、监控,警告&分析
1、Nagios
Nagios 是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
2、zabbix
zabbix 是一个基于Web界面的提供分布式系统监视以及网络监视功能的'企业级的开源解决方案'
3、Kibana
Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口,可使用它对日志进行高效的搜索、可视化、分析等各种操作,数据展示。
相关参考