龙空技术网

自动化运维:如何零停机构建与部署项目

架构师成长历程 3183

前言:

如今兄弟们对“vultr如何升级内存”都比较注意,你们都想要学习一些“vultr如何升级内存”的相关资讯。那么小编在网络上汇集了一些关于“vultr如何升级内存””的相关内容,希望兄弟们能喜欢,小伙伴们一起来学习一下吧!

行业挑战互联网新技术的普及带来大量异构的IT架构形态及管理节点数量成倍增长,传统运维方式难以满足业务敏捷的需求;企业IT系统越来越多,系统间连接协作困难;IT部门难以从简单重复的运维工作中解脱,工作难以获得认可;企业运维水平对IT员工依赖度高,“重复造轮子”,知识经验难以沉淀复用;“救火式运维”普遍存在,IT员工压力大,成就感弱,个人价值难以体现。

本文,我们将向您展示如何配置一个流水线,该流水线将在零停机的情况下构建、测试和部署项目。零停机是一种部署技术,可让您在此过程中通过终端用户完全更新网站。

请确保在您服务器上安装SSH,因为我们需要使用SSH运行一些命令以修改部署。

新建项目

在此,我们将使用一个静态React网站作为演示,您可以从:GitHub存储仓上获取示例源码,此存储仓基于React快速上手文档创建。(React是一个用于构建用户界面的JavaScript库)

进入Buddy系统并新建一个项目。选择你的目标Git托管,在此我们使用Buddy系统自带的Git托管作为演示,当然您也可以使用其他的Git托管提供商:

流水线配置

流水线是在存储仓代码环境中运行并在特定条件下触发的一组操作(例如构建、测试或部署)。

在这里,我们设置触发条件和要从中部署的分支。由于我们要全自动化,因此将触发模式设置为事件(自动)。我们使用的项目只有一个分支(master),因此保持默认:

构建配置

现在,Buddy将要求您向流水线添加操作。选择Node.js操作 – 我们将使用它作为构建的模板:

Buddy使用具有预配置环境的隔离容器作为构建模板

您可以在此处配置构建详情,例如使用的Node版本和将在容器中运行的命令。您可以保留默认命令 - 只需在行末添加npm run build:

npm installnpm testnpm run build复制代码
测试构建

运行流水线以查看一切是否正常。第一步,Buddy将从您的存储仓中提取最新更改并设置环境变量。在第二步中,Buddy将下载所需的依赖项并将其缓存在容器中 - 存留在那以供将来执行,这样您就不必再次进行下载。您可以单击正在运行的执行并展开操作中的日志以了解详细信息:

文件系统

执行完成后,将生成对流水线文件系统的构建。文件系统包含上次执行的修订版中存储仓的克隆、构建操作生成的工件以及手动上传的静态文件(例如配置文件)。您会注意到工件会标有一个小的宝石图标:

部署配置

下一步是添加一个操作,该操作会将我们的构建上传到服务器。在这种情况下,作为示例我们将通过SSH部署到腾讯云服务器,我们推荐使用SFTP作为传输操作:

虽然示例使用SFTP与腾讯云,但您也可以使用所需的任何服务器、私有云、专有云服务器,有如阿里云、华为云以及专有的Buddy操作集成Azure、AWS、谷歌云、DigitalOcean、Heroku、Netlify、Vultr、Rackspace等等。将来,我们还会集成更多便捷专有的Buddy操作云服务提供商集成。如果您是云服务提供商并欲提供Buddy操作集成,请通过此电子邮件联系我们:support@buddy.red

操作界面允许您配置部署详细信息:服务器的访问凭据、Buddy将从中上传文件路径以及服务器上的目标路径。您可以从多种身份验证方法中进行选择 - 我们始终建议使用 Buddy的工作区密钥作为最安全的身份验证方法。

在示例中,网站将从存储仓中的构建目录(源路径)部署到服务器上的/var/www/html/hello(远程路径):

测试部署

