GBase 8a集群862Build43 支持IPV6版本,本文介绍从IPV4更换到IPV6的方法。 与ipv4更换ipv4不同,更换到ipv6,不需要重新计算nodeid。
目录导航
环境
2节点的ipv4集群,版本是8.6.2.43R33, 目标是将ipv4替换成IPv6,地址规则是
10.0.2.106 -> 2001::106
10.0.2.107 -> 2001::107
[gbase@862b43 gcinstall]$ gcadmin
CLUSTER STATE: ACTIVE
CLUSTER MODE: NORMAL
=================================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=================================================================
| NodeName | IpAddress |gcware |gcluster |DataState |
-----------------------------------------------------------------
| coordinator1 | 10.0.2.106 | OPEN | OPEN | 0 |
-----------------------------------------------------------------
| coordinator2 | 10.0.2.107 | OPEN | OPEN | 0 |
-----------------------------------------------------------------
=============================================================
| GBASE DATA CLUSTER INFORMATION |
=============================================================
|NodeName | IpAddress |gnode |syncserver |DataState |
-------------------------------------------------------------
| node1 | 10.0.2.106 | OPEN | OPEN | 0 |
-------------------------------------------------------------
| node2 | 10.0.2.107 | OPEN | OPEN | 0 |
-------------------------------------------------------------
准备工作
先通过如下操作,将redolog刷新大小为334或者338字节,主要是避免REDOLOG里有ip地址,且该文件内有二进制数据,不方便修改。参考如下的文档。
另外,如果集群有event, 也建议先处理掉,避免FEVENT里有相关内容,同样内部有二进制数据,不方便修改。
同样的,如果有些节点故障不在线可用,先恢复。
先停止集群服务。
在每个节点操作系统用户root下,执行
更改网卡IP
建议先增加ipv6地址,等后面都正常了,再考虑【是否去掉】ipv4地址。
修改集群管理节点corosync服务配置
此处包含多个部分,下面对比IPV4的变动,分段描述。
配置文件 /etc/corosync/corosync.conf
提醒:为避免意外,建议先备份。
totem部分
这部分改动较多,且由于每个节点都不一样,请千万不要从其他节点完全复制了。
增加nodeid参数
如下红色的是新增部分,用于标识节点的ID号,注意每个管理节点的nodeid都是不同的。
[root@862b43 corosync]# cat /etc/corosync/corosync.conf
totem {
version: 2
secauth: off
nodeid:1778515978
interface {
member {
此处的nodeid值,建议【保留】ipv4的nodeid样式,对应关系可以参考 /var/llb/gcware/DATASERVER
比如将10.0.2.106改成了2001::106,那么对应的nodeid可以继续使用1778515978。
[root@862b43 gcware_ipv4]# cat /var/lib/gcware_ipv4/DATASERVER
{
"version":1,
"epoch":1103,
"list_entries":2,
"nodes":[
{
"nodeid":1778515978,
"nodename":"node1",
"ipaddr":"::ffff:10.0.2.106"
},
{
"nodeid":1795293194,
"nodename":"node2",
"ipaddr":"::ffff:10.0.2.107"
}
]
}
参考图
interface部分
除了加粗的IP地址从ipv4改成了ipv6,如下红色部分是对比ipv4增加的,其中的参数值,建议保留ipv4自动计算的nodeid值。 多个节点一定要各自正确对应上。
[root@862b43 corosync]# cat /etc/corosync/corosync.conf
totem {
version: 2
secauth: off
nodeid:1778515978
interface {
member {
nodeid:1778515978
memberaddr: 2001::106
}
member {
nodeid:1795293194
memberaddr: 2001::107
}
ringnumber: 0
bindnetaddr: 2001::106
gcware部分
同样在member里,参考前面的,增加nodeid和更换ip地址
gcware {
persistent_interval: 5
check_interval: 30
whole_check_interval_num: 20
cfg_connect_timeout: 5000
gcluster_port: 5258
gnode_port: 5050
syncserver_port: 5288
node_ssh_port: 22
singlecastport: 5678
check_coordinator_thread_num: 1
check_dataserver_thread_num: 10
check_tcp_only: 1
coordinator {
member {
nodeid:1778515978
memberaddr: 2001::106
}
member {
nodeid:1795293194
memberaddr: 2001::107
}
}
}
完整的结果截图
节点1
节点2
更改数据节点IP
在每个【数据】节点(包括管理和数据混用的数据节点),用操作系统root用户,切换到/var/lib/gcware目录,修改DATASERVER和DATASERVER.BAK(如果有的话)。将其中的所有老IP更改成新IP。
提醒:为避免意外,建议先备份。
如下只给出DATASERVER的修改例子
[root@862b43 gcware]# cat DATASERVER
{
"version":1,
"epoch":1103,
"list_entries":2,
"nodes":[
{
"nodeid":1778515978,
"nodename":"node1",
"ipaddr":"2001::106"
},
{
"nodeid":1795293194,
"nodename":"node2",
"ipaddr":"2001::107"
}
]
}
启动集群
[root@862b43 gcware_ipv4]#service gcware start
Starting GCWARE (gcwexec): [ OK ]
Starting GBASED : [ OK ]
Starting GCSYNC : [ OK ]
Starting GCLUSTERD : [ OK ]
Starting GCRECOVER : [ OK ]
Starting GCMonit success!
[root@862b43 gcware_ipv4]# gcadmin
CLUSTER STATE: ACTIVE
CLUSTER MODE: NORMAL
=========================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=========================================================
| NodeName | IpAddress |gcware |gcluster |DataState |
---------------------------------------------------------
| coordinator1 | 2001::106 | OPEN | OPEN | 0 |
---------------------------------------------------------
| coordinator2 | 2001::107 | OPEN | OPEN | 0 |
---------------------------------------------------------
=====================================================
| GBASE DATA CLUSTER INFORMATION |
=====================================================
|NodeName | IpAddress |gnode |syncserver |DataState |
-----------------------------------------------------
| node1 | 2001::106 | OPEN | OPEN | 0 |
-----------------------------------------------------
| node2 | 2001::107 | OPEN | OPEN | 0 |
-----------------------------------------------------
[root@862b43 gcware_ipv4]#
提醒
对于所有配置文件里的nodeid, 如果已经是ipv6的IP,包括V86或者V95,则更换为IPV6 IP时,nodeid不需要更新。 如果更换目标时IPV4,则需要根据新的IPV4地址计算nodeid, 然后修改所有配置文件里和nodeid有关部分。注意,不限于本文涉及到的几个配置文件。