使用OSGI+MQ的方式解决集中化运维问题

书籍出版啦~~~~附上链接item.jd.com/11734638.html

企业中集中运维面临的问题

随着云计算的发展,企业里面有个百来台主机需要运维其实是很正常的,就更别说某些大型的企业里面,随便一个省的ITC就几千台机器了。好吧,那么问题来了,几千台机器,要集中化做一次巡检,集中化做一次漏扫,任何一件事情都是非常麻烦的,一台一台登上去操作真的不太现实。这个时候有小伙伴可能就会跳出来说,你太out啦,这年头集中化运维大把的工具,什么Puppet、Ansible、SaltStack啦,随便一个都是好手啊!

没错,随着开源软件的发展,已经越来越多这样的集中化运维软件可以给我们选择了,假如我们面对的是互联网企业,那么上面这几种工具就足够了。为什么?互联网企业的设备大多有这样的两个特点:

  • 设备类型较为统一,没有奇奇怪怪的操作系统
  • 设备是能够联网的,就算不能联网,自己做个源也是可以的,反正是自家的设备
  • 但是在传统企业中,现状就和互联网企业的状况相差甚远了

设备类型繁杂,什么操作系统都有。我从开始搞集中化运维到现在什么HP-UX、AIX、windows2000、Solaris等等,一堆杂七杂八的系统,简直就被坑死了。

机器是客户的,不能联网,不能自己做源。这点也是很要命的一点,这就意味着会出现装软件的时候超级烦人的依赖问题、编译问题。

设备的位置不集中。需要运维的设备有些在这个地市,有些在那个地市,程序上了都不敢出问题。而且因为不能联网,升级出问题了都不知道怎么个办好

现有集中化运维软件的不足

肯定会有小伙伴说,我们用Puppet、SaltStack、Ansible随便都能集中化运维几千台设备,而且成本低,好吧,我们来一个一个看这运维三剑客在企业自动化运维中是怎么被干掉的。。。。

Puppet

Puppet是我们最早选择的一款产品,毕竟这货知名度还是挺高的,在公司内部实验的时候效果挺好的,但是一去到客户现场就傻眼了,根~本~装~不~上~去~啊!!!这Ruby的环境要怎么编译啊,装这个少那个啊有木有!!!!Σ(っ °Д °;)っ 于是,我们又挑了下一个,SaltStack

SaltStack

挑来挑去,这回挑到了SaltStack,本想着Python的应该会好装点,结果。。。根~本~装~不~上~去~啊!!!一问同事,他们在有源的情况下还是有两台SUSE就是怎么都跑不起来啊!!!又踩坑啦有木有!!! Σ(  ̄д ̄;) !!!

Ansible

好吧,既然客户端这么难装,搞个不用装客户端,走SSH的总行了吧。于是挑了个Ansible,本以为事情告一段落,结果发现。。。。我们的运维对象里面还有Windows。。。好大的一波Windows啊,Windows下配置SSH那个麻烦啊,总不能跑到地市让别人一个一个的配置吧。。。。 Σ( ° △ °|||)︴

从头写一个容器?

踩过了那么多的坑之后,我的第一个想法是,我需要一个跨平台的语言来解决操作系统多样性的问题,虽然不想用Java,但是翻遍了所有语言,就只有Java能用。第二个想法是,我需要一个容器,这个容器就只是负责管控其他Java包的运行,做到热部署的效果,来解决客户端更新的问题,于是,就出现了这样一张图。。。。

Paste_Image.png

好吧,就按照这个思路设计去,写完之后心情大好,这回总把集中化运维的问题解决了吧,通讯的问题简单啦,大把的开源库,什么Mina啊,Netty啊,不行的话,自己写Socket也行的嘛。结果当天我刚好开着虚拟机,这货不知道怎么回事在热部署的时候把我的虚拟机给干掉了。。(/= _ =)/~┴┴ 这个时候有个大忽悠突然和我说”OSGI有没试过,它应该能解决你的问题“

OSGI+MQ

后来试了下比较流行OSGI容器,发现效果和我想要的不一样,然后又陆续多很多容器都做了实验,终于找到我想要的那个容器~~那个艰辛。。。容器的问题解决了,这回抱着能少写代码就少写代码的心,找了一款合适的MQ中间件,解决了二级代理和通讯的问题,于是整体架构就长这样啦~~~

Paste_Image.png

假如了解SaltStack架构的小伙伴肯定会说,切,不就是抄袭了SaltStack的架构嘛。假如是做过监控软件的小伙伴肯定也会说,切,我们监控软件都走的MQ的啦。架构这种东西嘛,大同小异,不同的架构为了解决的问题是不一样的,而OSGI+MQ的这个架构主要是为了解决上面的的问题而设计的

  • 解决集中化运维过程中操作系统的多样性问题
  • 解决集中化运维过程中客户端集中更新的问题
  • 降低开发的难度(Java程序员一抓一大把,Python、Ruby的可不是那么好找的哟)
  • 降低部署难度(终于不用编译啦!!你能理解碰到连GCC都没有的机器那种痛苦嘛(╯°Д°)╯︵ ┻━┻ )

好吧,这回客户端都在别人机器上了,想做什么集中化运维的动作都可以啦~~例如干掉根目录啦。。。跑个死循环之类的了

架构的缺点

上面吹了一大通,一直都没提这个架构的缺点

  • 占用内存较多:光跑起容器就要120M左右的内存,把插件包什么的算上去会去到160~180M,对内存的占有是挺大的。
  • 需要自己开发插件:不像其他开源软件一样,拿来就已经有很多现成的插件在上面了,这个架构上运维插件可是要自己动手的哟。(唉,不过说实在的,这年头客户的需求各式各样,其实那些现成的插件去到实际环境很多都用不了,还得自己开发)
  • 需要处理更多的细节:整体设计上,消息的交互、线程的调度等等都是要自己处理的,一旦处理不好,好一点的话要不功能失效,惨一点的话直接就把别人机器搞死了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容