单击Test action测试按钮以检查是否正确配置所有信息。Buddy将连接到服务器,上传测试文件,然后删除将测试文件删除。完成后保存设置单击运行流水线按钮或将某些内容推送到存储仓以触发流水线并将网站上传至服务器:

如果出现连接问题,请确保将Buddy用于部署的IP列入白名单。

零停机部署

流水线现已完全正常运行:每当进行推送时,Buddy都会提取更改、运行单元测试、准备构建并将其上传到服务器。现在是时候让我们升级流程了,以确保应用程序在部署期间不会遭受任何停机。

我们将应用一个简易的技巧:首先将应用程序上传到新创建的文件夹,然后在部署完成后将服务处理过程切换到新路径位置。

编辑部署文件夹

单击部署操作以编辑其详细信息,并将部署到的文件夹(远程路径)更改为$BUDDY_EXECUTION_REVISION/。这将在每次执行时自动创建一个以当前部署的修订命名的新文件夹。如果您在GitHub上使用我们的项目,完整路径将如下所示:

/var/www/html/$BUDDY_EXECUTION_REVISION复制代码

Buddy将检测到远程路径已更改,并要求您采取措施。保持原样并单击继续 – 我们需要先在服务器上添加一些命令:

添加服务器命令

现在,我们将添加一个操作,该操作将连接到我们的服务器,并运行将在部署后将服务进程切换到新路径位置的命令。在操作名单中查找SSH:

该操作以与部署完全相同的方式定义:您需要提供身份验证方式、服务器凭据以及将在其中执行命令的目录(将此目录保留为默认值)。当然,我们也需要适当的命令。填写服务器详细信息并将以下内容粘贴到命令窗口中:

#kill current http-server processkill $(lsof -t -i:80) || true#run maintenance pagehttp-server -p 80 /var/www/html/$BUDDY_EXECUTION_REVISION > http.log 2>&1 &复制代码

第一个命令将终止当前服务进程。第二个将从部署操作创建的新位置运行。

该操作应如下所示:

测试零停机部署

推送代码到存储仓以触发流水线或手动运行该流水线,并检查执行日志是否正确传递:

恭喜 – 您已成功将零停机部署引入交付流程!

请注意,此示例中的应用程序可以在几秒钟内完成部署,并且不需要绝对100%的正常上线运行时间。此方案最适合用于可能需要几分钟(甚至几小时)才能完成上传的复杂网站与程序部署。

暂存环境配置

在将网站部署到生产服务器之前,最好在暂存服务器上预览更改,并可能运行一些端到端测试。在本文的这一部分中,我们将重新配置流水线以从端口3000为网站提供服务,并将部署到生产环境 - 但仅在手动确认更改后。

创建暂存服务器

第一步是添加另一个SSH操作,该操作将在服务器上创建新的服务进程。您可以使用操作添加界面上的复制选项,而不是从头开始配置所有内容:

复制时,将项目和流水线保留为默认值,但不要复制所有操作,而是仅选择SSH操作:

流水线中应有两个相同的SSH操作。单击第一个以编辑其详细信息并将端口从80更改为3000:

#kill current http-server processkill $(lsof -t -i:3000) || true#run maintenance pagehttp-server -p 3000 /var/www/html/$BUDDY_EXECUTION_REVISION > http.log 2>&1 &复制代码

完整的流水线应如下所示,第一个SSH操作设置为端口3000,第二个设置为端口80:

为避免混淆,最好将两个SSH操作的默认名称重命名为两个带不同说明的名称,例如:暂存服务器操作和生产服务器操作。您可以在“概述”设置选项卡中执行此操作。

添加手动确认

在每次推送时将网站部署到生产环境而不检查更改是一项有风险的业务。除非测试完全涵盖该过程并通过多个环境发布,否则强烈建议将流水线触发模式切换为手动,或者在部署到生产环境之前添加手动确认步骤 - 最后一个是我们现在要做的:

