OpenStack可靠性验证和故障演练-Gremlin
最近做了一个项目,叫做OpenStack可靠性验证和故障演练,主要是使用Ansible把平台运维过程中遇到的一些经典问题给编排了一下,算是将这些运维经验通过代码的方式给积累下来,当然,该项目不仅仅是一些故障case的累积,它还系统性的对OpenStack云平台的可靠性,可用性进行验证,通过关停一些服务,down一些节点,验证其鲁棒性。
最近在看一本书,讲的是infrastructure as code
的思想,介绍了一个概念,叫做Antifragility,也正好切合这个项目的主旨:
The effect of physical stress on the human body is an example of antifragility in action. Exercise puts stress on muscles and bones, essentially damaging them, causing them to become stronger. Protecting the body by avoiding physical stress and exer‐ cise actually weakens it, making it more likely to fail in the face of extreme stress.
Similarly, protecting an IT system by minimizing the number of changes made to it will not make it more robust. Teams that are constantly changing and improving their systems are much more ready to handle disasters and incidents.
一个系统想要获得稳定的运行,就像人想要获得健康的身体一样,得锻炼,在锻炼中逐渐变得健壮,如果害怕它出事,越不敢动它,那它会变得越来越弱。
于此类似的,AWS的系统众所周知是非常稳定的,他们倡导的设计理念中,有一个很重要的概念是:Design for Failures,为失效而设计,即充分考虑所有系统失效的可能性,并假定一切低概率故障事件都可能发生,在这种情况下来设计你的业务系统。
这些思想都是极好的,因此为了能够让这个思想在OpenStack领域落地,于是有了Gremlin这个项目,并且已经通过Github开源了,gremlin这个单词的意思是爱搞破坏的小精灵,它会对这个系统做各种各样的破坏,系统可能有一定的鲁棒性,能够承受这个破坏,这些case主要来验证云平台的高可用性,有的可能把系统搞挂了,这个主要是用来做故障演练,是我们平时运维过程中,遇到的一些经典case的回放,如果能够把这些case用来培训新人,想必是极有帮助的。
Gremlin的代码是经过精心设计,进行了比较好的抽象,可以很方便的添加测试用例,而且覆盖面很全,对系统的各个方面进行了系统性的覆盖,它不仅能够验证,甚至还可能发现一些平时没有遇到的问题。
为了更好的宣传这个项目,还请我们的美女设计师帮忙设计了一个logo,我的要求是:萌萌的,坏坏的,贱贱的,设计师很好的Get到了我的要点,于是有了下面这个呆萌蠢:
项目地址是:https://github.com/unitedstack/gremlin
希望能有更多的人贡献他们的经验,积累越来越多的case,让这个项目变得越来越完善。
OpenStack可靠性验证和故障演练-Gremlin
https://hackerain.me/2017/09/11/openstack/gremlin/gremlin.html