Devops各种组件与架构

版本控制:使用Git作为版本控制工具,GitLab作为远程仓库,进行代码的版本管理和协作。

持续集成/持续部署(CI/CD):利用Jenkins等工具实现持续集成和持续部署,提高开发和部署效率。

容器化技术:使用Docker容器技术来打包和运行应用程序,实现快速部署和资源隔离。

基础设施即代码(IaC):利用IaC工具如Terraform等来管理和配置基础设施,实现基础设施的自动化部署和管理。

监控与告警:使用Prometheus、Grafana等工具监控系统性能,并通过AlterManager等实现告警和通知。

日志管理:使用EFK(Elasticsearch、Fluentd、Kibana)等工具收集和分析日志,提供实时的日志监控和查询功能。

混沌工程(CE):实施混沌工程实践,通过主动测试系统在压力下的响应方式,识别并修复系统中的潜在故障。


Git

Git是一个分布式版本控制系统,主要用于跟踪软件开发过程中的变化。它允许开发者记录文件的变更历史,方便地进行回滚、比较不同版本之间的差异,以及协作开发时的代码合并。Git的核心优势在于其分布式特性,每个开发者都可以在本地拥有完整的项目历史记录,这减少了网络依赖并提高了工作效率。

Maven

Maven是一个项目管理和综合工具,主要用于自动化构建过程,包括编译、测试、打包、部署等。Maven通过定义一个标准的项目结构和生活周期,使得开发者可以更容易地管理项目依赖,构建项目,并实现自动化部署。Maven的另一个重要功能是依赖管理,它能够自动下载项目所需的库,并解决库之间的依赖关系。

因为jenkins能够集成maven,所以直接选择jenkins作为构建、打包和测试的工具。

Jenkins

安装Jenkins‌:首先,需要在Linux系统上安装JDK,并且JDK的版本应在11到20之间。下载Jenkins WAR包(jenkins.war),并将其部署到服务器上。配置JDK环境,运行WAR包,完成Jenkins的安装。安装完成后,通过浏览器访问Jenkins,并进行初始密码修改‌1。

集成JDK和Git‌:配置Jenkins以集成JDK和Git,以便能够从Git仓库中拉取代码。这包括在Jenkins中安装必要的插件,如Git插件,以及配置Git的访问凭证和仓库信息。

‌集成Maven‌:在Jenkins所在的服务器上安装Maven,并配置环境变量。修改Maven的配置文件,设置本地仓库和远程仓库地址。在Jenkins中配置Maven,以便能够拉取Maven项目进行构建。

自动化部署‌:配置Jenkins以实现自动化部署,包括免密复制操作、远程复制脚本、启动和关闭项目的shell脚本等。在Jenkins配置中引入这些脚本,实现自动化构建、测试和部署流程。

‌解决常见问题‌:在部署和使用过程中可能会遇到一些问题,如端口冲突等。需要修改Jenkins的配置文件,更改其监听端口,以确保Jenkins服务的正常运行。

使用Jenkins进行CI/CD‌:Jenkins作为一个持续集成/持续交付工具,可以与版本控制系统(如Git)和构建工具(如Maven)集成,实现代码的自动构建、测试、部署。通过Jenkins的任务配置和插件安装,可以实现对代码的质量控制、自动化测试以及快速部署到生产环境。

 Ansible与docker结合使用

在当今快速发展的云计算时代,传统的手动运维方式已经无法满足企业对效率和稳定性的要求。自动化运维成为了解决这一挑战的关键,它不仅可以减少重复性工作,还能提高系统部署的速度和准确性。在众多自动化工具中,Ansible和Docker因其独特的优势而脱颖而出。

ansible是一个基于Python的开源自动化工具,它使用YAML语言编写剧本(playbooks),这些剧本定义了一系列任务(tasks)和处理节点(hosts)。Ansible的特点是简单易用、模块化设计,并且具有丰富的插件系统。它可以自动化软件部署、配置管理和任务执行,使得运维工作变得更加高效和可靠。