单击最终发布步骤之前的 + 按钮,然后在操作列表中查找等待审批:

您可以在此处定义问题并将审批权限限制为选定的用户组:

现在,一旦运行流水线,它将自动停止并且在确认更改之前不会继续运行。但是怎么让审批人员知道有一个网站在等待他们的批准呢?

这时,我们将给他们发送提醒通知。

通知用户部署

再次单击 + 按钮 - 这次是在批准操作之前。跳转到右列中的通知,然后选择您的首选服务:

在此示例中,我们将使用 Slack,因为它是用户中最受欢迎的通知服务。

每当您首次添加与第三方服务集成的操作时,Buddy都会要求您配置集成详细信息。在此,您可以定义集成的权限范围,即谁可以修改其详细信息并添加需要它的流水线操作:

最后一步是接受所选应用程序的OAuth权限:

配置集成后,您可以指定消息。最好将 URL 粘贴到暂存网站,以便团队成员可以快速访问:

测试暂存至生产部署

对网站进行一些更改并运行流水线。执行应在发布到生产环境之前停止:

您还应在所选服务中收到通知:

单击批准按钮以继续执行剩余操作并实时发布网站。

恭喜 – 您已成功为您的网站创建完整的暂存/生产交付流水线!

附加: 条件通知

流水线现已完全正常运行。它无需停机即可交付应用程序,将网站上传到暂存服务器,通知团队有新版本等待审批,并在更改获得批准后将其发布到生产环境。

但是,如果在此过程中出现问题怎么办?例如,如果测试失败怎么办?好吧,首先要做的是通知相关人员。我们已经针对有能力的开发人员提供了有关新版本的通知操作。但是,在这种情况下,我们需要通知QA或Dev - 但前提是流水线遇到中断。

转到流水线总览,然后单击于失败标签按钮:

添加您选择的其他通知。编辑邮件并选择正确的频道/收件人:

测试条件通知

是时候进入好玩的部分了 - 故意破坏您的网站。例如,让我们在 /src/App.test.js 搞坏一个import破坏:

推送更改以触发流水线。执行将在测试这一步骤上失败,除了最后的通知不会执行进一步的操作:

附加: 终端调试

Buddy有一个很酷的功能,让你直接从终端调试错误。请转到所需的执行进行访问,然后在失败的操作上单击“在终端中调试操作”:

Buddy将启动容器备份,允许您在交互模式下运行命令并调试问题:

请注意,终端调试被视为正常执行。除非工作区中具有并行性操作,否则任何后续执行都将进入列队排队执行。

HYDO自动化运维:自动化监控与运维解决方案

豪越科技有限公司

您身边专业的智慧管理专家

自动化运维是一个体系,体系的建设需要循序渐进,并且有架构有逻辑有工具。

目前,自动化运维多是在互联网运维领域实现,大部分基于开源软件,由诸多专业细分的技术团队协作支撑,有精力有氛围有网络环境来专研不断出现的新问题以及新的技术应用。

传统运维多存在于非互联网行业,由于自身架构、历史渊源及业务体系原因,多采用闭源厂商开发的运维系统,但在网络优化、升级及架构重组过程中,也逐步向自动化运维靠拢。

运维的概念很广,体系也很庞杂。理想状态下的自动化运维范围包括安装自动化、部署自动化、监控自动化、发布自动化、升级自动化、安全管控自动化、优化自动化、数据备份自动化等。基于自动化运维调度引擎,可完成巡检、性能分析、文件下发、故障诊断等自动化运维任务。

不积跬步,无以至千里。运维的趋势是自动化运维、智能运维,自动化运维是智能运维的基础。现今各行业运维建设方案都在向此目标靠拢及努力,逐步夯实基础,以期距离智能运维更进一步。

传统运维升级解决方案推荐

对于运营商、金融、政府、军工、交通、医疗、教育、电力等行业来说,在自动化运维建设过程中,自动化监控、自动化数据采集、自动化巡检和告警、自动化数据分析等基础体系搭建,可以通过部署运维管理软件厂商推出的智能运维管理系统来快速实现。

