单机房故障自愈-黎明之战


作者简介

运小辰    百度高级研发工程师


负责百度运维智能故障自愈方案相关设计研发工作,致力于降低单机房故障自愈风险、提高故障自愈效率,为业务可用性保驾护航。



干货概览

故障自愈机器人,保你安心好睡眠一文中,我们介绍了单机房故障自愈的必要性和解决思路。本文主要介绍单机房故障自前需要进行的准备工作,具体包括:

  • 单机房容灾能力建设中遇到的常见问题及解决方法

  • 基于网络故障及业务故障场景的全面故障发现能力

  • 百度统一前端(BFE)和百度名字服务(BNS)的流量调度能力

单机房容灾能力--常见问题

单机房故障场景下,流量调度是最简单且最有效的止损手段,但我们发现业务线经常会遇到如下问题导致无法通过流量调度进行止损:

1. 服务存在单点

  • 描述:系统内只有一个实例或者多个实例全部部署在同一物理机房的程序模块即为单点。

  • 问题:单点服务所在机房或单点服务自身发生故障时,无法通过流量调度、主备切换等手段进行快速止损。

  • 要求:浏览请求的处理,不能存在单点;提交请求的处理,若无法消除单点(如有序提交场景下的ID分配),则需要有完整的备份方案(热备或者冷备)保障单机房故障时,可快速切换至其他机房。

2. 服务跨机房混联

  • 描述:上下游服务之间存在常态的跨机房混联。

  • 问题:逻辑服务单元未隔离在独立的物理范围内,单机房故障会给产品线服务带来全局性影响。同时流量调度也无法使得服务恢复正常。

  • 要求:将服务拆分为若干不同的逻辑单元,每个逻辑单元处于不同的物理机房,均能提供产品线完整服务。

3. 服务不满足N+1冗余

  • 描述任意单个机房故障时,其余机房剩余容量不足以承担该机房切出的流量。

  • 问题流量调度导致其余机房服务过载,造成多个机房服务故障,造成更大范围的影响。

  • 要求容量建设需要对于每个逻辑服务单元都要有明确的容量数据,并具备N+1冗余,即任意机房故障情况下,其余机房均可承载这部分流量,同时需要保证服务变化时及时更新数据和扩容服务,避免容量数据退化。同时对于流量的变化趋势,也需要有提前的预估,为重大事件流量高峰预留足够容量(如节日、运营、假期)。

4. 服务关联强耦合

  • 描述:上下游服务使用固定IP或固定机器名进行直接连接。

  • 问题:单机房故障发生时,关联的上下游之间无法进行快速的流量调度止损。

  • :线上服务关联不允许使用固定IP或机器名链接,需使用具备流量调度能力的上下游连接方式以实现上下游依赖解耦,下游服务发生单机房故障,可以快速调整路由比例实现止损。

单机房容灾能力--盲测验收

完成以上四点单机房容灾能力建设后,业务线就具备了通过流量调度进行止损单机房故障的基本条件。那么如何验证业务线是否具备该能力、能力是否出现退化,我们采取盲测验收的方式,模拟或真实制造故障,验证不同业务线故障情况及止损效率,并给出相应的优化意见。

根据业务线进行容灾能力建设的不同阶段,我们从对产品实际可用性影响程度成本效果等方面权衡,将盲测分为三种类型:

  • 无损盲测:仅从监控数据层面假造故障,同时被测业务可根据监控数据决策流量调度目标,对于业务服务实际无影响,主要验证故障处置流程是否符合预期、入口级流量切换预案是否完整。

  • 提前通知有损盲测:真实植入实际故障,从网络、连接关系等基础设施层面植入真实错误,对业务服务有损,用于实战验证产品线各个组件的逻辑单元隔离性、故障应急处置能力。同时提前告知业务盲测时间和可能的影响,业务线运维人员可以提前准备相应的止损操作,减少单机房止损能力建设不完善导致的损失。

  • 无通知有损盲测:在各业务线单机房容灾能力建设完成后,进行不提前通知的有损盲测,对业务来说与发生真实故障场景完全相同。真实验证业务线在单机房故障情况下的止损恢复能力。

单机房故障止损流程

一个完整的故障处理生命周期包括感知止损、定位分析四个阶段。

单机房故障止损覆盖从感知止损阶段,其中感知阶段依赖监控系统的故障发现能力,止损阶段依赖流量调度系统的调度能力。我们来具体看下百度的监控系统与流量调度系统是如何在单机房故障止损场景中起作用。

