DevOps
-
蓝绿部署、金丝雀发布(灰度发布)、AB测试
随着微服务架构的普及,线上服务越来越多,随之而来的就是部署越来越频繁;随着互联网行业的兴旺,产品迭代的频率也是越来越快,服务上线速度逐步提升。有上线、有部署,就有风险。有风险,就对业务有影响,然后就有了一系列减少这种风险的部署方案:蓝绿部署、金丝雀发布(灰度发布),也有适应产品迭代频率的AB测试。
本文主要是简单解释下这几个概念,帮助自己理解,如果有错误,请大佬们斧正。
-
源码安装NGINX
本文主要记录一次从源码安装Nginx过程,参考的是Nginx官网。
-
将EOS项目部署到 weblogic12c
EOS Platform支持标准的EAR,可以运行在weblogic服务器上。
-
在EOS项目中禁用BPS服务
在安装EOS Platform的时候,会有选择插件的界面,包括bps、cap、mobile(7.3提供)、sso。当选择的bps之后,在EOS的default包(应该称为基础包)中,将包含BPS的内容。EOS导出EAR包的原理是,将新建的EOS项目中的内容添加到default包中,然后将default整体导出为EAR包。在某些使用EOS项目中没有用到BPS,并且不需要BPS引擎启动,需要通过修改配置,禁用BPS服务。
-
Windows下安装Weblogic Dev版本
在开发过程中,有一种情况是比较尴尬的:需要用到某个软件,但是只需要用到这个软件中的一小部分功能,这样既浪费的磁盘空间,又浪费了CPU空间。比如Weblogic,完整版包括很多功能,但是开发过程中,只是需要创建数据源、部署项目,然后进行测试即可。所以开发过程中,需要一款简化的Weblogic(Weblogic开发版)是挺有必要的(如果电脑配置比较壕,也可以任性的使用完整版)。
-
Eclipse下安装weblogic插件
安装好weblogic dev版本(Windows下安装weblogic dev版本),可以在Eclipse中安装weblogic server tools插件,直接连接到weblogic server,发布、部署、调试都变得简单些。
-
EOS Platform 7.2下安装weblogic插件
在实际工作中,需要用到 EOS Platform,这是一个基于 Eclipse 的开发工具,自带了 Tomcat,可以满足大部分需要,但是有时候需要使用 Weblogic,这就得手动安装 Weblogic 插件了。这个过程与Eclipse相同(Eclipse下安装weblogic插件),本文中在 EOS Platform 7.2 中安装 Weblogic 插件。
-
weblogic 报 java.lang.OutOfMemoryError:PermGen space
你好,我是看山。
内存溢出是软件开发过程中经常遇到的一些问题,在本地使用 weblogic 中间件的时候,可能会经常打包部署应用,重复多次之后,就可能出现内存溢出的情况。
-
记一次差点跑路的 RabbitMQ 运维经历
你好,我是看山。
这是一次比较苦逼的运维,完全不熟悉的系统、不清楚环境、不清楚配置,两眼一抹黑。为啥?就是因为原来的负责人撤了、交接人休假、再次交接人也休假,再再次交接人只有一份不全的文档。而我是再、再、再次交接人,连文档也没有。更要命的是,这是生产环境,大家都懂得,生产环境就是不能出问题,自封一个“奉命于危难之间”吧。
抱怨了一整段了,还是简单的说下这次运维吧,运维的是 RabbitMQ 集群,3 个节点 A、B、C,每个节点上启动了 2 个实例 a1/a2、b1/b2、c1/c2,其中 a1、b1、c1 组成一套集群环境 rabbit cluster1,a1 是磁盘节点;a2、b2、c2 组成一套集群环境 rabbit cluster2,c2 是磁盘节点。
就是因为完全不熟悉 RabbitMQ 集群,所以基本上趟了一堆的坑,碰到了一堆不应该出现的错误,也算是新手村长经验了。按照套路,这里先说说正确的启动方式,然后再说说碰到的异常。
-
实现ssh的免密码登录
SSH为系统提供了很多方便的功能,比如登陆远程的系统等、不同主机间通信等。随着分布式系统的兴起,很多机器间的通信需要用到SSH,但是这些主机彼此信任,那就可以通过实现SSH免密码登录,简化通信过程。
-
代码质量管理:SonarQube + Jenkins Pipeline 配置
你好,我是看山。
前段时间对自己的项目进行代码质量扫描,曾经以为自己的代码质量算是不错的,结果发现一堆的 bug 或者 smell code,灵魂受到 1w 点伤害。
可以想到,在时间紧、任务重的情况下,代码质量绝对是不能够保证的,虽然功能算是完整,但是可能就在某个隐藏的角落,就有无数的 bug 在潜伏着,所以有时间的话都对自己的代码进行代码质量检查吧。虽然不能保证有完美的代码,但是可以把 bug 数降低,也可以根据扫描的结果养成良好的编程习惯。
身为程序员就得严谨。
闲言碎语不再讲。
本文主要是介绍通过 Jenkins Pipeline 与 SonarQube 集成,对代码进行扫描,这里使用的是 Jenkins2.19.1,SonarQube6.4。
-
Ubuntu防火墙设置
Ubuntu 使用的防火墙名为 UFW(Uncomplicated Fire Wall),是一个 iptable 的管理工具。因为 iptable 是根据系统管理员编写的一系列规则筛选网络数据包,比较复杂,所以 UFW 对其进行了简化。UFW 可以帮助增强服务器安全,但是如果真正对服务器安全感兴趣,还是应该学习如何为 iptable 编写规则来更好的调整服务器的安全级别。
-
实现DevOps的三步工作法
《凤凰项目-一个IT运维的传奇故事》是一本比较神奇的书,用讲故事的方式,展现了IT团队(开发、测试、运维)在开发效能低、系统交付慢的情况下,通过实践三步工作法,在团队中实现加快系统交付、提升开发效能,使团队走上DevOps之路。而且本书有一个值得称道的地方是,通过类比制造业的工作流程,可以直观发现技术团队工作过程中隐藏的问题。
这里需要提醒一下开发人员,看书的时候一定要佛系,因为这个故事是以运维角度展开的,有一些大骂开发的情节。如果是想找具体的DevOps工具的,建议不要看了,里面没有具体的工具介绍,是以最朴素的方式,讲述DevOps的优势和实践。
先说一下概念:
- 价值流:一个组织基于客户的需求所执行的一系列有序的交付活动。或者,为了给客户设计、生产和提供产品或服务所需从事的一系列活动,它包含了信息流和物料流的双重价值。
- 技术价值流:把业务构想转化为向客户交付价值的、有技术驱动的服务所需要的流程。流程的输入是需求,由开发部门完成开发,进行整体测试,部署到生产环境正常运行,并为客户提供服务,以产生价值。
- 前置时间:从需求确认(开发接收需求)开始计时,到工作完成时结束
- 处理时间:从实际开始处理工作开始计时,到工作完成结束
- 等待时间:从需求确认(开发接收需求)开始计时,到实际开始处理工作时结束
- 在制品/半成品:价值流里没有彻底完成的工作、处于队列中的工作。部分完成的工作会逐渐过期,随着时间推移到最终失去价值。
- 约束点:价值流中的瓶颈,即整个价值流流速的上限点。
-
Docker 教程(三):Docker 命令
你好,我是看山。
本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第三篇。
-
Docker 教程(一):Docker 是什么
本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第一篇,本文大概介绍了 Docker 是什么和有什么用。可能在工作中,会有专业运维同学管理服务器镜像或其他内容,但是如果不了解这些概念,很多时候我们不会全面了解到系统的全貌。
-
Docker 教程(二):Dockerfile
你好,我是看山。
本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第二篇。
-
ZooKeeper安装部署
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
-
ZooKeeper介绍及典型使用场景
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。