GaussDB(DWS)修改IP问题定位指南

举报
召走小子 发表于 2020/12/12 15:26:04 2020/12/12
【摘要】 介绍了GaussDB(DWS)修改IP的基本原理及常见问题定位方法、案例。

GaussDB(DWS)修改IP问题定位指南

1      修改IP基本原理

1.1      修改IP总体流程


  1. 首先进行修改IP前置准备,包括检查环境,导出当前IP配置信息,停止集群
  2. 硬件侧实施机器物理IP修改;
  3. 软件侧修改FIM软件中IP信息,首先修改前面导出的IP配置文件,然后执行修改IP的脚本,如果涉及修改主备管理节点管理IP,则还需要更换HA证书;
  4. 同步配置集群,即调用内核gs_om工具修改mpp数据库内核软件中的IP信息。

日志路径

1、修改FIMIP信息

/var/log/Bigdata/controller/modify.log

2、修改mpp数据库内核软件的IP

/var/log/Bigdata/nodeagent/agentlog/agent.log

/var/log/Bigdata/mpp/scriptlog/doipchange.log

/var/log/Bigdata/mpp/omm/om/gs_om*.log

1.2      gs_om修改IP流程

1.2.1        gs_om修改ip总体流程


gs_om修改IP分为正向修改和回滚两大块。

正向修改包括:修改IP前置准备、正式修改IP、修改IP后置清理。

修改IP前置准备:

前置条件检查类:检查是否有cn剔除、检查集群是否停止、检查集群是否只读、校验xml文件与集群当前配置差异;

备份类:备份集群参数文件、备份集群配置文件、备份ca证书;

状态配置等修改类:分发新xml文件、关闭cn自动剔除功能。

修改IP

启动集群前:修改ca证书,修改cndn实例配置文件、修改集群静态配置文件;

启动集群后:刷新pgxc_node系统表;

修改IP后置清理:

检查集群状态、还原cn自动剔除功能、清理临时文件。

 

回滚流程:

从正向流程报错点逐步回滚:

1.如果已更新系统表,则回滚系统表修改;

2.如果已启动集群,则停止集群;

3.如果已修改配置文件,则还原集群配置文件;

4.如果已进行修改IP前置准备,则还原前置准备阶段更改(关闭cn自动剔除,清理备份的配置文件);

5.清理备份目录。

1.3      gs_om修改IP主要步骤

1.3.1        数据修改IP临时目录及回滚步骤文件

CHANGEIP_BACKUP_DIR = $PGHOST/change_ip_bak

CHANGEIP_ROLLBACK_STEP = $PGHOST/change_ip_bak/GaussChangeIP.dat

1.3.2        如何检查是否有CN剔除

执行如下命令,检查结果中是否有Deleted,如果有,则对应cn是被剔除的

cm_ctl view -c|grep -B 1 -E '^role[ ]+: .*'

1.3.3        如何检查集群是否停止

所有节点ps查进程cm_servercm_agentgs_gtmgaussdb,如果都没有则认为已停止,否则未停止

ps ux | grep %s | grep -v grep | wc -l

1.3.4        如何检查集群是否只读

gs_guc check -N all -Z coordinator -I all -c 'default_transaction_read_only'

1.3.5        如何校验xml文件与集群当前配置差异

校验标准:仅ip存在差异,其它配置一致,则校验通过;否则校验不通过。

校验方法:

1.检查出ip和端口外的其它所有配置是否一致,预期一致;

2.检查ip和端口信息是否不一致,预期不一致。

1.3.6        备份各种配置文件

1、使用gs_backup备份参数文件;

2、备份静态配置文件;

$GAUSSHOME/bin/cluster_dynamic_config -> CHANGEIP_BACKUP_DIR

3、备份ca证书。

etcd的情况下,从etcd数据目录下将如下几个文件、目录备份到CHANGEIP_BACKUP_DIR备份目录:

etcd.keyetcd.crtmember

1.3.7        修改各种配置文件

  • 修改静态配置文件;

基于集群新配置重新生成静态配置文件。

  • 修改gtmcndn实例配置文件;

1gtm

gtm.conf

tmpGTMDict={listen_addressesportnodenamelocal_hostlocal_portactive_hostactive_port}

2cn

postgresql.conf

tmpCNDict={listen_addresseslocal_bind_addressport}

gtmInfoDict={gtm_hostgtm_portgtm_host1gtm_port1}