故障发现:百度监控平台

百度监控平台,针对单机房止损过程中的可用性场景,覆盖故障发现止损决策问题定位各阶段的监控。同时针对单机房止损依赖的容量管理场景,提供资源类监控采集,为容量规划、扩缩容提供数据支持。实现从运营商外网链路、百度内部网络设备/链路、服务/实例、机器/容器的全方位数据采集与监控。满足网络类单机房故障、业务类单机房故障的监控覆盖需求

同时提供一系列数据分析方法。如智能异常检测趋势预测多维度分析关联分析服务和链路拓扑分析,实现故障的精准发现和定位。


故障止损:百度流量调度平台

针对百度的网络架构和业务架构,我们将流量调度拆分为三层:接入层服务层依赖层

  • 接入层:从外网用户发起请求经过运营商网络到百度统一前端(BFE)的过程,使用DNS实现外网流量调度

  • 服务层:从BFE流量转发至内网服务的过程,使用BFE提供的GSLB动态负载均衡进行流量调度。

  • 依赖层:内网上下游业务之间的流量调度过程,使用百度名字服务(BNS)进行流量调度。

对于单机房止损场景来说,DNS流量调度的生效时间较服务层、依赖层的流量调度生效时间要慢很多,所以我们期望在发生某个业务的局部单机房故障时,优先进行服务层、依赖层调度。提升止损时效性。

单机房容灾能智能监控平台流量调度平台的基础上,启动单机房故障自愈工作的时机已经成熟。我们将会在下篇文章中详细介绍单机房故障自愈解决方案,敬请期待!


单机房故障机器人止损方法
  • 单机房故障止损的能力标准

  • 单机房故障自愈的常见问题

  • 单机房故障自愈的解决方案

相关文章

故障自愈机器人,保你安心好睡眠

↓↓↓ 点击"阅读原文" 【查看更多信息】  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Hadoop安装教程-机-伪分布式配置-Hadoop2.6.0-Ubuntu14.04详细教程教学: 1. 安装Java Hadoop是基于Java开发的,因此需要先安装Java。可以在终端中输入以下命令进行安装: ```bash sudo apt-get update sudo apt-get install default-jdk ``` 2. 下载Hadoop 可以在Hadoop官网下载Hadoop压缩包,也可以在终端中输入以下命令进行下载: ```bash wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz ``` 3. 解压Hadoop 在终端中输入以下命令解压Hadoop压缩包: ```bash tar -xzvf hadoop-2.6.0.tar.gz ``` 4. 配置Hadoop环境变量 打开终端中的/etc/environment文件,并在其中添加以下内容: ```bash export HADOOP_HOME=/path/to/hadoop export PATH=$PATH:$HADOOP_HOME/bin ``` 其中,/path/to/hadoop为Hadoop所在的路径。保存文件后,输入以下命令使配置生效: ```bash source /etc/environment ``` 5. 配置Hadoop 进入Hadoop目录,编辑etc/hadoop/hadoop-env.sh文件。找到以下行: ```bash export JAVA_HOME=${JAVA_HOME} ``` 将其修改为: ```bash export JAVA_HOME=/usr/lib/jvm/default-java ``` 保存文件并关闭。 6. 配置HDFS 进入etc/hadoop目录,编辑hdfs-site.xml文件。添加以下内容: ```xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/path/to/hadoop/data/dfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/path/to/hadoop/data/dfs/datanode</value> </property> </configuration> ``` 其中,/path/to/hadoop/data为Hadoop数据存储路径。 7. 配置YARN 进入etc/hadoop目录,编辑yarn-site.xml文件。添加以下内容: ```xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration> ``` 8. 配置MapReduce 进入etc/hadoop目录,编辑mapred-site.xml文件。添加以下内容: ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ``` 9. 格式化HDFS 在终端中输入以下命令格式化HDFS: ```bash hdfs namenode -format ``` 10. 启动Hadoop 在终端中输入以下命令启动Hadoop: ```bash start-all.sh ``` 11. 验证Hadoop 在浏览器中输入http://localhost:50070,即可访问Hadoop Web UI。在该页面中可以查看HDFS的状态、数据块、节点等信息。 以上就是Hadoop安装教程-机-伪分布式配置-Hadoop2.6.0-Ubuntu14.04详细教程教学。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值