用一个故事来说OpenStack的架构
【编者按】
OpenStack是眼前最热门的开源云平台。到底什么是OpenStack?你对它的架构真的理解吗?如果不,那就让我们一起通过这个故事来学习。主角是一个想赚钱的管理员,我们的故事从这儿开始……
故事设定
主角是一个想赚钱的管理员。
他的手里有着大量的物理计算资源,无限多的服务器啊,无限多的电力什么的,无限多的硬盘空间,无限大的带宽啊什么的(勿吐槽,反正一切是脑洞大开,不如让他无限大,文章的不严谨之处,还请谅解),而且这位管理员在计算机领域无所不能,写程序分分钟出货balabala,反正就是属性很牛逼就对了。
另外,这个管理员比较懒,什么东西都想以最少的操作去完成,但这个管理员写起来程序,无视一切….
我们的故事开始了
故事从这位管理员说起,管理员先森想着,我放着这么多的刁B玩意,不赚点钱对不起自己啊,然管理员正好看到当前火热的虚拟机技术,想着,我这么多的玩意,如果直接把整机租出去,赚的钱太少,不如把这些服务器拿来跑虚拟机,然后给客户出租虚拟机,这样管理员先僧就能赚大把大把的钱了,然后出任CEO,赢取白富美,走向事业巅峰,咩哈哈哈~~~~
话说管理员君开始忙活了,这么多的服务器,要重新编写操作系统太过麻烦了,不如拿着现成的操作系统用的实在,于是管理员在认证查看了当今世界上的操作系统之后,觉得Linux操作系统定当能担此大任,于是这位管理员君开始化身为程序猿,去构造心中的梦想….
管理员童鞋首先想了一下,我这么刁逼的东西,那先得有个刁逼的名字啊,反正这东西我也不指望他能给我赚钱,那肯定是要开源的啊,那就这样吧,叫个OpenStack挺不错的
好了,项目的名字有了,接下来我要跑虚拟机对外出租赚钱是吧,那创建虚拟机不是谁都TM能创建的啊,这活只有我TM能创建啊,但是如果有一天有人接手了我的这些,那他也要能创建啊,那么以后如果越来越多的人去使用和管理,我TM总不能每次都把root账号密码给他们吧,所以这时候对于管理员来说,有一个新的需求,就是要让电脑知道谁有权利去使用这个机器的一切
于是管理员君开始废寝忘食的编写程序,立志做出来一套牛逼的身份认证管理系统,在数天之后(勿吐槽时间),管理员君终于把这个刁逼的身份认证系统做完了,做完了吧,总得有个名字吧,脑洞大开,就TM叫Keystone吧,于是,我们的OpenStack的第一个组件,Keystone就有了
接下来,管理员让服务器自己去鉴别使用者的身份,这下方便坏了,只要小小的配置一下,服务器君就能立马知道使用者上三代下三代的信息,连隔壁老王家的那条狗在外面勾搭了几个小母狗都TM知道了,真是刁逼坏了啊..
然后管理员开始先试用市面上的虚拟机程序,用了几家之后都感觉不错,唯一缺点就是每次创建了虚拟机之后都得安装操作系统,真特么麻烦啊,为毛不能创建之后就直接带上操作系统呢,这时候问题来了,市面上操作系统辣么多,而又不知道客户到底喜欢用哪一个。
这时候,管理员君就在想了,我特么弄个程序,让他专门去管理镜像,我特遣吧各种操作系统的镜像弄好,这样我未来创建我自己的虚拟机的时候创建完就可以直接有操作系统了,再也不用TMD创建一次安装一次了,真特么爽,现在这个镜像管理程序有了,那总得有个耪ㄌ斓拿郑遣蝗缯庋徒懈Glance吧,听起来就刁刁的。
管理员君做完了Keystone和Glance之后,心想,现在世界上人家的虚拟机软件特么又是要钱的, 还没有源代码,对我这种崇尚开源精神的人来说怎么能忍!!!绝壁不能忍啊,心一热,我TM不日自己开发一个,刚好和我做的叼逼玩意对应起来,于是管理员君此时程序猿附身,吃了一箱方便面的时间里就写出来了一个刁逼的虚拟机软件,可以创建虚拟机啊,复制虚拟机啊,创建快照啊什么刁逼功能都有,在考察了当今世界上现有的功能之后,自己又独创了XXOO个功能,真是掉的不要不要的。
此时天空一道炸雷,仿佛在庆生一般,管理员心想,传说当大地上出现非等闲之物事,天空都有异象,想来我这刁逼玩意也非等闲之物啊,此物只因天上有,人间难得几回闻啊,这么耪ㄌ斓亩髅挥懈龉桓竦拿衷趺茨苋蹋芾碓蹦远创蚩祭聪肴ィ詹荒苁常共荒苊拢质且幌浞奖忝娴娜兆庸チ耍芾碓敝沼谙氤隽艘桓鲎约壕醯貌荒芨诺拿至耍徒兴Nova吧
好了, 到现在,管理员满意度看着自己的服务器上跑着自己一手打造的虚拟机软件,虚拟机运行着自己打造的+12的定制版XX系统,心满意足的睡了,卧槽TM睡了!!!!
话说管理员这一觉不睡则以,一睡睡了两箱方便面的功夫,某天管理员君心血来草,想用自己的虚拟机去打一会WOW刷个本什么的,这才发现我TM虚拟机不能上网我屮HU,这尼玛虚拟机我TM看不见摸不着,想给菊花捅个网线都没办法,这尼玛能忍么,不能忍!!
管理员心想,我TM物理机要上网,一根网线捅到路由器/交换机就行了, 这TM虚拟机没有路由器交换机,捅个P啊,既然电脑都能虚拟了,我TM吧你路由器交换机,顺带防火墙一起虚拟了,这样我TM就能打WOW了。
于是管理员君不吃不喝,又是一箱方便面的时间,管理员君成功的做出来了针对自己虚拟机专用的虚拟网络管理程序,为了配合Nova这么高大上的名字,这牛逼的虚拟网络管理程序就叫Neutron吧(这TM哪里配合了)
故事到了现在,管理员终于能吧自己的叼逼玩意给客户租出去赚钱了,这么刁逼的玩意,一推出,就轰动了世界,好多人都找管理员租用他的虚拟机跑业务,管理员在处理大量客户的租用请求的时候十分操蛋。为啥嘞,因为管理员当时设计程序的时候就是在linux下设计的,设计出来的程序当然只提供了命令行的操作方式,每次创建虚拟机,管理员都得敲好多命令,一开始管理员是写了一个bash脚本来处理这个事情,但是毕竟扛不住用户的各种各样的变态的修去,终于有一天,管理员爆发了!!!!
我TM为了创个虚拟机都TM累坏了,脸都黄了,人也瘦了,方便面也吃不下去了,这样下去还能有女票么,这不行,我得设计一个功能强大,管理方便,XXOO的管理面板,而且我还要能在不同的设备上去管理,给每个设备设计单一的程序太麻烦,不如就直接做成网站的形式,基于WEB做这玩意吧。
管理员同志又开始设计程序了,一说设计,这牙也不疼了,胃口也好了,方便面也能一次吃两桶了,一口气上五楼也不费劲了。
又是一箱方便面的时间,管理员总算是把这个功能强大的管理面板做出来的,把自己之前弄的什么Glance啊,Nova啊,Neutron啊的所有功能都扔上去,现在方便坏了,我TM点点鼠标就能创建虚拟机,一个虚拟机分分钟就创建完了,再也不用面对黑乎乎的命令行了,整个人神清气爽,好了, 东西出来了, 同样得有个刁逼的名字,那就这样吧,叫个Horizon也是蛮吊的啊,跟前面的也挺配的啊(配个P啊!!!)
现在管理员终于能躺着赚钱了,这样的日子过去了一天又一天,管理员君天天数着钞票玩,玩的不亦乐乎啊。
突然有一天,有一位客户反映,我们租用你的服务器存放了一些公司的重要数据,但是现在租的服务硬盘快满了,管理员君能不能给我们加个硬盘啊
加个P啊,管理员君当时做的时候没想着硬盘不够了怎么办的问题,这尼玛现在手握一大堆硬盘我特么怎么往虚拟机上加,加NMB加,但是俗话说,顾客就是上帝,上帝既然有需求,这服务上帝的管理员君不得拼了命的去完成?
于是,新的一轮编写程序开始了,主要目标就是能在虚拟机上加新的硬盘,而这个加的硬盘也是虚拟出来的,反正TM把能虚拟的都虚拟完了就对了。
又是一箱方便面的时间过去了,管理员为了补当年的漏洞,又重新写了一个功能略叼的玩意,他可以把整个硬盘/阵列作为虚拟盘的存放地,能创建任意大小的虚拟硬盘,还可以把这个硬盘直接挂载到某个虚拟机上,同时也做了Horizon的web菜单,点点鼠标就能加硬盘,真是方便坏了啊,这么牛逼的东西不得有个名字?思来想去,还是叫个Cinder比较好听(好听个P啊!!!)
好了,现在总算是把客户的问题都解决了, 伸个懒腰,睡个懒觉, 岂不快哉,咩哈哈哈~~~
话说到管理员正在闭关,呃…..睡觉,忽然被客户的电话吵醒,CNM的客户,P事就多得很啊,心里虽然这么想,但是还是吧电话接了:喂狗日的,噢不,亲爱的客户,怎么了?
客户说,他们公司目前有大量的文件需要找个地方存放,公司内部没有这么大的空间,听说你们这里的IT环境各种不错,想在你这里租用一些空间来放文件,但是不要虚拟机,只要能上传/下载/管理文件就行了,
管理员回到:木问题啦,包在我森上啦,小小斯啦..
新的需求又来了,管理员一边骂着娘一般开始想这事情,我TM现在要想存文件,就TM得要虚拟机啊,狗日的客户又TM不要虚拟机,简直坑我(die)啊。。要是给Cinder添加这个功能无异于重新编写一次Cinder,杀了我算求…
话虽这么说,管理员君还是觉得,与其重写Cinder不如新加一个组件,让它实现这个功能不就结了
又是N个不眠夜,又是一箱的泡面,管理员君终于按照客户需求设计出了这么一个程序,可以存取文件,也只能存取文件的一个东东,同时管理员君设计了这逼玩意在Horizon中的菜单,,同时又做了一个网站,专门提供这B玩意的文件管理功能,这回管理员想的也多了,光有web不高端大气上档次,于是一股脑把各种平台的各种端都做好了(实际上的OpenStack并没有各种客户端,客户端都是使用着自己单独开发的),往出一拿,瞬间好评爆棚,各种强顶赞,劝都劝不住啊,这么高大上的东西,这么受欢迎的玩意,得起一个配得上这玩意的名字,那啥,最近苹果不是新出了一个Swift语言么,我看着名字挺不错,那就叫Swift吧(实际上这俩重名是个意外,毫无关联的意外)
到了现在,客户的各种有理无理的需求都TM满足了,管理员也想不出哪里还能再做点什么(明明是不想做了啊喂),管理员也能安心的赚钱把妹纸了(最后才是主要目的啊喂),管理员君到了现在吃泡面也感觉萌萌哒了。
故事到这里就算是完了,但是OpenStack的架构远不止此。。。
让我们梳理下架构
- Keystone提供了身份认证管理,所以叫身份认证组件,放置Keystone的服务器我们可以称之为认证节点
- Glance提供了镜像管理,所以叫镜像管理组件,放置Glance的服务器我们可以称之为镜像节点
- Nova让虚拟机跑起来了,官方话是提供了计算服务,所以叫计算组件,放置Nova的服务器我们可以称之为计算节点
- Neutron能让虚拟机上网,所以叫网络管理组件,放置Neutron的服务器我们可以称之为网络节点
- Horizon提供了一个基于Web的管理控制台,所以就直接叫控制节点
- Cinder创建了虚拟硬盘,而硬盘存储数据是以块作为单位存储的(在linux中),所以叫块存储组件,放置Cinder的服务器我们可以称之为块存储节点
- Swift能让文件直接存在云端,在计算机行业里,文件是对象的一种,所以叫对象存储组件,放置Swift的服务器我们可以称之为对象存储节点
- 这些组件可以单独的放置在一台服务器上,也可以把其中的几个放置在一个服务器上
- 通常做法是把Keystone Glance Horizon放置在一台服务器上称为控制节点
- 把Nova单独放置称为计算节点
- 把Neutron单独放置称为网络节点
- 把Cinder和Swift放置在一起称为存储节点