以HYDO为代表的豪越自主研发的智能运维大数据管理平台,在自动化数据采集和自动化监控方面,成果斐然,已在政府机构、科研院所、高校、军工、医疗等诸多领域广泛应用。HYDO开创性实现大规模数据中心的统一集中管理、实时监控、安全高效运行和自动化运维。

HYDO涵盖网络、动力环境、IT基础设施、IT硬件、软件、业务系统、视频、云服务等;可实现多类型指标的精准管理和可视化呈现;具有故障自愈功能,开启全天候无人值守模式;开创移动运维解决方案,大幅降低运维成本;基于大数据平台的分析与挖掘,构建Al平台助力用户实现智能化运维。

HYDO产品技术架构

系统技术架构划分为四层:数据采集层、中间调度层、数据存储层和WEB应用层。

数据采集层:采集被监控对象的指标数据。

中间调度层:调度数据采集层采集数据,并对采集的数据做转换、存储和告警识别处理。

数据存储层:存储配置信息和调度层处理后的采集数据。

WEB应用层:人机交互的数据录入和展示

自动化监控中心

01/大屏集中、实时展示

HYDO智能运维大数据管理平台能够统一、集中展示整个机房IT基础设施、基础软硬件设备和业务系统等资源的运行情况,通过扇形图、条形图、折线图、仪表盘等可视化功能组件,帮助决策者、管理者、运维人员迅速掌握整体IT设备和系统的运行状态。

具体监控内容包括:

>系统健康度

实时分析、计算数据中心所有监控对象和指标的运行数据,通过分析算法来综合评估系统整体健康度并进行动态展示。

>基本信息

实时显示数据中心所有被管对象的状态信息,包括被管对象总数、正常运行数、宕机数。

实时显示数据中心所有被管对象的指标汇总信息,包括指标总数、正常指标数、告警指标数等。

>系统负载

实时展示系统运行状态信息,包括CPU、内存、磁盘空间使用情况,以曲线图形式显示网络流量等运行数据的变化趋势与波动情况。

>TOP3动态展示

实时展示CPU使用率、内存使用率、网络流量使用排名前三的被管对象信息,并以视图形式展示各指标值和设备名称,使维护人员可实时了解重要设备的关键指标峰值情况。

>存储空间动态展示

监控主机磁盘/存储设备的存储空间使用情况,以柱状图形式展示各存储对象的总空间、使用空间和剩余空间。

>定制化展示

HYDO系统可根据不同业务场景和展示要求,提供大屏的定制化设计与开发,用于呈现多样的业务状况和设备运行信息。

02/可视化综合展示

通过多种可视化方式从多个视角和维度对整个IT系统运行情况进行综合、全面、集中的监控展现。针对信息中心不同岗位、不同人员提供不同的管理视图,包括告警总览、告警分析、告警信息排行、关键业务系统健康度、网络设备性能TOP、线路流量TOP、主机设备性能TOP、巡检统计TOP等基础设施运行统计概览。

03/拓扑视图监控

HYDO智能运维大数据管理平台通过独有的拓扑生成算法,能够快速、高效、准确的搜索整个数据中心的各类管理对象,包括网络设备、安全设备、服务器、虚拟化等,自动生成拓扑结构,并提供拓扑报告。

>网络拓扑

系统可以自动发现数据中心的网络设备及设备之间的连接规则,自动生成网络拓扑,并根据连接规则有序排列。网络拓扑图可以呈现设备告警信息、基本信息、状态信息、面板信息等,并可进行远程测试、远程登录等操作。

>系统拓扑

根据业务逻辑关系,自动、手动生成系统拓扑图。系统拓扑图可展示操作系统/数据库/中间件/业务系统的关联关系、告警信息、基本信息和实时运行情况,为主机管理提供全面的状态信息和运行数据。

