暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓普通集群升级并扩容成同城双中心

原创 董小姐 1天前
25

约束条件

集群升级前,请检查以下的约束条件,避免集群升级失败:

  • 升级前必须保证现有集群已经完全关闭
  • 升级前集群状态正常、节点流复制关系正常
  • 升级操作必须在集群主节点进行
  • 集群中所有节点间ssh免密,包括root用户、集群所属用户(一般为kingbase)
  • 所有待升级的集群bin路径一致
  • 所有待升级的节点没有运行sys_securecmdd和corosync服务
  • license.dat文件位置与kingbase目录同级

安装前准备

现运行普通集群信息收集

参数说明

参数值

主节点IP

192.168.40.107

备节点IP

192.168.40.160

备节点IP

192.168.40.161

软件包路径(soft_dir)

/home/kingbase/software

集群安装路径(install_dir)

/home/kingbase/cluster/install

二进制文件路径

/home/kingbase/cluster/install/kingbase/bin

数据目录

/home/kingbase/cluster/install/kingbase/data

端口

25432

数据库版本

V008R030C011PSI008

数据库超级用户

system(提前向客户获取密码)

操作系统超级用户

root

操作系统集群用户

kingbase

VIP

192.168.40.180

同城双中心架构规划

软件包路径(soft_dir)

/home/kingbase/software

同城双中心安装目录

/home/kingbase/cluster

读写分离安装目录

/home/kingbase/cluster/install

scmd安装目录

/home/kingbase/cluster/install/kingbase/bin

数据目录

/home/kingbase/cluster/install/kingbase/data

系统超级用户

root

集群安装用户

kingbase

生产中心节点

主节点:192.168.40.107 备节点:192.168.40.160、192.168.40.161

VIP: 192.168.40.180

灾备中心节点

(新下发服务器)

伪主节点:172.168.15.110、备节点:172.168.15.200、172.168.15.201

VIP: 172.168.15.180(按客户需求,若不要求可以不配置)

同城双中心软件包版本

V008R030C011PSI011

注意:每个中心服务器数量必须>=3,如果中心内只存在2个节点,挂掉一个,另一个节点也会挂掉,如果客户不能提供足够数量的服务器,将风险提前和客户说明。

当前普通集群升级前操作

查看集群状态

检查集群状态,保证升级前集群状态正常;任意一运行正常的节点操作;

repmgr cluster show all

重点检查:

Role、Status、Upstream、Sync、LSN_Lag。Status 为 running 表示正常;failed、? unreachable、running as primary/standby 等均需先处理。

查看集群组件状态

repmgr service status

重点检查:repmgrd 是否 running,Paused 是否 no。若 Paused 为 yes,可按实际情况使用 repmgr service unpause 恢复。

KFS链路是否存在

如果KES是KFS链路的源端,存在逻辑复制槽的情况下源端数据库停不掉,需要先停止KFS链路再启停节点。验证后发现不停止KFS服务停库也不影响。

select * from sys_replication_slots;

同步是否有延迟

确认备节点复制延迟为0,延迟应小于1MB。

如果有延迟先解决延迟

select usesysid, usename, sys_wal_lsn_diff(sys_current_wal_flush_lsn(), replay_lsn) as lsn_lag from sys_stat_replication;

所有节点执行检查点

可以提前写到一个脚本里,提高操作效率。

ksql "host=192.168.40.107 user=system dbname=test port=25432 password=kingbase" -c "checkpoint;";
ksql "host=192.168.40.160 user=system dbname=test port=25432 password=kingbase" -c "checkpoint;";
ksql "host=192.168.40.161 user=system dbname=test port=25432 password=kingbase" -c "checkpoint;";

停止集群

任意一运行正常的节点操作;

sys_monitor.sh stop

检查是否配置ssh互信

如果没配置,需要手动配置

检查是否启用sys_securecmdd服务

若启用sys_securecmdd服务,需关闭sys_securecmdd(所有节点切换到root用户下操作)

--切换root用
su - root

--定位sys_securecmdd服务运行目录
ps -ef | grep securecmd

--停止并卸载sys_securecmdd服务
/home/kingbase/cluster/install/kingbase/bin/sys_HAscmdd.sh stop
/home/kingbase/cluster/install/kingbase/bin/sys_HAscmdd.sh uninstall

检查授权文件位置

license.dat文件位置与kingbase目录同级;若不同级,提前拷贝至kingbase目录的同级目录下;

必须操作,不然升级升级为生产中心过程中会报错中止升级操作。

上传升级集群软件包和升级脚本至主节点

双中心版本是独立的,和普通集群版本不通用,可联系商务获取,本文使用的双中心版本是:kingbase-server-V008R030C011PSI011-linux-x86_64.tar,升级脚本:cluster_upgrade.sh

