《SRE Google运维解密》读书笔记(02)

一、Google生产环境

1、物理服务器

  • 物理服务器(Machine),软件服务器(Server),两者之间没有专属关系;
  • 10台物理服务器组成机柜(Rack),数台机柜组成一个机柜排(Row),一排或多排机柜组成一个集群(Cluster),多个集群组成一个数据中心(Datacenter),多个相邻的数据中心组成一个园区(Campus);
  • 几百台自己制造的交换机以Clos连接方式组合成有几万个虚拟端口的交换机(Jupiter)。最大的一个数据中心内,Jupiter提供1.3Pb/s的交叉带宽;
  • 数据中心由全球覆盖的B4骨干网连接。B4基于SDN技术,支持动态带宽管理;

2、物理服务器管理软件——Borg

  • Borg是一个分布式集群操作系统,与Apache Mesos类似,是Kubernetes的前身。负责在集群层面管理任务的编排工作;
  • Borg运行任务(Job),为每一个实例安排一台物理服务器。然后监控实例,当有异常发生时,可以终止重启,或者迁移到另一台物理服务器上重启;
  • Borg名称解析系统(BNS),负责将任务实例名称和编号转换成具体的IP地址和端口;
  • Borg负责将具体资源分配给每个任务。每个任务需要在配置文件中声明它需要的具体资源(如,CPU、内存等)。Borg会根据配置合理分配到不同的物理服务器,并会将某个任务的实例分散到两个以上的机柜,避免单点故障;
  • Borg监控到一个任务实例资源使用超出了它的分配范围,就会杀掉这个实例并重启。

3、存储

  • 存储跟Hadoop的HDFS类似,Google三大分布式相关的论文之一Google File System就是说这个的。
  • 最底层是D服务,运行在所有物理服务器上。上一层是Colossus,是一个覆盖了整个集群的文件系统,是GFS的改进版本。
  • 上层几种数据库:Bigtable、Spanner、Blobstore等等。

4、网络

  • 带宽控制器(BwE)负责管理所有可用带宽。
  • 全球负载均衡系统(GSLB)负责三个层面的负载均衡:1)根据地理位置信息进行负责均衡DNS请求;2)用户服务层面进行负载均衡;3)在远程调用(RPC)层面进行负载均衡。

5、其它系统软件

  • Chubby分布式锁服务,可以处理异地、跨机房级别的锁请求,使用Paxos协议提供分布式一致性;
  • Borgmon监控程序,定期从监控对象抓取监控指标(Metric),触发告警或存储;
  • Stubby远程调用通信,开源实现是gRPC;
  • Protocol Buffer是Google RPC的传输格式,与Apache Thrift类似。

思考

高度一致的自研硬件、网络设备、系统软件、数据库、负载均衡器、DNS等构成了Google的运维对象。对于所有的运维人员来说,这是一个天下大同的世界。没有不同厂商、不同协议、没有架构差异、没有到处洋溢异域风情的运行环境,简化掉了相当程度的传统运维工作,这是理想的SRE模式运行的土壤。那么相比运营所处的运维环境,从网络设备到网管、从基础软件到业务系统,是一个完全的多厂商、多技术的复杂环境。随便一个有10年历史的运营商,网管软件几十上百种,网络设备型号几百上千种,板卡备件成千上万种。要推行SRE,首先就要解决运营商多厂商、多技术的问题,这样才能避免SRE成为网管定制团队,才能真正聚集自动化运维和业务敏捷。

你可能感兴趣的:(《SRE Google运维解密》读书笔记(02))