>虚拟化拓扑

虚拟化拓扑清晰地展示了宿主机、虚拟机、虚拟存储与网络之间的关联关系,并实时呈现运行状态、性能信息、告警信息、基本信息等数据信息。

某大学网络拓扑图

>机房拓扑

全面展示机房的整体布局,包括机柜陈列、设备分布、动力环境设备的位置及状态,实时显示机房温度、湿度、漏水、UPS、蓄电池、电源、烟感、门禁状态等指标值。

>业务拓扑

以业务系统的构建和问题分析为导向,自动将原有离散的设备、应用、中间件、数据库及基础设施,整合呈现为清晰严谨的业务系统架构。通过业务系统拓扑图的性能分析,可关联分析系统各个组件的性能问题。

业务拓扑图

04/资源总览视图

HYDO智能运维大数据管理平台实时展示所有资源组的运行状态,也可单独查看某个资源组的详细运行信息。资源组是根据管理或业务需要而创建的组,由一台或多台主机构成。创建资源组使运维管理变得简单,将每个人或部门负责的设备和服务以组的形式呈现,分工管理,职责分明。

05/异地分布式监控

HYDO智能运维大数据管理平台通过跨地域分布式扩展模式,实现异地多站点的集中统一监控, 对每个站点各种设备和服务进行有效的监控和报警,提高整体管理效率,降低系统运维强度和复杂性。

自动化数据采集

01/网络设备数据采集和监控

对网络进行全面管理,实时展现网络系统的各种性能数据。

>基本信息

实时查看网络设备的基础信息,包括品牌、型号、配置、运行时间、设备面板、端口状态、线路状态及连接等。

>性能分析

实时展示所有设备的性能信息,如CPU负载、MEM利用率、线路流量、帧流量等。

>网络测试

通过PING、SNMP、TELNET等测试工具进行单节点或IP区间批量测试。

>无线管理

对无线AC及AP设备进行统一管理,包括无线设备自动发现、状态管理、拓朴生成、在线AP数、离线AP数、告警管理等。

02/服务器数据采集和监控

支持对主流操作系统(Windows、HP Unix、Aix、Solaris、Redhat、CentOS、Redflag、QiLin)的实时监控;支持对CPU性能指标、内存工作状态、硬盘、网口状态及流量、系统状态、主进程等实时监控。

03/存储设备数据采集和监控

对主流存储厂商(IBM、HP、DELL、华为、EMC等)的磁盘阵列、磁带库设备进行实时监控和管理,包括设备运行状态、网络连通性、磁盘的运行状态、控制器状态、存储总空间、空闲及占用空间等。

04/IP节点数据采集和监控

>打印机监控

支持多品牌打印机的监控,监控指标包括:设备运行情况、网络连通性、缺纸/缺墨状态等。

>摄像头监控

对摄像头的运行状态、网络连通性及视频质量进行实时监控和管理。

05/虚拟化数据采集和监控

实现对虚拟环境中宿主机、虚拟机、虚拟存储、集群、资源池、虚拟交换机等对象的性能、状态和告警的实时监控,支持用拓扑图和列表形式集中展示各个被管对象监控指标,包括基础信息、运行信息、CPU负载、MEM利用率、宿主机的硬件状态、数据存储容量及使用空间;提供虚拟化报表统计功能,包括运行状态统计分析、性能统计分析、告警统计分析报表。

06/IPMI硬件数据采集和监控

支持服务器硬件带外管理,通过IPMI协议实时展示IPMI硬件的状态信息,包括硬盘、温度、风扇、电源、内存、CPU等指标,并提供开机、关机等操作。

07/数据库数据采集和监控

支持对Oracle、SQL、MySQL、DB2、达梦等主流数据库的监控和管理,包括:运行状态、连接数、并发数、数据库日志监控、缓存监控、索引信息监控、库缓存监控、监听器监控、进程监控、回滚段监控、实例监控、会话监控、 实例性能信息监控、SQL语句执行状况监控、日志监控和表空间使用率等,也可根据需求定制不同的监控指标。

