架构师-创业公司,三周自研自动化上线平台
- 集群
- 集群属性
- 名称 user.service
- IP列表 ip1,ip2,ip3
- 二进制目录 /user.service/bin/
- 配置目录 /user.service/conf/
- 日志目录 /user.service/log/
- 负责人列表 wangwu,zhaoliu
- 集群信息的作用
- 自动化日志清理
- 自动化备份
- 自动化监控
- 上下游调用(使用最多)
- 自动化发布
- 集群信息用处-上下游调用
- web-X上调用service会用到哪些信息?
- service.name:user.service
- service.ip.list:ip1,ip2,ip3
- service.port:8080
- 这些信息保存在哪里?
- web-X.config
- 上下游调用过程是什么
- web-X启动
- web-X读取服务集群的IP列表与端口
- web-X初始化user服务连接池
- web-X拿取连接,通过RPC接口调用
- web-X上调用service会用到哪些信息?
- 初始化,集群是保证高可用的基础
- 集群属性
- 集群信息维护
- 分散式
- 不同的应用场景,使用的集群信息均不同
- 集群信息都写在各自“配置文件”里
- 集群信息冗余了很多份(一致性问题)
- 存在的问题
- 集群信息修改,多个地方要改(耦合)
- 人员流动,配置在哪里就忘了
- 时间推移,配置旧改漏了
- 集中式
- 统一配置文件
- 统一配置服务
- 统一配置中心
- 分散式
集中管理集群配置,是自动化运维的基石
- 集群需要新增一个集群类型(cluster type)属性
- 【user.service】
- cluster.type:Java.service.DSF
- ip.list:ip1,ip2,ip3
- port:8080
- bin.path:/user.service/bin/
- log.path:/user.service/log/
- conf.path:/user.service/conf/
- ftp.path:ftp://192.168.1.101/user.service/user.exe
- owner.list:wangwu,zhaoliu ————————————-
- 【passport.web】
- cluster.type:Java.web.SpringMVC
- ip.list:ip1,ip2,ip3
- port:80
- bin.path:/passport.web/bin/
- log.path:/passport.web/log/
- conf.path:/passport.web/conf/
- ftp.path:ftp://192.168.1.101/passport.web/passport.jar
- owner.list:wangwu,zhaoliu
- 规范的目录结构,是自动化运维的基石(功能优先的目录)
- └── bin ├── das ├── entry ├── logic └── conf ├── das ├── entry ├── logic └── log ├── das ├── entry ├── logic
- 集群发布自动化举例
- Java.web.DWF为例
- 将包从FTP上拉取下来(需要读取集群信息)
- 读取集群IP列表(需要读取集群信息)
- 通知NGINX,将一台tomcat的流量且走(需要读取集群信息)
- 停止Tomcat
- 备份原web,更新新web(需要读取集群信息)
- 重启Tomcat
- 通知NGINX,将流量切回(需要读取集群信息)
- loop
- Java.web.DWF为例
整个过程
- 体现的核心架构设计思路
- 中心化管理:保证数据一致
- 抽象:提供共性的地方,尽量通用
- 分解:整体很复杂,分治更简单
- 可扩展:通过service_type保持个性可扩展,整体流程不用变