cd /home/kingbase/software
chown kingbase:kingbase cluster_upgrade.sh 
chown kingbase:kingbase kingbase-server-V008R030C011PSI011-linux-x86_64.tar
chmod 755 cluster_upgrade.sh

灾备中心节点环境配置

配置防火墙

需要开通25432、10024、8890、5407、5403、22,如果修改对应端口,则需要根据实际情况进行调整。

systemctl stop firewalld  
systemctl disable firewalld 
systemctl status firewalld 

禁用selinux

cp /etc/selinux/config /etc/selinux/config.bak`date +%Y%m%d`
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0  
getenforce
cat /etc/selinux/config |grep SELINUX

关闭RemoveIPC参数

要求关闭,操作系统没有 /etc/systemd/logind.conf 文件则不需修改。如果RemoveIPC参数被注释,则取消注释并设置成no(防止默认为yes)。

创建安装用户

在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录。

因此,建议在正式安装前,新建kingbase用户作为KingbaseES专用的系统用户,运行如下命令创建kingbase用户:

--检查kingbase用户是否存在,存在则执行下条命令删除,该操作要慎重
cat /etc/passwd | grep kingbase
userdel -rf kingbase

--创建同名用户组和用户kingbase
groupadd -g 1010 kingbase
useradd -m -d /home/kingbase -g kingbase -u 1010 kingbase

--设置用户kingbase密码
echo 'kingbase' | passwd --stdin kingbase                      

注意

该命令会同时创建同名用户组kingbase以及用户根目录/home/kingbase。

目录规划

su - kingbase
mkdir -p /home/kingbase/cluster/install/  # 创建软件包安装路径
mkdir -p /home/kingbase/software  # 创建软件包上传路径

不要提前创建kingbase子目录,不然会提示目录已存在的报错

环境变量

su - kingbase
cp /home/kingbase/.bashrc /home/kingbase/.bashrc_bak_`date +%F`
cat << EOF >> /home/kingbase/.bashrc
export PATH=$PATH:/home/kingbase/cluster/install/kingbase/bin
export KINGBASE_HOME=/home/kingbase/cluster/install/kingbase
export LD_LIBRARY_PATH=$KINGBASE_HOME/lib:$PATH
export KINGBASE_DATA=/home/kingbase/cluster/install/data
export KINGBASE_USER=system
export KINGBASE_PORT=25432
export KINGBASE_DATABASE=test
EOF

source /home/kingbase/.bashrc

上传升级集群软件包和升级脚本至主节点

双中心版本是独立的,和普通集群版本不通用,可联系商务获取,本文使用的双中心版本是:kingbase-server-V008R030C011PSI011-linux-x86_64.tar,升级脚本:cluster_upgrade.sh

cd /home/kingbase/software
chown kingbase:kingbase cluster_upgrade.sh 
chown kingbase:kingbase kingbase-server-V008R030C011PSI011-linux-x86_64.tar
chmod 755 cluster_upgrade.sh

检查网络

确保生产中心、灾备中心所有节点之间网络互通,网关地址互通。

检查是否配置ssh互信

ssh root@ip 
ssh kingbase@ip 

无需输入密码即已配置ssh互信。如果未配置,按以下步骤手动配置;

生产中心的主节点上操作;

更改install.conf配置文件中参数

配置文件install.conf文件中的[参数/参数值]与下面列举的[参数/参数值]值保持一致。

cd /home/kingbase/cluster/install/kingbase/bin
vi install.conf
all_ip=(192.168.40.107 192.168.40.160 192.168.40.161 172.168.15.110 172.168.15.200 172.168.15.201)
install_with_root=1
deploy_by_sshd=1 

ssh互信配置

使用root用户登录现有集群主节点执行

cd /home/kingbase/cluster/install/kingbase/bin
sh trust_cluster.sh

ssh互信验证

ssh root@ip 
ssh kingbase@ip 

无需输入密码即ssh互信配置成功。

普通集群升级为生产中心步骤

修改升级脚本中参数

su - kingbase
cd /home/kingbase/software/
vi cluster_upgrade.sh
# 参数配置如下:
production_ips=(192.168.40.107 192.168.40.160 192.168.40.161)  # 生产中心节点,第一个IP必须是主库
disaster_ips=()  # 灾备中心节点
upgrade_mode="2"   # 2表示将production_ips中的节点升级为生产中心
# 升级软件包路径
ZIP_FILE="/home/kingbase/software/kingbase-server-V008R030C011PSI011-linux-x86_64.tar"
KINGBASE_BIN="/home/kingbase/cluster/install/kingbase/bin"   # 原集群的bin路径
enable_scmd="on"        # 是否在升级后的集群中使用sys_securecmdd服务

执行升级脚本