08/中间件数据采集和监控

支持对WebLogic、Websphere、Tongweb、Tomcat、Apache等主流中间件的实时监控,包括中间件运行状态、性能、通道、队列信息、线程、事务信息、连接池状态、连接数量、最大连接数量、Session数等指标监控。

09/应用性能数据采集和监控

支持对HTTP、HTTPS、FTP等主流应用进行实时监控,包括应用状态、进程状态、进程占用资源情况、下载速度、最大时延、最小时延、平均时延、端口状态等指标;支持对web运行状态、网页篡改进行实时监控和报警。

10/定制化数据采集和监控

对服务提供定制化监控和管理,如对电子政务、OA、ERP、HIS、MES等业务系统进行定制化管理,监控指标可自定义,包括服务运行状态、端到端响应时间、业务/应用所关联的资源对象的性能和故障等。

自动化巡检及告警

01/自动预警和报警

HYDO智能运维大数据管理平台采用灵活、清晰、高效的报警策略,经过多年的应用和改进,已具有完善的报警功能;支持告警阈值、告警条件、告警级别等指标的自定义设置,同时提供多种报警方式,如微信、邮件、短信、网页、声光等。

02/IP地址自动发现

实现对全网环境中IP自动发现,实时展示IP地址使用情况,及时发现并提醒新加入的IP地址,跟踪IP历史情况,并具备打开端口、关闭端口功能。

03/日志自动采集和分析

支持对Syslog、文本日志接收和分析,可灵活设置接收对象、等级和关键字的筛选,并自动记录所有被监控主机和服务的状态变化 , 根据关键字进行告警提醒,便于管理人员查看、统计报警历史,分析和定位系统故障。

04/自动化巡检

提供智能巡检功能,可自定义巡检项、巡检周期等参数,并提供自动巡检和手工巡检两种模式。巡检完成后,系统自动生成图文并茂的巡检统计报告并可主动推送至负责人邮箱。

05/配置自动备份及对比分析

HYDO智能运维大数据管理平台提供对网络设备配置文件的定期备份功能,通过TFTP方式对各个品牌、类型设备实现配置文件备份,备份任务、备份周期、备份数量可灵活设置,支持配置文件自动对比分析,当配置信息发生变动时可及时告警。

自动化统计分析

01/自动统计报表

提供各种类型图表(饼图、曲线图、柱状图、数据表、仪表图等)的可视化展示,可协助用户分析网络、主机、服务等各种被管对象的运行状况,提供专业化的分析方法,同时系统提供历史数据的查询和导出(PDF、EXCEL),方便管理人员直观、多角度掌握IT资源的整体运行情况。

02/运维大数据分析

HYDO智能运维大数据管理平台自动收集被监控对象的运行日志,对响应时间、服务质量、网络状态、网络流量、性能指标、故障频率、安全指标等进行实时监控,对海量数据进行关联、挖掘与分析,全面展示数据中心的运行状态和薄弱环节,并给出预警、提醒、运营优化及规模扩展建议。

总结

本文介绍的做法涵盖了使用Buddy进行持续集成和部署的基础知识。就软件发布频率而言,仅应用部署自动化本身就是一个行业的改变者,极大地提高了效率和工作条件。流水线和可视化界面的灵活性,可让您在不参考文档的情况下即时添加和删除操作,而Docker容器可确保整个团队的环境保持一致。

总而言之,Buddy更像是一个开发运维大舞台,您可以在其中创建自动化工作流程,就像建造房屋一样:选择您需要的材料,在必要时进行调整,怎么舒适怎么办。但不要认为仅仅虚有其表,因为Buddy与您迄今为止可能使用过的任何其他CI/CD工具一样强大 - 它只是降低了DevOps入门门槛,并把人们认为晦涩的DevOps变得简单易用。

标签: #vultr如何升级内存 #apache weblogic session