
# 退服和入服MRS角色实例
MRS集群支持将数据存储在不同Core节点，某个Core或Task节点出现问题时，可能导致整个集群状态显示为"异常"，用户可以在MRS指定角色实例退服，使退服的角色实例不再提供服务。
在排除故障后，可以将已退服的角色实例入服。
MRS集群支持退服、入服的角色实例包括：
- HDFS的DataNode角色实例
- Yarn的NodeManager角色实例
- HBase的RegionServer角色实例
- ClickHouse的ClickHouseServer角色实例（MRS 3.1.2及之后版本支持）
- IoTDB的IoTDBServer角色实例
- Kafka的Broker角色实例（MRS 2.x及之前版本、MRS 3.5.0-LTS及之后版本支持）
- Kudu的KuduTserver角色实例（MRS 3.5.0-LTS及之后版本支持）
- Doris的BE实例（MRS 3.3.0-LTS及之后版本）
 
#### 约束与限制
- 已经退服的角色实例，必须执行入服操作启动该实例，才能重新使用。
- ClickHouseServer实例退服约束条件请参考[缩容ClickHouseServer约束限制](https://support.huaweicloud.com/usermanual-mrs/mrs_01_248971.html#mrs_01_248971__section132521559517)。
- DataNode入服退服：
  - 默认情况下，当DataNode数量少于或等于HDFS的副本数时，不能执行退服操作。若HDFS副本数为3时，则系统中少于4个DataNode，将无法执行退服，Manager在执行退服操作时会等待30分钟后报错并退出执行。
  
  - 针对MRS 3.3.0及之后版本集群，用户也可以在DataNode退服前，开启快速退服功能，此时当DataNode数量满足"dfs.namenode.decommission.force.replication.min"参数设置的值时，可以执行退服，系统将同时执行退服和添加HDFS副本数的操作。**快速退服期间如果有写入数据操作，可能导致数据丢失，请谨慎** **操作。** 快速退服相关参数如下，可以在Manager界面的HDFS服务参数全部配置页面搜索查看：
    dfs.namenode.decommission.force.enabled：是否开启DataNode快速退服特性。设置为"true"表示开启。
    dfs.namenode.decommission.force.replication.min：DataNode快速退服特性场景下，Block满足退服条件的最小可用副本数量。取值范围1\~3。
    
  
  - 由于MapReduce任务执行时，会生成一些副本数为10的文件，此时若DataNode实例数少于10时，将无法进行退服操作。
  
  - 针对MRS 3.6.0及之后版本集群，NodeManager退服前，需要等待所有作业的日志归集完成。时长由"yarn.nodemanager.process-kill-wait.ms"参数控制，单位为毫秒。
  
  - 如果退服前，DataNode节点的机架数（机架数由各DataNode节点所配置的"机架"的名称数量决定）大于1；而退服部分DataNode后，剩余的DataNode节点的机架数变为1，则此次退服将会失败。所以需要在退服前评估退服操作对机架数的影响，以调整退服的DataNode节点。
  
  - 在退服多个DataNode时，如果每个DataNode存储的数据量较大，如果执行选择多个DataNode同时退服，则很有可能会因超时而退服失败。为了避免这种情况，建议每次退服仅退服1个DataNode，进行多次退服操作。
   
- 当IoTDBServer数量少于等于集群配置的Region副本数（默认值为"3"）时，不能执行退服操作。
- Broker入服退服：（MRS 3.5.0及之后版本支持）
  - 在退服Broker时，如果退服后剩余Broker的个数小于Kafka服务内置Topic副本个数（默认3）时，将无法执行退服，此场景下如果强制删除实例，将会导致服务功能不可用。
  
  - 在退服多个Broker时，如果每个Broker维护的Topic分区数据量较大，如果执行选择多个Broker同时退服，则有可能会因超时而退服失败。为了避免这种情况，建议每次仅退服一个Broker，进行多次退服操作。
  
  - 在退服Broker时，可以在KafkaUI界面查看分区迁移进度，如果观察到迁移进度过慢，可以在业务低峰期间，动态调整分区迁移流量，如果退服过程影响业务流量，可以调小分区迁移流量，设置取消正在执行的分区迁移任务。
  
  - 在退服入服Broker的过程中，建议不要删除Topic，否则可能会导致迁移任务的元数据残留。
  
  - 在新增Broker实例或者入服Broker后，最晚10分钟后（可以通过在Manager界面调整Kafka组件的"auto.reassign.check.interval.ms"参数来控制触发均衡的时间）触发分区均衡操作。
   
- BE退服：
  - Doris的BE退服后剩余正常BE节点数量大于等于任一表的副本数，否则会导致无法退服。
  
  - Doris的BE退服操作前，集群非退服BE节点磁盘空间需要满足存储所有退服BE节点的数据，并且各非退服BE节点的存储空间在退服后还能有大约10%的空间冗余，保证退服后剩余实例正常运行。
   
 
#### 前提条件
- 如果通过MRS管理控制台操作，需要**已完成IAM用户同步** （在集群详情页的"概览"页签，单击"IAM用户同步"右侧的"同步"进行IAM用户同步）**。**
- 如果通过Manager界面操作，需要已登录MRS集群Manager界面，详情请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
- 如果当前退服DataNode节点，退服前需要进行健康检查，步骤如下。
  1. 使用客户端用户登录客户端安装节点，并切换到客户端安装目录。
  
  2. 如果是安全集群，需要使用**hdfs** 用户进行权限认证。
     ```
     source bigdata_env               #配置客户端环境变量 
     kinit hdfs                       #设置kinit认证 
     Password for hdfs@HADOOP.COM:    #输入hdfs用户登录密码
     ```
     
  
  3. 执行**hdfs fsck / -list-corruptfileblocks** ，检查返回结果。
     - 如果结果为"...has 0 CORRUPT files"表示健康检查成功。
     
     - 如果结果不是"...has 0 CORRUPT files"，并返回损坏的文件名称，请执行以下操作删除损坏的文件。 **hdfs dfs -rm** *损坏的文件名称*
       ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/warning_3.0-zh-cn.png)
       删除文件为高危操作，在执行操作前请务必确认对应文件是否不再需要。
       
      
   
 