提前获取system用户密码,执行脚本过程中要求输入system用户密码

su - kingbase
cd /home/kingbase/software/
sh cluster_upgrade.sh

查看集群状态

集群升级结束后,在生产中心的任意节点执行以下命令查看集群状态是否正常,

repmgr cluster show
repmgr service status

说明:集群状态满足以下条件表明集群状态和服务正常

  • 集群节点状态status列显示为running
  • 生产中心Cluster_name列为production
  • 集群服务状态repmgrd列为 running
  • Pause列显示为no

检查DCS服务

集群升级结束后,检查DCS服务,在生产中心的任意节点执行以下命令,查看DCS服务状态是否正常.

su - kingbase
cd /home/kingbase/cluster/install/kingbase/
./corosync/sbin/corosync-quorumtool

说明:状态满足以下条件表明DCS服务正常

  • 集群节点状态Quorate显示为Yes;
  • Membership information显示当前中心包含仲裁节点的所有节点信息则表明仲裁服务正常

灾备中心部署

部署同城灾备中心前,需要确保生产中心集群已部署完成。

部署公共sys_securecmdd服务(可选)

如果待部署灾备中心集群的服务器上无法使用ssh,则需要在部署集群前在待部署集群的服务器上部署sys_securecmdd服务。如果ssh可用,则可以跳过该小节的部署操作。

本文ssh互信已配置,但是为了扩展ssh不能使用的场景,所以灾备部署部分使用securecmd服务。

灾备中心每个节点都操作

--解压介质
su - kingbase
cd /home/kingbase/software
mkdir -p clientinstall
tar -xvf kingbase-server-V008R030C011PSI011-linux-x86_64.tar -C ./clientinstall

--初始化并启动
su - root
cd /home/kingbase/software/clientinstall/bin
./sys_HAscmdd.sh init
./sys_HAscmdd.sh start

--验证
sys_securecmd kingbase@ip
能免密登录即正常

配置kesm_second_cluster.conf文件

登录执行生产中心集群部署操作的节点,设置灾备中心部署配置文件。也可以在灾备中心节点上操作。

kesm_second_cluster.conf文件位置:在share目录中。

注意:

  • 根据现场是否能用ssh灵活更改参数:deploy_by_sshd=0 #0是使用securecmd,1是使用ssh(默认1)
  • VIP每个中心单独配置。备中心可以不配置vip,或者配置和主中心不一样的VIP。如果要配置vip的话,如果网卡上其他IP的掩码不是24,VIP的掩码最好手动配置一下,和其他IP的掩码一样。例如:vip="192.168.40.180/20",不配置掩码,集群会默认使用24作为掩码。
su - kingbase
cd /home/kingbase/software/clientinstall/share
vi kesm_second_cluster.conf

## deploy second cluster, will select one ip as subprimary node from node_ips
## other nodes will running as standby
## suprimary will create replication relation with upstream_ip which deployed as primary in first cluster
deploy_by_sshd=0 #0是使用securecmd,1是使用ssh(默认1)
upstream_ip="192.168.40.107"
zip_package="/home/kingbase/software/kingbase-server-V008R030C011PSI011-linux-x86_64.tar"                        
install_dir="/home/kingbase/cluster/install"  
node_ips=(172.168.15.110 172.168.15.200 172.168.15.201)
cluster_name="local_disaster"
#az_name=()
center_sync_mode="async"
#center_priority=100

license_file=(license.dat)
#ssh_port="22"
#scmd_port="8890"
#dcs_port=5407
#repmgr_msg_port=10024

#vip=""
#vip_net_device=()
#vip_net_device_ip=()

准备license文件

将授权文件license.dat上传到/home/kingbase/software/clientinstall/bin目录下.

授权必须存在,不然灾备中心部署过程中会报错中止。

部署集群

cd /home/kingbase/software/clientinstall/bin
./kesm cluster create -f ../share/kesm_second_cluster.conf

查看集群状态

集群升级结束后,在灾备中心的任意节点执行以下命令查看集群状态是否正常,

repmgr cluster show
repmgr service status

说明:集群状态满足以下条件表明集群状态和服务正常

  • 集群节点状态status列显示为running
  • 生产中心Cluster_name列为local_disaster
  • 集群服务状态repmgrd列为 running
  • Pause列显示为no

检查DCS服务

集群升级结束后,检查DCS服务,在生产中心的任意节点执行以下命令,查看DCS服务状态是否正常.

su - kingbase
cd /home/kingbase/cluster/install/kingbase/
./corosync/sbin/corosync-quorumtool

说明:状态满足以下条件表明DCS服务正常

  • 集群节点状态Quorate显示为Yes;
  • Membership information显示当前中心包含仲裁节点的所有节点信息则表明仲裁服务正常;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论