首页 文章 精选 留言 我的

精选列表

搜索[博客搭建],共10000篇文章
优秀的个人博客,低调大师

【博客大赛】+ 生产环境自动化变更全纪录

特别申明:本文根据生产变更编写,所有ip、用户名、文件路径和文件名等敏感信息已做替换删除或打码处理。 服务器列表 ip 主机名 备注 172.16.5.111 app01 1号机 172.16.5.112 app02 2号机 172.16.5.113 app03 3号机 172.16.5.200 db01 数据库服务器 172.16.5.150 ansible spug自动变更服务器 执行生产变更时会登陆3台应用和一台数据库服务器,根据变更实施步骤,手动在每台服务器上敲命令执行,这是传统的变更方式。这样做有几个弊端: 重复性工作多。生产变更少则十几步,多则几十步,很多步骤会在全部或部分服务器上执行。比如注释定时任务,4台服务器都要手敲注释命令;停应用操作会在3台应用服务器都执行。 失误多。由于所有的步骤都是通过手敲命令方式执行,敲错命令在所难免。另外由于执行步骤多、执行的服务器也多,很容易发生漏执行或者重复执行的现象。 文件传输不方便。生产环境一般通过堡垒机登陆,传文件也是通过堡垒机的ftp工具来执行。在变更时会多次涉及文件上传下载,这样就显得非常不便。 耗时长。这点是前三点的延续。由于都是手动执行,执行步骤多,还涉及堡垒机的登陆,整个变更做下来想快都很难。 变更步骤抽象 变更手册大小步骤几十项,根据功能和关联性,抽象合并为16步,并分为实施准备、变更实施、变更收尾3类。 模板 模板对应变更的16个步骤,相应的模板分为准备工作、变更实施和变更收尾3个大类。 变更实施准备的模板 变更实施的模板 变更收尾 自动化变更流程 1.将所有变更抽象为16个步骤; 2.每个步骤对应1个或多个脚本; 3.将脚本转化为spug平台的模板; 4.每次执行变更步骤时选择对应的模板和执行主机; 登录系统 登陆堡垒机,搜索分发服务器172.16.5.150,通过浏览器方式登陆 在浏览器地址栏输入http://172.16.5.150/或者直接点击历史窗口 输入用户名密码,登陆系统 一、变更前准备工作 第1步--注释定时任务 在执行任务栏选择主机和执行模板 选择主机,3台应用服务器和数据库服务器都执行 选择模板 执行命令 数据库执行结果,有5个定时任务被注释,右上角的对号表示执行成功 应用服务器有3个定时任务被注释 定时任务注释条数:1号机4条、2号机3条、3号机3条、数据库5条 第2步--停应用 3台应用执行该操作,停止后台进程和java程序 执行反馈 ‘the process is killed’代表后台进程停止,‘the java is killed’表示java程序停止运行;若脚本正常执行,返回的界面右上角会有对号√ 第3步--数据库跑批 跑批脚本: 执行结果: 第4步--数据库抽壳 数据库上执行抽壳操作 执行结果: 二、变更实施 第5步--应用程序替换 3台应用上执行 执行结果: 依次检查执行结果,正常的返回如图 应用程序替换是一个关键的步骤,集成了scp文件获取、文件解压、文件上传和移动文件到指定目录、赋权以及执行sql等。 第6步--日初日终改为手动 备份响应的表,并将xx启动方式调整为手动 该操作数据库服务器上执行 执行结果: 第7步--修改发送步骤 变更前update所有发送步骤,致不用发送,测试完成后恢复,数据库机器执行 执行结果: 变更完恢复发送时注意比对sql执行结果的条数 第8步--执行sql 执行sql,在PL/SQL内根据变更手册执行对应sql 自动化平台spug内也可以直接通过数据库服务器的console执行sql,不过返回结果没有PL/SQL直观。 第9步--启动应用 3台应用服务器上执行应用启动脚本 执行结果: 应用启动会启动后台程序和java进程,也会重新装载共享内存映射 第10步--跑批 跑批有两种方式,一种是直接复制变更文档跑批命令在分发平台console上执行;一种是将跑批命令拷贝后上传自动执行。本文采用第一种方式,第二种方式适用于批次很多的情况。 进入console 执行批次 第11步--比对 可以三台一起比对,也可以单独比对: 执行结果: 获取结果: 比对结果会上传到数据库服务器的/yssfgs/result目录,通过文件管理器可下载至本地电脑分析查看 比对这个也是关键步骤,之前跑批完每台服务器手敲命令执行比对,比对完然后登陆堡垒机通过ftp工具下载比对结果,劳时费力,而且批次越多花的时间越长,现在自动化了不受批次多少影响,所有的比对工作自动化完成。 三、变更收尾 第12步--日初验证 在1号机上通过执行日初批次验证变更有效性 开始执行: 执行结果: 第13步--查看是否有跳过步骤 查看跑批是否有Skipp步骤,正常结果为空,数据库上执行本步骤 执行结果: 如不为空需逐一排查原因 第14步--解注释 ​ 3台应用和数据库服务器都执行 执行结果: 变更准备工作被注释的定时任务都被解开 第15步--恢复发送 恢复并修改发送,数据库上执行 执行结果: 第16步--日初日终改为自动 恢复有效并将启动方式调整为手动 数据库上执行本脚本 变更执行完成 总结 自动化变更优势: 执行效率高。传统变更大概需要2到3小时,如果遇到批次多的情况时间会更长。自动化后变更时长缩短到1个小时不到,并且不受批次影响,即无论批次多少都不影响变更时长。 失误少。由于所有执行步骤都封装成了脚本做成了模板,杜绝了手动敲错命令的现象。 界面友好。各步骤执行完后结果反馈的界面很直观,很容易判断执行结果。 集成度高。通过spug自动化变更平台,可以方便的登陆各服务器并执行命令,轻松的进行文件的上传下载。 后记 运维自动化是每个运维人绕不开的话题,现在没有哪个公司不做自动化运维的。公司内也有很多工具和产品,之前也试用过很多开源的自动化平台。结合生产实际,无论是自研的还是开源,选哪个平台用什么产品不是问题,关键是如何切实的减轻工作量,提升工作效率。 目前私有云上的统一运维管理我选的是ansible,变更选择spug。这两个平台都很精准的解决了运维的痛点。一个简单的例子,之前生产环境改密码,100多台服务器至少需要两个小时才能改完,还出现过改错了的情况。每次改密码至少需要登录3次crt,一次是开着窗口防止密码改错了可以及时改回来,一个是修改密码用的,再一个是复核密码。光登录系统就让人崩溃,使用ansible一个yaml脚本统一执行,秒级完成且不会出错。 自动化运维平台不在乎高大上,好用是王道。 如果想了解spug自动化平台,请移步:自动化运维平台Spug测试