#### 退服和入服角色实例
当前支持通过管理控制台退服实例，或通过Manager退服实例。
- [通过管理控制台退服实例]
  1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
  
  2. 选择"现有集群"，选中一个待操作的运行中的集群并单击集群名称，进入集群概览信息页面。
  
  3. 在集群详情页，单击"组件管理"。
  
  4. 单击服务列表中相应服务。
  
  5. 单击"实例"页签。
  
  6. 勾选指定角色实例名称前的复选框。
  
  7. 选择"更多 \> 退服"或"入服"执行相应的操作。 
     实例退服操作未完成时在其他浏览器窗口重启集群中相应服务，可能导致MRS提示停止退服，实例的"操作状态"显示为"已启动"。实际上后台已将该实例退服，请重新执行退服操作同步状态。
     
     
   
- [通过Manager退服实例]
  1. 登录MRS集群Manager界面，进入待操作组件实例页签。 
     登录集群Manager界面请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
     - MRS 3.x及之后版本：选择"集群 \> 服务"，单击服务视图中指定的服务名称，并选择"实例"页签。
     
     - MRS 2.x及之前版本：单击"服务管理"，单击服务列表中指定的服务名称，并选择"实例"页签。
      
     
     
  
  2. 勾选指定的待退服角色实例。
  
  3. 在"更多"选择"退服"或"入服"。 
     输入当前登录的用户密码确认身份，单击"确定"。
     勾选操作影响，单击"确定"，执行相应的操作。
     实例退服操作未完成时在其他浏览器窗口重启集群中相应服务，可能导致MRS提示停止退服，实例的"操作状态"显示为"已启动"。实际上后台已将该实例退服，请重新执行退服操作同步状态。
     
     
   
