部署实施
安装数据库与初始化共享存储设备
注意,如果提前已经配置has请先进行关闭服务。
数据库安装可以根据是否存在数据分为首次初始化和已存在实例目录,由于代码在新版本中添加了强制用户密码修改,处理情况如下:
代码分支 | 版本号 | 首次初始化 |
---|---|---|
V2.2.8 | ALL | 执行步骤1,2,3,4 |
V2.2.6 | ALL | 执行步骤1,2,3,4 |
V2.2.5 | V2.2.5.51之前版本 | 执行步骤1,2,3 |
V2.2.5.51以及之后版本 | 执行步骤1,2,3,4 |
对于已经存在实例目录的:
1、执行步骤1,2,无需初始化实例
2、 将实例拷贝到主节点中共享数据存储的数据库目录
如下图示例,该安装包版本为2.2_Build8,即V2.2.8。
1、准备共享存储与仲裁存储设备。
1) 准备两个lun裸存储设备并添加至两个节点。通过fdisk -l查看是否添加成功。若两个节点都出现了添加的两个设备即为成功。注意尽量保持两个节点的共享存储设备路径保持一致,如两个的仲裁设备都为/dev/sdc,否则后续配置时需要注意这点以避免配置文件出错。
2) 从步骤2)开始格式化共享存储设备,仲裁存储设备无需进行这些步骤,且只需在主节点进行,
创建物理卷:
pvcreate /dev/sdb
3) 使用物理卷创建卷组:
vgcreate vg1 /dev/sdb
4) 逻辑卷创建:
lvcreate -L 500G -n lv1 vg1;
5) 格式化为xfs格式文件系统:
mkfs.xfs -b size=4096 /dev/mapper/vg1-lv1
6) blkid查看所创建的逻辑卷的uuid。如图最下一行中间为对应UUID。如未出现此行则激活物理卷:vgchange -ay vg1。
7) 将逻辑卷挂载至需要的目录:
mount -U \${uuid} /data
由于failover时,has会自动杀掉正在使用挂载点的进程,因此需要保证,该挂载点目录只能用于存储本方案的数据库实例,不能用于其他业务用途
8) 在 /data中创建vastbase目录并修改目录权限:
mkdir -p /data/vastbase
cd /data
chown vastbase:vastbase /data/vastbase
9) 在备节点通过blkid查看创建的逻辑卷vg1-lv1是否存在。如不存在,首先尝试在备节点执行:
vgchange -ay vg1
并再次查看。如仍不存在则需重启备节点系统以刷新备节点磁盘信息。
2、数据库安装,根据操作系统版本下载对应的Vastbase数据库。在所有节点上使用vastbase_installer按照《[VASTDATA]Vastbase G100 V2.2安装指南.docx》(见附件)安装即可。
{width=“100%” }
{width=“100%” }
此处Vastbase软件安装目录应在本地存储中,注意不能安装到共享存储。
安装过程中主节点实例化数据库,安装路径选择上一步中创建的/data/vastbase目录。备节点选择不需要实例化数据库(如果数据库安装包无此选项,安装后需将备节点数据库的数据目录删除'rm-rf \$PGDATA',\$PGDATA为数据库数据目录)。
主节点也可选择不初始化数据库(不推荐,该种方式需要自行配置性能参数),安装完成后在软件安装目录下工具目录中(默认local/vastbase,下文使用\$PG_HOME表示该目录)使用vb_initdb工具进行手动初始化:
$PG_HOME/bin/vb_initdb -D /data/vastbase --nodename=vb1
其中 -D 参数为数据目录路径,--nodename为数据库实例名称,可以自由填写,后续无需用到。
{width=“100%” }
3、配置数据库:
配置访问控制文件:如果缺少下行,则向/data/vastbase/pg_hba.conf写入:
host all all 0.0.0.0/0 md5
配置license与数据库监听,在/data/vastbase/postgresql.conf追加以下两行:
license_path = 'license文件路径'
listen_addresses = '*'
{width=“100%” }
4、修改用户密码.
启动数据库,使用vbadmin用户进入数据库(密码为初始化数据库时提示的随机密码),命令如下:
vsql -r -U vbadmin -d vastbase
执行如下命令修改用户vbadmin的密码:
ALTER ROLE vbadmin IDENTIFIED BY 'new password' REPLACE 'old password';
最后关闭数据库:
vb_ctl stop -D /data/vastbase
关闭防火墙和SELINUX
为确保Vastbase G100的正常使用。使用root用户将同Vastbase G100相关的服务、协议、IP以及端口添加到Vastbase G100各主机的防火墙白名单中,或关闭防火墙。
首先禁用SELINUX,使用root用户修改/etc/selinux/config文件中的”SELINUX”值为”disabled”。
修改配置文件/etc/selinux/config,内容如下:
SELINUX=disabled
【注意】需要重启确保参数设置生效。
关闭防火墙或者开放Vastbase端口,has配置文件中包含Vastbase配置,所以将has和Vastbase统一进行描述,对应服务涉及端口如下:
服务名称 | 端口号 | 说明 |
---|---|---|
Vastbase | 5432 | 数据库服务端口 |
Vastbase | 5433(数据库服务端口+1) | 数据库内部工具使用端口 |
以数据库服务端口5432为举例,开放端口命令如下:
firewall-cmd --zone=public --permanent --add-port=5432/tcp
firewall-cmd -reload
firewall-cmd -list-ports
时间同步
配置ntp服务
使用root用户将各数据库节点的时区设置为相同时区,将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。(\$地区和\$时区为需要设置时区的信息,如Asia/Shanghai)。
cp /usr/share/zoneinfo/\$地区/时区 /etc/localtime
使用data -s命令将数据库节点的时间设置相同,举例如下:
date -s "2021-08-03 14:15:00"
hwclock --systohc #同步系统时间至硬件时间
或使用ntpdate、chronyc配置时间同步。以ntpdate为例,操作如下:
首先,如果当前网络环境不存在时间服务器,将数据库主节点设置为时间服务器节点。于172.16.101.101上执行:
vi /etc/ntp.conf #添加以下内容
#以下定义是让NTP Server和其自身保持同步,如果在/etc/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。
server 127.127.1.0
fudge 127.127.1.0 stratum 10
接着启动主节点ntp服务:
systemctl start ntpd.service
时间同步
使用root用户将数据库主节点172.16.101.101设置为时间服务器节点。在备节点172.16.101.102执行步骤如下:
时间同步:
/usr/sbin/ntpdate -u 172.16.101.101>> /var/log/ntp.log
【注意】
1、有可能出现同步失败,一般情况下本地的NTPD服务器还没有正常启动起来,需要几分钟后才开始同步。
2、启动集群前必须先进行一次时间同步
使用crontab -e编辑定时任务,定时同步系统时间,如每10分钟同步一次:
*/10 * * * * /usr/sbin/ntpdate -u 172.16.101.101 >> /var/log/ntp.log
部署has服务
安装has
使用vastbase用户进行如下操作。
在当前主流的x86_64指令集以及鲲鹏aarch64指令集的操作系统,has安装包信息如下:
包名: HAS_VastbaseG100_\${指令集名称}_\${版本}_\${datetime}.zip
安装包安装方法
直接将安装包解压到has的安装目录
mkdir -p /home/vastbase/has/bin
mkdir -p /home/vastbase/has/etc
unzip HAS_VastbaseG100_${指令集名称}_${版本}_${datetime}.zip
cp sd_has /home/vastbase/has/bin/
cp sd_hasctl /home/vastbase/has/bin/
【注意】
安装包在linux解压后已经具有可执行权限,如果其他平台已经解压安装包,需要使用命令”chmod +x 可执行文件”赋予用户(数据库用户)可执行权限,下同。
配置has
使用数据库用户进行操作,has配置文件默认放在/home/vastbase/has/etc目录,has配置文件默认名称为vastbase.yml(注意,路径和文件名称需跟vastbase-has文件中CONFIG_FILE所指定保持一致,vastbase-has文件后续配置服务会使用到)。编辑has的yml配置文件,写入仲裁存储、共享存储、Vastbase相关信息,2个数据库节点的has配置文件略有不同,需要注意修改。has配置文件参考第七章附件《vastbase.yml》。
配置VIP
使用数据库用户进行操作,在在/home/vastbase/has/bin目录下检查has_callback.sh脚本是否存在可执行权限,无则添加:
chmod +x has_callback.sh
该文件由has在节点角色切换时调用,用于绑定与释放VIP,脚本参考第七章附件《has_callback.sh》,其中附件《has_callback.sh》中VIP地址等信息以及ip与arping命令实际路径请根据实际情况填写。
has_callback.sh中执行的命令需要管理员权限,因此需要设置sudo权限(root执行visudo命令),在最后边添加行,如(vastbase为用户名,可替换成实际的用户名)
vastbase ALL=(ALL) NOPASSWD: ALL
【注意】
确认/usr/bin/sudo命令具有执行权限,如果不具备执行权限,执行如下命令赋予执行权限:
chmod u+s /usr/bin/sudo
确认/usr/sbin/ip和/usr/sbin/arping命令具有执行权限,如果不具备执行权限,执行如下命令赋予执行权限:
chmod +x
修改部分:
{width=“100%”}
配置mount与umount脚本
使用数据库用户进行操作,在/home/vastbase/has/bin目录下检查mount.sh与umount.sh是否存在可执行权限,无则添加:
chmod +x mount.sh / umount.sh
该文件由has在节点角色切换时调用,用于在主节点启动数据库时挂载数据存储设备,并在停止has服务或切换为备节点时取消挂载。脚本参考第七章附件《mount.sh》与《umount.sh》,其中附件中uuid与mount_point等信息请根据实际情况填写。同has_callback.sh脚本,需要更改sudo权限方可执行。
mount.sh修改部分:
{width=“100%”}
unmount.sh修改部分:
{width=“100%”}
配置check_arbitrator脚本
使用数据库用户进行操作,在/home/vastbase/has/bin目录下检查check_arbitrator.sh是否存在可执行权限,无则添加,需要执行如下命令给该文件执行权限:
chmod+x
该文件用于在has服务启动前检查仲裁设备读写权限。如当前用户没有相应权限则进行添加。脚本参考第七章附件《check_arbitrator.sh》。其中附件中arbitrator变量需要根据实际情况填写。同has_callback.sh脚本,需要更改sudo权限方可执行。
修改部分:
{width=“100%”}
配置check_switchover脚本
使用数据库用户进行操作,在/home/vastbase/has/bin目录下检查check_switchover.sh是否存有可执行权限,无则添加:
chmod +x check_switchover.sh
该文件由has在switchover前进行调用,用于检查是否有其他进程正在使用挂载点,如果有,则switchover失败,否则继续进行switchover。脚本参考第七章附件《check_switchover.sh》,其中附件中mount_point即挂载点路径请根据实际情况填写。同has_callback.sh脚本一样,需要设置sudo权限方可执行
修改部分:
{width=“100%”}
配置has服务
使用root用户将has加入系统服务,便于管理。
1、配置服务
配置文件/usr/lib/systemd/system/has.service,参考第七章附件《has.service》
{width=“100%”}
关键配置项含义如下:
a. 'After':指定'has'服务在'network'启动成功后启动。
b. 'Type':一般设置simple即可,如操作系统支持exec,则配置为exec。
c. 'User':has运行过程中可能会初始化或者启动数据库,这些操作不能以'root'用户执行,故指定该服务的用户跟数据库用户一致为'vastbase'。
d. 'ExecStopPost':指定'has'进程终止后执行的命令,需要使用绝对路径指定命令路径,在has服务中,用于释放VIP与取消数据存储挂载。
e. 'ExecStartPre':指定'has'进程执行前执行的命令,需要使用绝对路径指定命令路径,在has服务中,用于检测与添加仲裁设备的读写权限。
f. 'TimeoutStopSec': 设置等待关闭的超时时间
2、配置服务启动时的环境变量
配置文件/etc/sysconfig/vastbase-has,参考第七章附件《vastbase-has》。其中附件《vastbase-has》中VIP地址等信息需要与附件《has_callback.sh》保持一致,'CONFIG_FILE'即4.2.2章节中的附件《vastbase.yml》的路径。
{width=“100%”}
【注意】以服务方式启动'has'后,数据库进程也属于该服务,若使用'kill -9'杀死has进程,数据库进程也会被杀死。
3、加载has服务
systemctl daemon-reload
4、has操作命令
启动:systemctl start has
启动状态查看:systemctl status has
停止:systemctl stop has
5、has启动完毕,集群状态查看
/home/vastbase/has/bin/sd_hasctl -c <yml配置文件> list