GBase 8a支持节点替换,当某些服务器出现不可恢复的故障时,比如磁盘损坏,可以在修复后替换,或者用新节点做节点替换。
在V8版本里,默认节点替换必须用老的IP,在V95版本的多VC模式,支持了集群空闲的备用节点freenode节点替换模式。本文介绍一种通过扩容的方式,采用新节点做数据计算节点替换的方案。
该场景一般发生在,故障节点不确认何时修好,而新服务又不允许更换IP的情况。
本方案只涉及计算数据节点,不涉及管理和调度节点。如需要替换的是这2种,请按照标准【节点替换】流程操作。
本文只针对不支持用新IP直接做节点替换的GBase 8a集群版本,主要是V8系列。
整体思路
设置故障节点状态并清理event
按照扩容流程安装新的计算数据节点
获取老的分布策略distribution
生成新的分布策略distribution, 将故障节点IP,替换成新扩容的节点IP
初始化
重分布
清理环境
卸载或清理故障节点残余数据
环境
4节点(10.0.2.103-106),集群使用了3个节点(10.0.1.103-105),1个备用(10.0.2.106)。
[gbase@gbase_rh7_003 gcinstall]$ gcadmin
CLUSTER STATE: ACTIVE
VIRTUAL CLUSTER MODE: NORMAL
====================================
| GBASE GCWARE CLUSTER INFORMATION |
====================================
| NodeName | IpAddress | gcware |
------------------------------------
| gcware1 | 10.0.2.103 | OPEN |
------------------------------------
====================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
====================================================
| NodeName | IpAddress | gcluster | DataState |
----------------------------------------------------
| coordinator1 | 10.0.2.103 | OPEN | 0 |
----------------------------------------------------
=========================================================================================================
| GBASE DATA CLUSTER INFORMATION |
=========================================================================================================
| NodeName | IpAddress | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
| node1 | 10.0.2.103 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
| node2 | 10.0.2.104 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
| node3 | 10.0.2.105 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
设置故障节点状态并清理event
如下假设104节点故障了。这里指无法恢复的故障,而不是断电,断网,死机等可以恢复的。 最常见的是数据分区的磁盘,出现损坏且超过RAID允许块数。
gcadmin setnodestate 10.0.2.104 unavaliable
清理104节点event
gcadmin rmdmlstorageevent 2 10.0.2.104
gcadmin rmddlstorageevent 2 10.0.2.104
gcadmin rmdmlevent 2 10.0.2.104
确认104节点没有event了。
[gbase@gbase_rh7_003 gcinstall]$ gcadmin
CLUSTER STATE: ACTIVE
VIRTUAL CLUSTER MODE: NORMAL
====================================
| GBASE GCWARE CLUSTER INFORMATION |
====================================
| NodeName | IpAddress | gcware |
------------------------------------
| gcware1 | 10.0.2.103 | OPEN |
------------------------------------
====================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
====================================================
| NodeName | IpAddress | gcluster | DataState |
----------------------------------------------------
| coordinator1 | 10.0.2.103 | OPEN | 0 |
----------------------------------------------------
======================================================