注释如下参数:comm_sctp_portcomm_control_port

3dn

postgresql.conf

tmpDNDict={listen_addresseslocal_bind_addressport}

gtmInfoDict={gtm_hostgtm_portgtm_host1gtm_port1}

ReplConninfo={replconninfo1replconninfo2}

注释如下参数:comm_sctp_portcomm_control_port

  • 修改pg_hba文件;

1)注释老的pg_hba配置

gs_guc set -Z coordinator -N all -I all -h "host    all           all             %s/32"

gs_guc set -Z datanode -N all -I all -h "host    all             all             %s/32"

2)添加新的pg_hba配置

将所有内部ip的认证方式用gs_guc添加到pg_hba.conf文件中。

1.3.8        如何更新pgxc_node系统表

在启动集群后还需要更新所有cn中的pgxc_node系统表信息。修改方法如下:

在每个cn节点构建如下sql语句并更新当前节点cnpgxc_node系统表

update pg_catalog.pgxc_node set (node_host, node_host1, node_port, node_port1)=('%s','%s','%s','%s') where node_name='cn_%s';--除当前cn外每个cn一条

update pg_catalog.pgxc_node set (node_host, node_host1, node_port, node_port1)=('%s','%s','%s','%s') where node_name='dn_%s_%s';--每个主dn一条

select * from pg_catalog.pgxc_pool_reload();

2      修改IP问题定位

2.1      分析步骤

修改IP几个关键步骤有修改机器物理IP,修改FIM软件IP信息,修改数据库软件IP信息。修改机器物理IP由硬件侧来保证。

修改FIMIP信息报错,可分析如下日志:

/var/log/Bigdata/controller/modify.log

修改mpp数据库内核软件的IP信息报错,可分析如下日志:

/var/log/Bigdata/nodeagent/agentlog/agent.log

2.2      常见修改IP问题

2.2.1        修改ip报错启动集群失败

发生版本

GaussDB(DWS)】【C80SPC310

问题描述

某局点测试集群修改ip失败导致集群不可用:

问题分析

分析节点system call日志,确认是由于信号量不足导致启动失败:


解决方案

调高节点信号量然后重试。

2.2.2        修改ip报错停止集群失败

发生版本

GaussDB(DWS)】【6.5.1.8

问题描述

某局点修改集群ip,未做同步配置操作,直接启动了集群,集群状态异常,继续补做同步配置,同步配置报错停止集群失败:


在节点上查询发现有cm_agent进程存在


问题分析

未做同步配置,集群软件中记录的还是旧ip信息,与当前机器实际物理ip不一致,所以直接启动集群会起不来;同理,此时如果继续补做同步配置,在前置检查中检测到cm_agent进程存在,认为集群未完全停止,会先尝试停止集群,但是由于ip信息不对导致ssh其它节点停集群也报错。

解决方案

1.分别登录每个节点,执行cm_ctl stop -n nodeid命令停止本节点实例;

2.在界面重新执行同步配置。

2.2.3        修改ip报错gs_guc:The gs_ctl build is doing now, the gs_guc process should be stopped

发生版本

GaussDB(DWS)】【8.0.0

问题描述

修改ip报错gs_guc:The gs_ctl build is doing now, the gs_guc process should be stopped


问题分析

现场之前在修改ip未成功情况下反复尝试各种操作,导致日志分叉触发build,在有dn build的情况下gs_guc不允许修改参数,所以报错。

解决方案

现场按如下方式规避并继续完成ip修改:

1)将master3实例目录下build_completed.startgs_build.pid两个文件mv改名;

2)修改脚本让流程在启动集群前停住;

脚本名:/opt/huawei/Bigdata/FusionInsight_MPPDB_8.0.0/install/FusionInsight-MPPDB-8.0.0/package/MPPDB/script/impl/om/OmImpl.py

函数名:ChangeIPAndPort

增加如下while循环等待代码:


并创建while循环中标志文件

touch /home/omm/modify_ip_flag

3)修改脚本调长集群启动超时时间,确保master3在启动阶段能完成build

脚本名:/opt/huawei/Bigdata/FusionInsight_MPPDB_8.0.0/install/FusionInsight-MPPDB-8.0.0/package/MPPDB/script/impl/om/OLAP/OmImplOLAP.py

函数名:startCluster

注释原有启动命令,新增一行,将启动时间调整为86400


4)界面重新执行同步配置即可。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。