优秀的个人博客,低调大师

Hexo 4.2.0 发布,快速简洁且高效的博客框架

Hexo 4.2.0 发布了,更新内容如下: 特性 默认情况下,在 hexo-server 中禁用缓存 [#3963] 禁用此功能后,可以实时预览任何更改(尤其是主题布局)。 如果在生产环境中使用 hexo-server 为网站提供服务,则可以通过以下方式启用它: _config.yml server: cache: true 将min_depth:选项添加到toc() [#3997] 用法示例: <%- toc(page.content, { min_depth: 2 }) %> // table of content would only include <h2>, <h3> and above 更新说明:https://github.com/hexojs/hexo/releases/tag/4.2.0

优秀的个人博客,低调大师

Hexo 4.1.1 发布,快速简洁且高效的博客框架

Hexo 4.1.1 发布了,更新内容如下: 特性 添加trailing_html:到pretty_urls:选项以从 url 中删除 ".html" [#3917] 使用以下配置从永久链接变量中删除结尾的 ".html" _config.yml pretty_urls: trailing_html: fals 修复 为og:locale标签设置默认语言环境(以 “language_TERRITORY” 格式) [#3921] 之前只有在将language:配置为 "language-TERRITORY" 格式时才插入og:locale 使用此修复程序,如果语言为 “en”,则og:locale将默认为 “en_US” meta_generator()助手应该输出正确的 Hexo 版本 [#3925] permalink_defaults:选项应该被解析,而不是被替换 [#3926] themes/ 中的 "node_modules/" 和 ".git/" 文件夹总是被忽略 [#3918] 更新说明:https://github.com/hexojs/hexo/releases/tag/4.1.1

优秀的个人博客,低调大师

Hexo 4.1.0 发布,快速简洁且高效的博客框架

Hexo 4.1.0 发布了,更新内容如下: 特性 支持添加小时和分钟来发布固定链接 [#3629] 用法示例: _config.yml permalink: :year/:month/:day/:hour/:minute/:title/ 结果是https://yoursite.com/2019/12/09/23/59/a-post/ 插入article:published_time[#3674]article:author[#3805] 打开图标签 在与 iframe 相关的代码插件中启用延迟加载 [#3798] 影响 iframe,jsfiddle,vimeo,youtube 标记插件 需要支持的浏览器才能使用此功能 不支持的浏览器将简单地忽略该属性,因此可以安全使用并始终启用 meta_generator助手来插入元数据元素标签 [#3782] 用法示例: 在主题布局的 <head> 元素内插入以下代码段(如果使用 EJS), <%- meta_generator() %> 将输出<meta name="generator" content="Hexo 4.1.0"> Hexo 3.9.0+ 自动插入标签;为了获得性能优势,需要禁用meta_generator:选项, _config.yml meta_generator: false 在js()[#3681] 和css()[#3690] helpers中支持自定义属性 用法示例: <%- js({ src: 'script.js', integrity: 'foo', async: true }) %> // <script src="/script.js" integrity="foo" async></script> <%- css({ href: 'style.css', integrity: 'foo' }) %> // <link rel="stylesheet" href="/style.css" integrity="foo"> 支持换行:启用/禁用在 <table> 元素中换行反引号代码块的选项 [#3827] 默认情况下启用,启用 line_number 也会启用它 高亮配置: _config.yml highlight: line_number: false # must be disabled to disable wrap: wrap: false 此选项也可以传递给 codeblock() 标签插件 [#3848] {% codeblock lang:js wrap:false %} const foo = (bar) => { return bar; }; {% endcodeblock %} 更新说明:https://github.com/hexojs/hexo/releases/tag/4.1.0

优秀的个人博客,低调大师

Hexo 4.0.0 发布,快速简洁且高效的博客框架

Hexo 4.0.0已经发布,更新内容如下: chore:删除Node 6 修复 post_link和 asset_link 修复:默认情况下编码 permalink 如果你目前使用 encodeURI(post.permalink),提供三个选项:encodeURI(decdeURI(post.permalink))与 HEXO v3.9 向后兼容;HEXO-util 提供的 encodeURL() 函数,它是向后兼容的;删除encodeURI() feat:添加选项禁用元生成器标记(将 meta_generator: false 添加到 config 以禁用) 如果不想在 post.update 变量中使用文件修改时间,可在配置文件中设置 USE_DATE_FORPDATED:true feat(permalink_variable):添加 pretty_urls 选项以从 url 中删除 index.html 使用下面的配置从 permalink 变量中删除跟踪 index.html pretty_urls: trailing_index: false 修复(open_graph):从 url 删除 index.html 修复(helpers, tag plugins):默认情况下编码 url 修复:external_link使用after_render,添加了 field和exclude选项 更多详情见发布说明。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册