安装部署
本章以安装一主两备数据库为例,介绍HAS V3 for VexDB高可用集群的部署流程,从而完成各搭建步骤。
说明
文档中出现的节点名、IP和集群名以实际为准,图片仅供操作参考。
安装流程
- 上传文件:根据准备安装集群的CPU和操作系统平台,下载对应的HAS集群管理工具的独立安装包和VexDB数据库安装包,将安装包上传至任意一个用于部署集群的节点上。
- 解压安装包:以root用户执行tar命令解压搭建HAS V3 集群所需的压缩包。
若用户获取的是HAS集群管理软件的独立安装包,此步骤应分别解压HAS和VexDB数据库的安装包。 - 配置XML文件:安装前需要先创建 cluster_config.xml 文件。可以参考后文给出的样例自行创建,或使用解压后的安装包中提供的 xml 模板进行修改。
此xml文件包含部署VexDB集群的服务器信息、安装路径、IP地址以及端口号等配置信息。用户需要根据实际场景配置对应的 XML 文件。 - 执行预安装脚本:以root用户执行gs_preinstall预安装脚本,为下一步安装准备好需要的环境和用户。
- 执行安装脚本:切换到预安装时创建的集群安装用户,执行gs_install脚本安装数据库集群。
- 按需配置许可文件:使用HAS独立安装包完成安装流程后,主、备数据库都将自动生成为期90天的临时License,同时也支持用户手动上传License文件并配置许可路径。
- 进行VIP配置,通过回调脚本方式在主备切换场景下自动切换VIP。has_agent在本地数据库角色发生切换为主库时,可以通过回调脚本或配置参数的形式,绑定VIP地址;当本节点数据库角色切换为备机时,主动解除VIP地址绑定。
上传文件
上传安装HAS V3 for VexDB 集群所需的软件包至集群的任意一个节点上,此处以上传至/opt/路径下为例。所需的安装软件包如下:
名称格式为HAS_{版本号}_{平台信息}_{datetime}.tar.gz的包属于HAS集群管理工具的独立安装包。
解压安装包
用户可根据获取的安装包搭建HAS V3 的VexDB高可用集群:
解压VexDB安装包
- 切换至安装包目录。
cd /opt
- 使用root用户解压VexDB的安装包至/opt/software/路径下,得到VexDB-installer文件夹后再次解压文件夹内的压缩包(以下命令中的安装包名称以实际为准)。
mkdir /opt/software tar -zxvf VexDB-installer-xxx-xx-xx.tar.gz -C /opt/software tar -zxvf VexDB-installer/VexDB-2.2-Buildxxx-xxx-xx.tar.gz -C /opt/software
解压HAS独立安装包
- 使用root用户对HAS安装包及其解压后得到的包进行解压,得到om和cm压缩包。(本步骤以centos7安装包为例)
tar -zxvf HAS_3@rxxx_centos7_x86-64_20230111.tar.gz tar -zxvf VexDB-HAS-3-centos7.6_x86_64bit.tar.gz
- 解压om压缩包,会在当前目录下生成script子目录。
tar -zxvf VexDB-HAS-3-xxx-om.tar.gz
配置XML文件
根据部署需求配置cluster_config.xml文件。可以参考下文给出的示例自行创建xml,也可以使用上一步解压安装包后得到的模板进行修改。
- 配置文件的模板位于解压目录下的/script/gspylib/etc/conf/cluster_config_template.xml,如按本文示例步骤完成解压,即为/opt/software/script/gspylib/etc/conf/cluster_config_template.xml
- xml配置文件中包含了VexDB集群的服务器信息、安装路径、IP地址以及端口号等部署信息。
- 创建xml文件:
vi cluster_config.xml
- 填写以下配置内容并保存。下文样例以一主两备部署方案为例。下文样例仅供参考,每部分内容都包含说明信息,详细参数说明详见配置说明一节,xml文件中各主机的名称与IP映射应配置正确。
<?xml version="1.0" encoding="UTF-8"?> <ROOT> <!--整体信息 --> <CLUSTER> <PARAM name="clusterName" value="Cluster_template" /> <PARAM name="nodeNames" value="VexDB1,VexDB2,VexDB3" /> <PARAM name="gaussdbAppPath" value="/opt/VexDB/install/app" /> <PARAM name="gaussdbLogPath" value="/var/log/omm" /> <PARAM name="tmpMppdbPath" value="/opt/vexdb/tmp"/> <PARAM name="gaussdbToolPath" value="/opt/vexdb/install/om" /> <PARAM name="corePath" value="/opt/vexdb/corefile"/> <PARAM name="backIp1s" value="172.16.105.54,172.16.105.58,172.16.105.60"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- node1上的节点部署信息 --> <DEVICE sn="VexDB1"> <PARAM name="name" value="VexDB1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="172.16.105.54"/> <PARAM name="sshIp1" value="172.16.105.54"/> <!--CM节点部署信息--> <PARAM name="cmsNum" value="1"/> <PARAM name="cmServerPortBase" value="15000"/> <PARAM name="cmServerListenIp1" value="172.16.105.54,172.16.105.58,172.16.105.60"/> <PARAM name="cmServerHaIp1" value="172.16.105.54,172.16.105.58,172.16.105.60"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="VexDB1,VexDB2,VexDB3"/> <PARAM name="cmDir" value="/opt/vexdb/data/cmserver"/> <!--dn--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/opt/vexdb/install/data/dn,vexdb2,/opt/vexdb/install/data/dn,vexdb3,/opt/vexdb/install/data/dn"/> <PARAM name="dataNode1_syncNum" value="1"/> </DEVICE> <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="VexDB2"> <PARAM name="name" value="VexDB2"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="172.16.105.58"/> <PARAM name="sshIp1" value="172.16.105.58"/> <!-- cm --> <PARAM name="cmServerPortStandby" value="15000"/> <PARAM name="cmDir" value="/opt/VexDB/data/cmserver"/> </DEVICE> <!-- node3上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="VexDB3"> <PARAM name="name" value="VexDB3"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="172.16.105.60"/> <PARAM name="sshIp1" value="172.16.105.60"/> <!-- cm --> <PARAM name="cmServerPortStandby" value="15000"/> <PARAM name="cmDir" value="/opt/vexdb/data/cmserver"/> </DEVICE> </DEVICELIST> </ROOT>
执行预安装脚本
执行预安装脚本gs_preinstall可以协助自动完成如下的安装环境准备工作:
- 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。
- 自动将XML配置文件、安装包拷贝到其他主机的相同目录下,安装用户和用户组不存在时,自动创建安装用户以及用户组。
- 读取XML配置文件中的目录信息并创建,将目录权限授予安装用户。
操作步骤
- 用户需要检查上层目录权限,保证安装用户对安装包和配置文件目录读写执行的权限。
- 以root用户进入script工具脚本目录。
cd /opt/software/script
- 使用root用户执行执行gs_preinstall预安装脚本,在执行过程中,用户根据提示选择是否创建互信,并输入操作系统root用户和vexdb用户的密码。
./gs_preinstall -U vexdb -G dbgrp -X ../cluster_config.xml --sep-env-file=/home/vexdb/.vexdb
参数名 说明 -U 为数据库管理员(也是运行VexDB的操作系统用户),-U指定的操作系统用户名系统用户可以在预安装时自动指定创建。
注意:
建议安装数据库的操作系统用户名中包含的字母均使用小写。
否则在执行SQL时,指定含有大写字母的操作系统同名数据库初始化用户时,需要被双引号包裹才能被识别。-G 指定操作系统用户的群组名称,可以在预安装时自动指定创建。。 -X 指定的是XML配置文件的路径。 -sep-env-file 指定的是环境变量文件。若不指定此配置项,则环境变量信息将写入.bashrc文件中,在部署多套集群时可能造成冲突。 - 预安装过程示例如下:
Parsing the configuration file. Successfully parsed the configuration file. Installing the tools on the local node. Successfully installed the tools on the local node. Are you sure you want to create trust for root (yes/no)?yes Please enter password for root Password: Successfully created SSH trust for the root permission user. Setting host ip env Successfully set host ip env. Distributing package. Begin to distribute package to tool path. Successfully distribute package to tool path. Begin to distribute package to package path. Successfully distribute package to package path. Successfully distributed package. Are you sure you want to create the user[vexdb] and create trust for it (yes/no)? yes Preparing SSH service. Successfully prepared SSH service. Installing the tools in the cluster. Successfully installed the tools in the cluster. Checking hostname mapping. Successfully checked hostname mapping. Creating SSH trust for [vexdb] user. Please enter password for current user[vexdb]. Password: Checking network information. All nodes in the network are Normal. Successfully checked network information. Creating SSH trust. Creating the local key file. Successfully created the local key files. Appending local ID to authorized_keys. Successfully appended local ID to authorized_keys. Updating the known_hosts file. Successfully updated the known_hosts file. Appending authorized_key on the remote node. Successfully appended authorized_key on all remote node. Checking common authentication file content. Successfully checked common authentication content. Distributing SSH trust file to all node. Distributing trust keys file to all node successfully. Successfully distributed SSH trust file to all node. Verifying SSH trust on all hosts. Successfully verified SSH trust on all hosts. Successfully created SSH trust. Successfully created SSH trust for [vexdb] user. Checking OS software. Successfully check os software. Checking OS version. Successfully checked OS version. Creating cluster's path. Successfully created cluster's path. Set and check OS parameter. Setting OS parameters. Successfully set OS parameters. Warning: Installation environment contains some warning messages. Please get more details by "/opt/software/script/gs_checkos -i A -h VexDB1,VexDB2,VexDB3 --detail". Set and check OS parameter completed. Preparing CRON service. Successfully prepared CRON service. Setting user environmental variables. Successfully set user environmental variables. Setting the dynamic link library. Successfully set the dynamic link library. Setting Core file Successfully set core path. Setting pssh path Successfully set pssh path. Setting Cgroup. Successfully set Cgroup. Set ARM Optimization. No need to set ARM Optimization. Fixing server package owner. Setting finish flag. Successfully set finish flag. Preinstallation succeeded.
执行安装脚本
- 运行安装脚本。切换到vexdb用户(该用户为预安装脚本gs_preinstall中-U参数指定的用户),并执行source命令使环境变量生效。
su - vexdb source ~/.VexDB
- 执行gs_install安装脚本,进行集群部署安装,-X指定的是XML配置文件的路径,与预安装时指定的脚本一致。
gs_install -X /opt/software/cluster_config.xml --dn-guc="max_process_memory=10GB"
参数名 说明 -X 指定XML配置文件的路径。 -dn-guc 指定初始化数据库GUC参数取值。(可选)。
max_process_memory:保证数据库正常启动,max_process_memory参数必须配置为合适大小。OM工具安装完成默认数据库内核至少需要7G内存;也可以通过修改其他内存相关GUC参数,以减小内核所需大小。
- 输入数据库密码,在脚本执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。设置的密码要符合复杂度要求:
- 最少包含8个字符。
- 不能和用户名、当前密码(ALTER)、或当前密码反序相同。
- 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+|{};:,<.>/?)四类字符中的三类字符。
- 安装过程如下所示,安装过程中会生成ssl证书,证书存放路径为${XML配置的程序安装目录}/share/sslcert/om。
Parsing the configuration file. Check preinstall on every node. Successfully checked preinstall on every node. Creating the backup directory. Successfully created the backup directory. begin deploy.. Installing the cluster. begin prepare Install Cluster.. Checking the installation environment on all nodes. begin install Cluster.. Installing applications on all nodes. Successfully installed APP. begin init Instance.. encrypt ciper and rand files for database. Please enter password for database: Please repeat for database: begin to create CA cert files The sslcert will be generated in /opt/gaussdb/cluster/app/share/sslcert/om Cluster installation is completed. Configuring. Deleting instances from all nodes. Successfully deleted instances from all nodes. Checking node configuration on all nodes. Initializing instances on all nodes. Updating instance configuration on all nodes. Check consistence of memCheck and coresCheck on DN nodes. Successful check consistence of memCheck and coresCheck on all nodes. Configuring pg_hba on all nodes. Configuration is completed. Successfully started cluster. Successfully installed application.
说明
root用户互信可能会存在安全隐患,因此建议用户在执行完安装后,立即删除各主机上root用户的互信:rm -rf ~/.ssh
- 安装完成后,使用如下命令查询集群状态
has_ctl query -Cvidp
配置许可文件
使用HAS独立安装包完成安装流程后,主、备数据库都将自动生成为期90天的临时License,同时也支持用户手动上传License文件并配置许可路径。
如需使用正式的有效许可文件,可参考以下步骤为集群指定license文件。
步骤1: 上传许可文件至集群的每个节点,保证各节点中许可文件的绝对路径相同。
步骤2: 在任意节点上执行vb_guc命令,-N all表示为集群的所有节点设置许可。
vb_guc set -N all -I all -c "license_path = '/home/vexdb/license'"
- 上述命令中,license_path为许可文件的绝对路径,请根据实际情况替换引号内的路径。
- license_path在集群的每个节点中的路径应一致。
步骤3: 重启集群,使配置生效。在任意节点执行如下重启命令:
has_ctl stop && has_ctl start