​​​​​​​Docker则是一个开源的应用容器引擎,它允许开发者打包应用及其依赖环境到一个可移植的容器中,然后发布到任何支持Docker的环境中。Docker容器可以在几秒钟内启动,相比传统的虚拟机更加快速和高效。容器化技术保证了环境一致性,简化了部署流程,并且提高了资源利用率。

将Ansible和Docker结合起来,可以发挥出两者的最大潜力。例如,我们可以使用Ansible来编写剧本,自动拉取Docker镜像,并在指定的主机上运行Docker容器。这样,我们就可以实现一键部署整个服务栈,无论是单个应用还是复杂的微服务架构。

在实际操作中,首先需要安装Ansible和Docker,并确保目标主机上的Docker守护进程正在运行。接着,编写Ansible剧本,指定需要部署的服务和配置。在剧本中,我们可以使用Ansible的模块来控制Docker客户端,执行如拉取镜像、创建容器等操作。

除了部署服务外,Ansible还可以用于管理Docker容器的生命周期。例如,可以通过Ansible剧本来启动、停止、重启容器,或者根据负载情况动态调整容器数量。此外,Ansible还支持使用模板和变量来动态生成配置文件,这对于需要根据不同环境定制配置的场景非常有用。

安全性也是自动化运维中不可忽视的一个方面。Ansible和Docker都提供了丰富的安全特性。例如,可以使用Ansible Vault来加密敏感数据,如密码和私钥,确保只有授权用户才能访问这些信息。Docker也提供了一系列的安全机制,如命名空间隔离、容器扫描和安全漏洞修复策略。

总之,通过结合Ansible和Docker,我们可以构建一个既灵活又强大的自动化运维体系。这种体系不仅能够提高运维效率,降低人力成本,还能够提升系统的可靠性和安全性。随着技术的发展和企业需求的变化,自动化运维将继续成为IT管理领域的核心趋势,而Ansible和Docker的结合无疑为实现这一目标提供了强有力的工具。

ELK技术栈

ELK 是一个流行的开源日志管理平台,它由三个核心组件组成:

Elasticsearch:一个实时的分布式搜索和分析引擎,用于存储、搜索和分析大规模的结构化和非结构化数据。Elasticsearch 提供了强大的全文搜索、实时分析和聚合功能,使用户能够轻松地从海量数据中提取有价值的信息。
Logstash:一个用于日志收集、处理和转发的数据处理管道。Logstash 可以从各种来源收集日志数据,如文件、消息队列、数据库等,然后对数据进行过滤、转换和丰富,最后将处理后的数据发送到 Elasticsearch 或其他存储和分析系统中。
Kibana:一个用于数据可视化和分析的开源工具。Kibana 提供了丰富的图表、仪表盘和可视化组件,使用户可以轻松地探索和分析 Elasticsearch 中的数据,并创建交互式的可视化报告。

Promethues

Prometheus(由go语言开发)是一套开源的监控&报警&时间序列(按照时间排序)数据库的组合。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。它可以监控主机,服务,容器,支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
Prometheus Server负责定时在目标上抓取metrics(指标)数据,每个抓取目标[主机、服务]都需要暴露一个HTTP服务接口用于Prometheus定时抓取。也就是说prometheus会将获取到的监控数据打包成一个可访问的web页面,通过访问指定的url来确定主机的状态
Pull方式的优势是能够自动进行上游监控和水平监控,配置更少,更容易扩展,更灵活,更容易实现高可用。简单来说就是Pull方式可以降低耦合。由于在推送系统中很容易出现因为向监控系统推送数据失败而导致被监控系统瘫痪的问题。因为如果同一时间有很多被监控主机都把数据推送给监控主机的话,就很可能导致监控主机处理不过来,所以通过Pull方式,被采集端无需感知监控系统的存在,完全独立于监控系统之外,这样数据的采集完全由监控系统控制。

Grafana

Grafana是一个开源的度量分析和可视化工具(没有监控功能),可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。


devops体系架构

  1. 研发人员开发代码
  2. 代码推送到git仓库
  3. jenkins通过配置的git访问凭证拉取代码,编译,构建
  4. 构建后通知测试人员进行测试
  5. 通过ansible或者docker远程部署到服务器上
  6. 通过ELK体系+prometheus+grafana进行日志分析和告警判断
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦龙zmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值