文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

这一步都没做,还想搞自动化运维?

2024-12-03 15:33

关注

今天,和大家聊聊技术体系平台化的基石,集群信息集中管理。

[[357741]]

什么是集群?

互联网典型分层架构如下:

 

为了保证高可用,每一个站点、服务、数据库、缓存都会冗余多个实例,组成一个分布式的系统,集群则是一个分布式的物理形态。

更通俗的说,集群就是一堆机器,上面部署了提供相似功能的站点,服务,数据库,或者缓存。

如上图:

 

与“集群”相对应的是“单机”。

画外音:缓存如果没有高可用要求,可以是单机架构,而不用非得是集群。

什么是集群信息?

一个集群,会包含若干信息(额,这算什么解释),例如:集群名称,节点IP列表,二进制目录,配置目录,日志目录,负责人列表等,这些就是集群信息。

画外音:集群节点IP列表,往往不是内外IP列表,是内网域名列表。

什么时候会用到集群信息呢?

很多场景,特别是线上操作,都会使用到各种集群信息,例如:自动化上线,监控,日志清理,二进制与配置的备份,下游的调用等,都会用到集群信息。

这些场景,分别都是如何读取集群信息的?

一般来说,早期会把集群信息写在配置文件里。

例如,自动化上线,有一个配置文件,deploy.user.service.config,其内容是:

  1. name : user.service 
  2. ip.list : ip1, ip2, ip3 
  3. bin.path : /user.service/bin/ 
  4. ftp.path : ftp://192.168.0.1/USER_2_0_1_3/user.exe 

自动化上线的过程,则是:

画外音:还没有实现自动化脚本部署?赶紧照着这个流程,做自动化改造吧。

又例如,web-X调用下游的user服务,又有一个配置文件,web-X.config,其内容配置了:

  1. service.name : user.service 
  2. service.ip.list : ip1, ip2, ip3 
  3. service.port : 8080 

web-X调用user服务的过程,则是:

日志清理,服务监控,二进制备份的过程,也都与上述类似。

上述方案存在什么问题?

上述业务场景,对于集群信息的使用,有两个最大的特点:

一句话总结:集群信息管理分散化。

这里最大的问题,是耦合,当集群的信息发生变化的时候,有非常多的配置需要修改:

这些配置里,user服务集群的信息都需要修改:

画外音:ca,谁痛谁知道。

如何解决上述耦合的问题呢?

一句话回答:集群信息管理集中化。

如何集中化管理集群信息呢?

不同发展阶段的公司,实现的方式不一样。

早期方案:全局配置。通

过全局配置文件,实现集群信息集中管理,举例global.config如下:

  1. [user.service] 
  2. ip.list : ip1, ip2, ip3 
  3. port : 8080 
  4. bin.path : /user.service/bin/ 
  5. log.path : /user.service/log/ 
  6. conf.path : /user.service/conf/ 
  7. owner.list : shenjian, ku 
  8.  
  9. [passport.web] 
  10. ip.list : ip11, ip22, ip33 
  11. port : 80 
  12. bin.path : /passport.web/bin/ 
  13. log.path : /passport.web/log/ 
  14. conf.path : /passport.web/conf/ 
  15. owner.list : shenjian, shuai 

集中维护集群信息之后:

画外音:信息太多的话,global.config也要垂直拆分。

中期方案:服务化。

随着公司业务的发展,随着技术团队的扩充,随着技术体系的完善,通过集群信息管理服务,来维护集群信息的诉求原来越强烈。

画外音:慢慢的,配置太多了,通过global.config来修改配置太容易出错了。

如上图,建立集群信息管理服务:

 

服务的核心接口是:

  1. Info InfoService::getInfo(String ClusterName); 
  2. Bool InfoService::setInfo(String ClusterName, String key, String value); 

然后,统一通过服务来获取与修改集群信息:

长期方案:配置中心平台化。

集群信息服务可以解决大部分的耦合问题,但仍然有一个不足:集群信息变更时,无法反向实时通知关注方,集群信息发生了改变。更长远的,要引入配置中心来解决。

配置中心的细节,网上的分析很多,之前也撰文写过,细节就不再本文展开。

 

总结

集群信息管理,是架构设计中非常容易遗漏的一环,但又是非常基础,非常重要的基础设施,一定要在早期规划好:

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

 

 

来源:51CTO专栏内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